From cf323306628d12947be39216d69748ac9f16d7ff Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 15 Nov 2022 15:00:44 +0100 Subject: [PATCH 01/36] Rename 'Test Cluster' to 'Unit Testing' to unstutter class and item naming (#23495) * Renamed Test Cluster to just test, to unstutter names. * zap regen * make all clusters compile * Make tests compile * Restyle * Fix expected JNI filename codegen * Fix darwin code renaming * Update cirque test for naming (no cluster suffix) * More updates for python: TestCluster to Clusters.Test * Correct cirque test to expect cluster name to be Test * Start renaming to Unit Testing for a more complete cluster name * more updates to maning for the test cluster to unit testing * make define consistent * Restyled by clang-format * Restyled by autopep8 * Fix up naming in the test cluster implementation * Restyled by clang-format * Fix darwin build * Fix cirque * Fix cirque * Fix cirque * Fix repl examples * Restyled by autopep8 * Fix android output files * Fix cirque * Another cirque fix * update ipynb code for Objects.UnitTesting * Replace more unusual auto-sed for cluster_objects * Replace comment in ipynmb * Restyled by autopep8 * Fix expected unit test cluster name. hoping this is the last cirque fix Co-authored-by: Restyled.io --- .../guides/python_chip_controller_building.md | 8 +- .../repl/Matter_Basic_Interactions.ipynb | 400 +- docs/guides/repl/Matter_REPL_Intro.ipynb | 4 +- .../all-clusters-app.matter | 4 +- .../all-clusters-common/all-clusters-app.zap | 8 +- .../all-clusters-minimal-app.matter | 4 +- .../all-clusters-minimal-app.zap | 8 +- .../thermostat-common/thermostat.zap | 8 +- examples/tv-app/tv-common/tv-app.zap | 8 +- scripts/idl/test_xml_parser.py | 8 +- .../test-cluster-server.cpp | 52 +- src/app/tests/TestBufferedReadCallback.cpp | 90 +- src/app/tests/TestClusterStateCache.cpp | 46 +- src/app/tests/TestDataModelSerialization.cpp | 150 +- src/app/tests/TestWriteInteraction.cpp | 10 +- src/app/tests/suites/TestCluster.yaml | 2 +- .../tests/suites/TestClusterComplexTypes.yaml | 2 +- .../tests/suites/TestClusterMultiFabric.yaml | 18 +- src/app/tests/suites/TestConfigVariables.yaml | 2 +- src/app/tests/suites/TestConstraints.yaml | 2 +- src/app/tests/suites/TestDelayCommands.yaml | 2 +- src/app/tests/suites/TestEvents.yaml | 2 +- src/app/tests/suites/TestLogCommands.yaml | 2 +- src/app/tests/suites/TestSaveAs.yaml | 2 +- .../zcl/data-model/chip/test-cluster.xml | 4 +- .../zcl/zcl-with-test-extensions.json | 2 +- src/app/zap-templates/zcl/zcl.json | 2 +- src/controller/data_model/BUILD.gn | 4 +- .../data_model/controller-clusters.matter | 4 +- .../data_model/controller-clusters.zap | 4 +- .../CHIPAttributeTLVValueDecoder.cpp | 62 +- .../java/zap-generated/CHIPCallbackTypes.h | 378 +- .../zap-generated/CHIPClustersWrite-JNI.cpp | 478 +-- .../CHIPEventTLVValueDecoder.cpp | 30 +- .../zap-generated/CHIPInvokeCallbacks.cpp | 148 +- .../java/zap-generated/CHIPInvokeCallbacks.h | 78 +- .../java/zap-generated/CHIPReadCallbacks.cpp | 566 +-- .../java/zap-generated/CHIPReadCallbacks.h | 604 +-- .../chip/devicecontroller/ChipClusters.java | 66 +- .../devicecontroller/ChipEventStructs.java | 20 +- .../chip/devicecontroller/ChipIdLookup.java | 2 +- .../chip/devicecontroller/ChipStructs.java | 74 +- .../devicecontroller/ClusterInfoMapping.java | 396 +- .../devicecontroller/ClusterReadMapping.java | 1114 ++--- .../devicecontroller/ClusterWriteMapping.java | 1262 +++--- src/controller/python/chip/ChipDeviceCtrl.py | 2 +- .../python/chip/clusters/Attribute.py | 4 +- .../python/chip/clusters/CHIPClusters.py | 8 +- .../python/chip/clusters/Objects.py | 242 +- .../python/test/test_scripts/base.py | 56 +- .../test/test_scripts/cluster_objects.py | 120 +- .../test_generated_clusterobjects.py | 32 +- src/controller/tests/TestEventCaching.cpp | 61 +- src/controller/tests/TestEventChunking.cpp | 19 +- src/controller/tests/TestReadChunking.cpp | 29 +- .../tests/TestServerCommandDispatch.cpp | 26 +- src/controller/tests/TestWriteChunking.cpp | 44 +- .../tests/data_model/TestCommands.cpp | 30 +- src/controller/tests/data_model/TestRead.cpp | 580 +-- src/controller/tests/data_model/TestWrite.cpp | 45 +- .../MTRAttributeTLVValueDecoder.mm | 32 +- .../CHIP/zap-generated/MTRBaseClusters.h | 279 +- .../CHIP/zap-generated/MTRBaseClusters.mm | 1938 ++++----- .../zap-generated/MTRBaseClusters_internal.h | 2 +- .../CHIP/zap-generated/MTRCallbackBridge.mm | 278 +- .../MTRCallbackBridge_internal.h | 778 ++-- .../CHIP/zap-generated/MTRClusterConstants.h | 254 +- .../CHIP/zap-generated/MTRClusters.h | 175 +- .../CHIP/zap-generated/MTRClusters.mm | 1024 ++--- .../CHIP/zap-generated/MTRClusters_internal.h | 2 +- .../zap-generated/MTRCommandPayloadsObjc.h | 90 +- .../zap-generated/MTRCommandPayloadsObjc.mm | 146 +- .../zap-generated/MTREventTLVValueDecoder.mm | 16 +- .../CHIP/zap-generated/MTRStructsObjc.h | 32 +- .../CHIP/zap-generated/MTRStructsObjc.mm | 44 +- .../Framework/CHIPTests/MTRDeviceTests.m | 2 +- src/lib/support/tests/TestTlvToJson.cpp | 6 +- .../zap-generated/IMClusterCommandHandler.cpp | 194 +- .../zap-generated/callback-stub.cpp | 16 +- .../zap-generated/endpoint_config.h | 12 +- .../zap-generated/gen_config.h | 10 +- .../zap-generated/IMClusterCommandHandler.cpp | 120 +- .../zap-generated/callback-stub.cpp | 16 +- .../zap-generated/endpoint_config.h | 12 +- .../zap-generated/gen_config.h | 10 +- .../app-common/zap-generated/attribute-id.h | 2 +- .../zap-generated/attributes/Accessors.cpp | 472 +-- .../zap-generated/attributes/Accessors.h | 54 +- .../app-common/zap-generated/callback.h | 230 +- .../zap-generated/cluster-enums-check.h | 4 +- .../app-common/zap-generated/cluster-enums.h | 4 +- .../app-common/zap-generated/cluster-id.h | 4 +- .../zap-generated/cluster-objects.cpp | 10 +- .../zap-generated/cluster-objects.h | 458 +- .../app-common/zap-generated/command-id.h | 2 +- .../app-common/zap-generated/ids/Attributes.h | 4 +- .../app-common/zap-generated/ids/Clusters.h | 4 +- .../app-common/zap-generated/ids/Commands.h | 4 +- .../app-common/zap-generated/ids/Events.h | 4 +- .../app-common/zap-generated/print-cluster.h | 8 +- .../zap-generated/cluster/Commands.h | 248 +- .../cluster/ComplexArgumentParser.cpp | 28 +- .../cluster/ComplexArgumentParser.h | 28 +- .../cluster/logging/DataModelLogger.cpp | 308 +- .../cluster/logging/DataModelLogger.h | 42 +- .../chip-tool/zap-generated/test/Commands.h | 2100 +++++----- .../zap-generated/CHIPClientCallbacks.h | 24 +- .../zap-generated/CHIPClusters.h | 8 +- .../zap-generated/callback-stub.cpp | 16 +- .../zap-generated/endpoint_config.h | 2 +- .../zap-generated/gen_config.h | 8 +- .../zap-generated/cluster/Commands.h | 3682 ++++++++--------- .../zap-generated/test/Commands.h | 1960 ++++----- 113 files changed, 11347 insertions(+), 11297 deletions(-) diff --git a/docs/guides/python_chip_controller_building.md b/docs/guides/python_chip_controller_building.md index 693dacf3732055..7c1ac47e0c9f86 100644 --- a/docs/guides/python_chip_controller_building.md +++ b/docs/guides/python_chip_controller_building.md @@ -624,10 +624,10 @@ ZCL cluster commands. ```python # devCtrl.WriteAttribute(, [(, Clusters..Attributes.(value=))]) # e.g. -await devCtrl.WriteAttribute(1, [(1, Clusters.TestCluster.Attributes.Int8u(value=1))]) -await devCtrl.WriteAttribute(1, [(1, Clusters.TestCluster.Attributes.Boolean(value=True))]) -await devCtrl.WriteAttribute(1, [(1, Clusters.TestCluster.Attributes.OctetString(value=b'123123\x00'))]) -await devCtrl.WriteAttribute(1, [(1, Clusters.TestCluster.Attributes.CharString(value='233233'))]) +await devCtrl.WriteAttribute(1, [(1, Clusters.UnitTesting.Attributes.Int8u(value=1))]) +await devCtrl.WriteAttribute(1, [(1, Clusters.UnitTesting.Attributes.Boolean(value=True))]) +await devCtrl.WriteAttribute(1, [(1, Clusters.UnitTesting.Attributes.OctetString(value=b'123123\x00'))]) +await devCtrl.WriteAttribute(1, [(1, Clusters.UnitTesting.Attributes.CharString(value='233233'))]) ``` ### `zclsubscribe ` diff --git a/docs/guides/repl/Matter_Basic_Interactions.ipynb b/docs/guides/repl/Matter_Basic_Interactions.ipynb index fe2e36630e4a3c..0693f197cdc8b9 100644 --- a/docs/guides/repl/Matter_Basic_Interactions.ipynb +++ b/docs/guides/repl/Matter_Basic_Interactions.ipynb @@ -98,7 +98,7 @@ "\n", "### Namespaces\n", "\n", - "Objects in clusters are organized into namespaces. All clusters can be found under the `Clusters` namespace, with the appropriate cluster in upper camel case within that. (e.g `Clusters.TestCluster`).\n", + "Objects in clusters are organized into namespaces. All clusters can be found under the `Clusters` namespace, with the appropriate cluster in upper camel case within that. (e.g `Clusters.UnitTesting`).\n", "\n", "Within that, `Commands`, `Structs` and `Attributes` delimit the respective types in the cluster.\n", "\n", @@ -146,10 +146,10 @@ } ], "source": [ - "v = Clusters.TestCluster.Structs.SimpleStruct()\n", + "v = Clusters.UnitTesting.Structs.SimpleStruct()\n", "v.a = 20\n", "v.b = True\n", - "v.c = Clusters.TestCluster.Enums.SimpleEnum.kValueA\n", + "v.c = Clusters.UnitTesting.Enums.SimpleEnum.kValueA\n", "v.d = b'1234'\n", "v.e = 30\n", "v.g = 23.234\n", @@ -194,7 +194,7 @@ } ], "source": [ - "Clusters.TestCluster.Commands.TestAddArguments()" + "Clusters.UnitTesting.Commands.TestAddArguments()" ] }, { @@ -214,7 +214,7 @@ { "data": { "text/html": [ - "
╭──────── <class 'chip.clusters.Objects.TestCluster.Commands.TestAddArguments'> ─────────╮\n",
+       "
╭──────── <class 'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'> ─────────╮\n",
        " def TestCluster.Commands.TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0) -> None: \n",
        "                                                                                        \n",
        " TestAddArguments(arg1: 'uint' = 0, arg2: 'uint' = 0)                                   \n",
@@ -246,7 +246,7 @@
        "
\n" ], "text/plain": [ - "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Commands.TestAddArguments'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m╭─\u001b[0m\u001b[34m─────── \u001b[0m\u001b[1;34m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Commands.TestAddArguments'\u001b[0m\u001b[1;34m>\u001b[0m\u001b[34m ────────\u001b[0m\u001b[34m─╮\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[3;96mdef \u001b[0m\u001b[1;31mTestCluster.Commands.TestAddArguments\u001b[0m\u001b[1m(\u001b[0marg1: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m, arg2: \u001b[32m'uint'\u001b[0m = \u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m -> \u001b[3;35mNone\u001b[0m: \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", "\u001b[34m│\u001b[0m \u001b[1;35mTestAddArguments\u001b[0m\u001b[1;36m(\u001b[0m\u001b[36marg1: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[36m, arg2: \u001b[0m\u001b[32m'uint'\u001b[0m\u001b[36m = \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;36m)\u001b[0m \u001b[34m│\u001b[0m\n", @@ -282,7 +282,7 @@ } ], "source": [ - "matterhelp(Clusters.TestCluster.Commands.TestAddArguments)" + "matterhelp(Clusters.UnitTesting.Commands.TestAddArguments)" ] }, { @@ -346,7 +346,7 @@ } ], "source": [ - "a = Clusters.TestCluster.Structs.NullablesAndOptionalsStruct()\n", + "a = Clusters.UnitTesting.Structs.NullablesAndOptionalsStruct()\n", "a.nullableInt = Clusters.Types.NullValue\n", "a" ] @@ -436,7 +436,7 @@ } ], "source": [ - "Clusters.TestCluster.Structs.SimpleStruct()" + "Clusters.UnitTesting.Structs.SimpleStruct()" ] }, { @@ -864,7 +864,7 @@ } ], "source": [ - "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestListInt8UReverseRequest([1, 3, 5, 7]))" + "await devCtrl.SendCommand(2, 1, Clusters.UnitTesting.Commands.TestListInt8UReverseRequest([1, 3, 5, 7]))" ] }, { @@ -899,8 +899,8 @@ "
\n",
        "{\n",
        "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.TestCluster'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n",
+       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
        "│   │   }\n",
        "}\n",
        "}\n",
@@ -910,8 +910,8 @@
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[1m}\u001b[0m\n"
@@ -922,7 +922,7 @@
     }
    ],
    "source": [
-    "a = await devCtrl.ReadAttribute(2, [Clusters.TestCluster.Attributes.Int16u])\n",
+    "a = await devCtrl.ReadAttribute(2, [Clusters.UnitTesting.Attributes.Int16u])\n",
     "a"
    ]
   },
@@ -937,14 +937,14 @@
       "text/html": [
        "
\n",
        "{\n",
-       "<class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n",
+       "<class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
        "}\n",
        "
\n" ], "text/plain": [ "\n", "\u001b[1m{\u001b[0m\n", - "\u001b[2;32m│ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n", + "\u001b[2;32m│ \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n", "\u001b[1m}\u001b[0m\n" ] }, @@ -953,7 +953,7 @@ } ], "source": [ - "a[1][Clusters.TestCluster]" + "a[1][Clusters.UnitTesting]" ] }, { @@ -977,7 +977,7 @@ } ], "source": [ - "a[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.Int16u]" + "a[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.Int16u]" ] }, { @@ -1002,9 +1002,9 @@ "
\n",
        "{\n",
        "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.TestCluster'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Boolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0\n",
+       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Boolean'>: False,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0\n",
        "│   │   }\n",
        "}\n",
        "}\n",
@@ -1014,9 +1014,9 @@
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[1m}\u001b[0m\n"
@@ -1027,7 +1027,7 @@
     }
    ],
    "source": [
-    "await devCtrl.ReadAttribute(2, [Clusters.TestCluster.Attributes.Int16u, Clusters.TestCluster.Attributes.Boolean])"
+    "await devCtrl.ReadAttribute(2, [Clusters.UnitTesting.Attributes.Int16u, Clusters.UnitTesting.Attributes.Boolean])"
    ]
   },
   {
@@ -1305,8 +1305,8 @@
      "text": [
       "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 0, Attribute = , got IM Error: InteractionModelError: UnsupportedRead (0x8f)\n",
       "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: UnsupportedRead (0x8f)\n",
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: InvalidDataType (0x8d)\n",
-      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: Failure (0x1)\n"
+      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: InvalidDataType (0x8d)\n",
+      "2022-01-25 16:58:32 johnsj-macbookpro1.roam.corp.google.com root[27801] ERROR For path: Endpoint = 1, Attribute = , got IM Error: InteractionModelError: Failure (0x1)\n"
      ]
     },
     {
@@ -2122,46 +2122,46 @@
        "│   │   <class 'chip.clusters.Objects.AccountLogin'>: {\n",
        "│   │   │   <class 'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'>: 1\n",
        "│   │   },\n",
-       "│   │   <class 'chip.clusters.Objects.TestCluster'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Boolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap32'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Bitmap64'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int8u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int24u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int32u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int40u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int48u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int56u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int64u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int8s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int16s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int24s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int32s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int40s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int48s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int56s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int64s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Enum8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Enum16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.FloatSingle'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.FloatDouble'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.OctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListInt8u'>: [\n",
+       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Boolean'>: False,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap8'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap16'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap32'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Bitmap64'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int8u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int24u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int32u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int40u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int48u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int56u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int64u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int8s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int24s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int32s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int40s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int48s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int56s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int64s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Enum8'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Enum16'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.FloatSingle'>: 0.0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.FloatDouble'>: 0.0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.OctetString'>: b'',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListInt8u'>: [\n",
        "│   │   │   │   0,\n",
        "│   │   │   │   0,\n",
        "│   │   │   │   0,\n",
        "│   │   │   │   0\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListOctetString'>: [\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListOctetString'>: [\n",
        "│   │   │   │   b'',\n",
        "│   │   │   │   b'',\n",
        "│   │   │   │   b'',\n",
        "│   │   │   │   b''\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListStructOctetString'>: [\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListStructOctetString'>: [\n",
        "│   │   │   │   TestListStructOctet(\n",
        "│   │   │   │   │   fabricIndex=0,\n",
        "│   │   │   │   │   operationalCert=b''\n",
@@ -2179,13 +2179,13 @@
        "│   │   │   │   │   operationalCert=b''\n",
        "│   │   │   │   )\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.LongOctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.CharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.LongCharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.EpochUs'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.EpochS'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.VendorId'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListNullablesAndOptionalsStruct'>: [\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.LongOctetString'>: b'',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.CharString'>: '',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.LongCharString'>: '',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EpochUs'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EpochS'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.VendorId'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListNullablesAndOptionalsStruct'>: [\n",
        "│   │   │   │   NullablesAndOptionalsStruct(\n",
        "│   │   │   │   │   nullableInt=Null,\n",
        "│   │   │   │   │   optionalInt=None,\n",
@@ -2201,8 +2201,8 @@
        "│   │   │   │   │   nullableOptionalList=None\n",
        "│   │   │   │   )\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.EnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.StructAttr'>: SimpleStruct(\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.EnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.StructAttr'>: SimpleStruct(\n",
        "│   │   │   │   a=0,\n",
        "│   │   │   │   b=False,\n",
        "│   │   │   │   c=<SimpleEnum.kUnspecified: 0>,\n",
@@ -2212,64 +2212,64 @@
        "│   │   │   │   g=0.0,\n",
        "│   │   │   │   h=0.0\n",
        "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8u'>: 70,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8s'>: -20,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16u'>: 200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16s'>: -100,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListLongOctetString'>: [\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8u'>: 70,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8s'>: -20,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16u'>: 200,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16s'>: -100,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListLongOctetString'>: [\n",
        "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
        "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
        "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',\n",
        "│   │   │   │   b'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ListFabricScoped'>: [\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ListFabricScoped'>: [\n",
        "│   │   │   │   TestFabricScoped(\n",
        "│   │   │   │   │   fabricIndex=1\n",
        "│   │   │   │   )\n",
        "│   │   │   ],\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.TimedWriteBoolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.GeneralErrorBoolean'>: ValueDecodeFailure(\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.TimedWriteBoolean'>: False,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.GeneralErrorBoolean'>: ValueDecodeFailure(\n",
        "│   │   │   │   TLVValue=None,\n",
        "│   │   │   │   Reason=InteractionModelError(<Status.InvalidDataType: 141>)\n",
        "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ClusterErrorBoolean'>: ValueDecodeFailure(\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ClusterErrorBoolean'>: ValueDecodeFailure(\n",
        "│   │   │   │   TLVValue=None,\n",
        "│   │   │   │   Reason=InteractionModelError(<Status.Failure: 1>)\n",
        "│   │   │   ),\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBoolean'>: False,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap32'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap64'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt8u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt16u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt24u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt32u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt40u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt48u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt56u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt64u'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt8s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt16s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt24s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt32s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt40s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt48s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt56s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableInt64s'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnum8'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnum16'>: 0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableFloatSingle'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableFloatDouble'>: 0.0,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableOctetString'>: b'',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableCharString'>: '',\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableEnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableStruct'>: Null,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8u'>: 70,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8s'>: -20,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16u'>: 200,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16s'>: -100,\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.ClusterRevision'>: 1\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBoolean'>: False,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap8'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap16'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap32'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap64'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64u'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64s'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum8'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum16'>: 0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatSingle'>: 0.0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatDouble'>: 0.0,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableOctetString'>: b'',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableCharString'>: '',\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableEnumAttr'>: <SimpleEnum.kUnspecified: 0>,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableStruct'>: Null,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8u'>: 70,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8s'>: -20,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16u'>: 200,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16s'>: -100,\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.ClusterRevision'>: 1\n",
        "│   │   },\n",
        "│   │   <class 'chip.clusters.Objects.ElectricalMeasurement'>: {\n",
        "│   │   │   <class 'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'>: 0,\n",
@@ -3138,46 +3138,46 @@
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.AccountLogin.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Bitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Enum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Enum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.FloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.FloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.OctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Boolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Bitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Enum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Enum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.FloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.FloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.OctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;36m0\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb''\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListStructOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListStructOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestListStructOctet\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
@@ -3195,13 +3195,13 @@
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moperationalCert\u001b[0m=\u001b[32mb\u001b[0m\u001b[32m''\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.LongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.CharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.LongCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EpochUs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EpochS'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListNullablesAndOptionalsStruct'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.LongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.CharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.LongCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EpochUs'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EpochS'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.VendorId'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListNullablesAndOptionalsStruct'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mNullablesAndOptionalsStruct\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableInt\u001b[0m=\u001b[35mNull\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33moptionalInt\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
@@ -3217,8 +3217,8 @@
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mnullableOptionalList\u001b[0m=\u001b[3;35mNone\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.EnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.StructAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.EnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.StructAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mSimpleStruct\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33ma\u001b[0m=\u001b[1;36m0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mb\u001b[0m=\u001b[3;91mFalse\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mc\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
@@ -3228,64 +3228,64 @@
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mg\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mh\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1;36m.0\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.RangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListLongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.RangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListLongOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[32mb'0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ListFabricScoped'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ListFabricScoped'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m[\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1;35mTestFabricScoped\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   │   \u001b[0m\u001b[33mfabricIndex\u001b[0m=\u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.TimedWriteBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.GeneralErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.TimedWriteBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.GeneralErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.InvalidDataType:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m141\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ClusterErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ClusterErrorBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;35mValueDecodeFailure\u001b[0m\u001b[1m(\u001b[0m\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mTLVValue\u001b[0m=\u001b[3;35mNone\u001b[0m,\n",
        "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33mReason\u001b[0m=\u001b[1;35mInteractionModelError\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mStatus.Failure:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m1\u001b[0m\u001b[1m>\u001b[0m\u001b[1m)\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m)\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableBitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableInt64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableFloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableFloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableEnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableStruct'\u001b[0m\u001b[1m>\u001b[0m: Null,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.NullableRangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBoolean'\u001b[0m\u001b[1m>\u001b[0m: \u001b[3;91mFalse\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap32'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableBitmap64'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt24s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt32s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt40s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt48s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt56s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableInt64s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum8'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnum16'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatSingle'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableFloatDouble'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0.0\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableOctetString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32mb''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableCharString'\u001b[0m\u001b[1m>\u001b[0m: \u001b[32m''\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableEnumAttr'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m<\u001b[0m\u001b[1;95mSimpleEnum.kUnspecified:\u001b[0m\u001b[39m \u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m>\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableStruct'\u001b[0m\u001b[1m>\u001b[0m: Null,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m70\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt8s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-20\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m200\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.NullableRangeRestrictedInt16s'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m-100\u001b[0m,\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.ClusterRevision'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m1\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m,\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.ElectricalMeasurement.Attributes.MeasurementType'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m0\u001b[0m,\n",
@@ -3597,7 +3597,7 @@
    ],
    "source": [
     "# Force an event to get emitted.\n",
-    "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestEmitTestEventRequest())\n",
+    "await devCtrl.SendCommand(2, 1, Clusters.UnitTesting.Commands.TestEmitTestEventRequest())\n",
     "\n",
     "await devCtrl.ReadEvent(2, [('*')])"
    ]
@@ -4075,7 +4075,7 @@
     }
    ],
    "source": [
-    "await devCtrl.SendCommand(2, 1, Clusters.TestCluster.Commands.TestEmitTestEventRequest())\n",
+    "await devCtrl.SendCommand(2, 1, Clusters.UnitTesting.Commands.TestEmitTestEventRequest())\n",
     "time.sleep(3)"
    ]
   },
@@ -4140,7 +4140,7 @@
     }
    ],
    "source": [
-    "await devCtrl.WriteAttribute(2, [ (1, Clusters.TestCluster.Attributes.Int16u(2)) ])"
+    "await devCtrl.WriteAttribute(2, [ (1, Clusters.UnitTesting.Attributes.Int16u(2)) ])"
    ]
   },
   {
@@ -4155,8 +4155,8 @@
        "
\n",
        "{\n",
        "1: {\n",
-       "│   │   <class 'chip.clusters.Objects.TestCluster'>: {\n",
-       "│   │   │   <class 'chip.clusters.Objects.TestCluster.Attributes.Int16u'>: 2\n",
+       "│   │   <class 'chip.clusters.Objects.UnitTesting'>: {\n",
+       "│   │   │   <class 'chip.clusters.Objects.UnitTesting.Attributes.Int16u'>: 2\n",
        "│   │   }\n",
        "}\n",
        "}\n",
@@ -4166,8 +4166,8 @@
        "\n",
        "\u001b[1m{\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1;36m1\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
-       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.TestCluster.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
+       "\u001b[2;32m│   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1m{\u001b[0m\n",
+       "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'chip.clusters.Objects.UnitTesting.Attributes.Int16u'\u001b[0m\u001b[1m>\u001b[0m: \u001b[1;36m2\u001b[0m\n",
        "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[2;32m│   \u001b[0m\u001b[1m}\u001b[0m\n",
        "\u001b[1m}\u001b[0m\n"
@@ -4178,7 +4178,7 @@
     }
    ],
    "source": [
-    "await devCtrl.ReadAttribute(2, [ (1, Clusters.TestCluster.Attributes.Int16u) ])"
+    "await devCtrl.ReadAttribute(2, [ (1, Clusters.UnitTesting.Attributes.Int16u) ])"
    ]
   }
  ],
diff --git a/docs/guides/repl/Matter_REPL_Intro.ipynb b/docs/guides/repl/Matter_REPL_Intro.ipynb
index 83cc3ad8efadec..2960cbac92cb1a 100644
--- a/docs/guides/repl/Matter_REPL_Intro.ipynb
+++ b/docs/guides/repl/Matter_REPL_Intro.ipynb
@@ -670,7 +670,7 @@
        "                                                                                           \n",
        "                                             E.g                                           \n",
        "                                                 (1,                                       \n",
-       "                                             Clusters.TestCluster.Attributes.XYZAttribute \n",
+       "                                             Clusters.UnitTesting.Attributes.XYZAttribute \n",
        "                                             -- Write 'hello' to the XYZ attribute on the  \n",
        "                                             test cluster to endpoint 1                    \n",
        "                          ZCLAttributeList = def ZCLAttributeList():                       \n",
@@ -893,7 +893,7 @@
        "\u001b[34m│\u001b[0m                                                                                           \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mE.g\u001b[0m                                           \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m    \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m                                      \u001b[34m│\u001b[0m\n",
-       "\u001b[34m│\u001b[0m                                             \u001b[1;2;35mClusters.TestCluster.Attributes.XYZAttribute\u001b[0m\u001b[1;2m…\u001b[0m \u001b[34m│\u001b[0m\n",
+       "\u001b[34m│\u001b[0m                                             \u001b[1;2;35mClusters.UnitTesting.luster.Attributes.XYZAttribute\u001b[0m\u001b[1;2m…\u001b[0m \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m-- Write \u001b[0m\u001b[2;32m'hello'\u001b[0m\u001b[2m to the XYZ attribute on the \u001b[0m \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mtest cluster to endpoint \u001b[0m\u001b[1;2;36m1\u001b[0m                    \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                          \u001b[3;33mZCLAttributeList\u001b[0m = \u001b[3;96mdef \u001b[0m\u001b[1;31mZCLAttributeList\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m:                       \u001b[34m│\u001b[0m\n",
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 6d461163f67e90..62cf85754d8560 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -3528,7 +3528,7 @@ server cluster ElectricalMeasurement = 2820 {
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster TestCluster = 4294048773 {
+server cluster UnitTesting = 4294048773 {
   enum SimpleEnum : ENUM8 {
     kUnspecified = 0;
     kValueA = 1;
@@ -4705,7 +4705,7 @@ endpoint 1 {
     ram      attribute clusterRevision default = 3;
   }
 
-  server cluster TestCluster {
+  server cluster UnitTesting {
     ram      attribute boolean;
     ram      attribute bitmap8;
     ram      attribute bitmap16;
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index 99d72eeea360c9..186bc91f1c688e 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -8055,7 +8055,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -8107,7 +8107,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -19159,7 +19159,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -19331,7 +19331,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 11646ab736d960..9c29b7ed23e284 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -2952,7 +2952,7 @@ server cluster AccountLogin = 1294 {
   timed command Logout(): DefaultSuccess = 3;
 }
 
-server cluster TestCluster = 4294048773 {
+server cluster UnitTesting = 4294048773 {
   enum SimpleEnum : ENUM8 {
     kUnspecified = 0;
     kValueA = 1;
@@ -3801,7 +3801,7 @@ endpoint 1 {
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster TestCluster {
+  server cluster UnitTesting {
     ram      attribute boolean;
     ram      attribute bitmap8;
     ram      attribute bitmap16;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
index 5897329987f088..b15e878d9821c7 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
@@ -8055,7 +8055,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -8107,7 +8107,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -18951,7 +18951,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -19123,7 +19123,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap
index ca91d4a2332a90..36f576ddfe0d50 100644
--- a/examples/thermostat/thermostat-common/thermostat.zap
+++ b/examples/thermostat/thermostat-common/thermostat.zap
@@ -7011,7 +7011,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -7063,7 +7063,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -14129,7 +14129,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -14173,7 +14173,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap
index 98bad2e084396a..cd1dd1a4086bc0 100644
--- a/examples/tv-app/tv-common/tv-app.zap
+++ b/examples/tv-app/tv-common/tv-app.zap
@@ -6921,7 +6921,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -6973,7 +6973,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -9219,7 +9219,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -9271,7 +9271,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
diff --git a/scripts/idl/test_xml_parser.py b/scripts/idl/test_xml_parser.py
index 5f8882a6bb5b65..4a43d3fea717b3 100755
--- a/scripts/idl/test_xml_parser.py
+++ b/scripts/idl/test_xml_parser.py
@@ -53,7 +53,7 @@ def testCluster(self):
             
             
               
-                Test Cluster
+                Test
                 0x1234
 
                 SomeIntAttribute
@@ -83,7 +83,7 @@ def testCluster(self):
                          Idl(clusters=[
                              Cluster(
                                  side=ClusterSide.CLIENT,
-                                 name='TestCluster',
+                                 name='Test',
                                  code=0x1234,
                                  attributes=[
                                      Attribute(definition=Field(data_type=DataType(name='INT32U'), code=11, name='SomeIntAttribute',
@@ -150,7 +150,7 @@ def testFabricScopedAndSensitive(self):
         idl = XmlToIdl('''
             
               
-                Test Cluster
+                Test
                 0x0001
 
                 
@@ -173,7 +173,7 @@ def testFabricScopedAndSensitive(self):
         ''')
         self.assertEqual(idl,
                          Idl(clusters=[Cluster(side=ClusterSide.CLIENT,
-                                               name='TestCluster',
+                                               name='Test',
                                                code=1,
                                                events=[Event(priority=EventPriority.INFO,
                                                              name='FabricEvent',
diff --git a/src/app/clusters/test-cluster-server/test-cluster-server.cpp b/src/app/clusters/test-cluster-server/test-cluster-server.cpp
index 8647c7be0b12e4..acf56b7ab1bd44 100644
--- a/src/app/clusters/test-cluster-server/test-cluster-server.cpp
+++ b/src/app/clusters/test-cluster-server/test-cluster-server.cpp
@@ -38,9 +38,9 @@
 using namespace chip;
 using namespace chip::app;
 using namespace chip::app::Clusters;
-using namespace chip::app::Clusters::TestCluster;
-using namespace chip::app::Clusters::TestCluster::Commands;
-using namespace chip::app::Clusters::TestCluster::Attributes;
+using namespace chip::app::Clusters::UnitTesting;
+using namespace chip::app::Clusters::UnitTesting::Commands;
+using namespace chip::app::Clusters::UnitTesting::Attributes;
 
 // The number of elements in the test attribute list
 constexpr uint8_t kAttributeListLength = 4;
@@ -75,7 +75,7 @@ class TestAttrAccess : public AttributeAccessInterface
 {
 public:
     // Register for the Test Cluster cluster on all endpoints.
-    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), TestCluster::Id) {}
+    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), Clusters::UnitTesting::Id) {}
 
     CHIP_ERROR Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder) override;
     CHIP_ERROR Write(const ConcreteDataAttributePath & aPath, AttributeValueDecoder & aDecoder) override;
@@ -115,7 +115,7 @@ OctetStringData gStructAttributeByteSpanData;
 Structs::SimpleStruct::Type gStructAttributeValue;
 NullableStruct::TypeInfo::Type gNullableStructAttributeValue;
 
-TestCluster::Structs::TestFabricScoped::Type gListFabricScopedAttributeValue[kAttributeListLength];
+chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::Type gListFabricScopedAttributeValue[kAttributeListLength];
 uint8_t gListFabricScoped_fabricSensitiveInt8uList[kAttributeListLength][kFabricSensitiveIntListLength];
 size_t gListFabricScopedAttributeLen = 0;
 char gListFabricScoped_fabricSensitiveCharBuf[kAttributeListLength][kFabricSensitiveCharLength];
@@ -433,7 +433,7 @@ CHIP_ERROR TestAttrAccess::WriteListStructOctetStringAttribute(const ConcreteDat
     }
     if (aPath.mListOp == ConcreteDataAttributePath::ListOperation::AppendItem)
     {
-        chip::app::Clusters::TestCluster::Structs::TestListStructOctet::DecodableType entry;
+        chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::DecodableType entry;
         ReturnErrorOnFailure(aDecoder.Decode(entry));
         size_t index = gListOperationalCertLen;
 
@@ -674,8 +674,8 @@ CHIP_ERROR TestAttrAccess::WriteListFabricScopedAttribute(const ConcreteDataAttr
 
 } // namespace
 
-bool emberAfTestClusterClusterTestCallback(app::CommandHandler *, const app::ConcreteCommandPath & commandPath,
-                                           const Test::DecodableType & commandData)
+bool emberAfUnitTestingClusterTestCallback(app::CommandHandler *, const app::ConcreteCommandPath & commandPath,
+                                           const Clusters::UnitTesting::Commands::Test::DecodableType & commandData)
 {
     // Setup the test variables
     emAfLoadAttributeDefaults(commandPath.mEndpointId, true, MakeOptional(commandPath.mClusterId));
@@ -700,7 +700,7 @@ bool emberAfTestClusterClusterTestCallback(app::CommandHandler *, const app::Con
     return true;
 }
 
-bool emberAfTestClusterClusterTestSpecificCallback(CommandHandler * apCommandObj, const ConcreteCommandPath & commandPath,
+bool emberAfUnitTestingClusterTestSpecificCallback(CommandHandler * apCommandObj, const ConcreteCommandPath & commandPath,
                                                    const TestSpecific::DecodableType & commandData)
 {
     TestSpecificResponse::Type responseData;
@@ -709,13 +709,13 @@ bool emberAfTestClusterClusterTestSpecificCallback(CommandHandler * apCommandObj
     return true;
 }
 
-bool emberAfTestClusterClusterTestNotHandledCallback(CommandHandler *, const ConcreteCommandPath & commandPath,
+bool emberAfUnitTestingClusterTestNotHandledCallback(CommandHandler *, const ConcreteCommandPath & commandPath,
                                                      const TestNotHandled::DecodableType & commandData)
 {
     return false;
 }
 
-bool emberAfTestClusterClusterTestAddArgumentsCallback(CommandHandler * apCommandObj, const ConcreteCommandPath & commandPath,
+bool emberAfUnitTestingClusterTestAddArgumentsCallback(CommandHandler * apCommandObj, const ConcreteCommandPath & commandPath,
                                                        const TestAddArguments::DecodableType & commandData)
 {
     if (commandData.arg1 > UINT8_MAX - commandData.arg2)
@@ -737,21 +737,21 @@ static bool SendBooleanResponse(CommandHandler * commandObj, const ConcreteComma
     return true;
 }
 
-bool emberAfTestClusterClusterTestStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestStructArgumentRequestCallback(
     app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
     const Commands::TestStructArgumentRequest::DecodableType & commandData)
 {
     return SendBooleanResponse(commandObj, commandPath, commandData.arg1.b);
 }
 
-bool emberAfTestClusterClusterTestNestedStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestNestedStructArgumentRequestCallback(
     app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
     const Commands::TestNestedStructArgumentRequest::DecodableType & commandData)
 {
     return SendBooleanResponse(commandObj, commandPath, commandData.arg1.c.b);
 }
 
-bool emberAfTestClusterClusterTestListStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListStructArgumentRequestCallback(
     app::CommandHandler * commandObj, app::ConcreteCommandPath const & commandPath,
     Commands::TestListStructArgumentRequest::DecodableType const & commandData)
 {
@@ -773,7 +773,7 @@ bool emberAfTestClusterClusterTestListStructArgumentRequestCallback(
     return SendBooleanResponse(commandObj, commandPath, shouldReturnTrue);
 }
 
-bool emberAfTestClusterClusterTestEmitTestEventRequestCallback(
+bool emberAfUnitTestingClusterTestEmitTestEventRequestCallback(
     CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
     const Commands::TestEmitTestEventRequest::DecodableType & commandData)
 {
@@ -794,7 +794,7 @@ bool emberAfTestClusterClusterTestEmitTestEventRequestCallback(
     return true;
 }
 
-bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(
+bool emberAfUnitTestingClusterTestEmitTestFabricScopedEventRequestCallback(
     CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
     const Commands::TestEmitTestFabricScopedEventRequest::DecodableType & commandData)
 {
@@ -810,7 +810,7 @@ bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(
     return true;
 }
 
-bool emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListInt8UArgumentRequestCallback(
     CommandHandler * commandObj, ConcreteCommandPath const & commandPath,
     Commands::TestListInt8UArgumentRequest::DecodableType const & commandData)
 {
@@ -832,7 +832,7 @@ bool emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(
     return SendBooleanResponse(commandObj, commandPath, shouldReturnTrue);
 }
 
-bool emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestNestedStructListArgumentRequestCallback(
     app::CommandHandler * commandObj, app::ConcreteCommandPath const & commandPath,
     Commands::TestNestedStructListArgumentRequest::DecodableType const & commandData)
 {
@@ -854,7 +854,7 @@ bool emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(
     return SendBooleanResponse(commandObj, commandPath, shouldReturnTrue);
 }
 
-bool emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListNestedStructListArgumentRequestCallback(
     app::CommandHandler * commandObj, app::ConcreteCommandPath const & commandPath,
     Commands::TestListNestedStructListArgumentRequest::DecodableType const & commandData)
 {
@@ -889,7 +889,7 @@ bool emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(
     return SendBooleanResponse(commandObj, commandPath, shouldReturnTrue);
 }
 
-bool emberAfTestClusterClusterTestListInt8UReverseRequestCallback(
+bool emberAfUnitTestingClusterTestListInt8UReverseRequestCallback(
     CommandHandler * commandObj, ConcreteCommandPath const & commandPath,
     Commands::TestListInt8UReverseRequest::DecodableType const & commandData)
 {
@@ -925,7 +925,7 @@ bool emberAfTestClusterClusterTestListInt8UReverseRequestCallback(
     return true;
 }
 
-bool emberAfTestClusterClusterTestEnumsRequestCallback(CommandHandler * commandObj, ConcreteCommandPath const & commandPath,
+bool emberAfUnitTestingClusterTestEnumsRequestCallback(CommandHandler * commandObj, ConcreteCommandPath const & commandPath,
                                                        TestEnumsRequest::DecodableType const & commandData)
 {
     TestEnumsResponse::Type response;
@@ -936,7 +936,7 @@ bool emberAfTestClusterClusterTestEnumsRequestCallback(CommandHandler * commandO
     return true;
 }
 
-bool emberAfTestClusterClusterTestNullableOptionalRequestCallback(
+bool emberAfUnitTestingClusterTestNullableOptionalRequestCallback(
     CommandHandler * commandObj, ConcreteCommandPath const & commandPath,
     Commands::TestNullableOptionalRequest::DecodableType const & commandData)
 {
@@ -958,7 +958,7 @@ bool emberAfTestClusterClusterTestNullableOptionalRequestCallback(
     return true;
 }
 
-bool emberAfTestClusterClusterSimpleStructEchoRequestCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
+bool emberAfUnitTestingClusterSimpleStructEchoRequestCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
                                                               const Commands::SimpleStructEchoRequest::DecodableType & commandData)
 {
     Commands::SimpleStructResponse::Type response;
@@ -975,14 +975,14 @@ bool emberAfTestClusterClusterSimpleStructEchoRequestCallback(CommandHandler * c
     return true;
 }
 
-bool emberAfTestClusterClusterTimedInvokeRequestCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
+bool emberAfUnitTestingClusterTimedInvokeRequestCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
                                                          const Commands::TimedInvokeRequest::DecodableType & commandData)
 {
     commandObj->AddStatus(commandPath, Protocols::InteractionModel::Status::Success);
     return true;
 }
 
-bool emberAfTestClusterClusterTestSimpleOptionalArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestSimpleOptionalArgumentRequestCallback(
     CommandHandler * commandObj, const ConcreteCommandPath & commandPath,
     const Commands::TestSimpleOptionalArgumentRequest::DecodableType & commandData)
 {
@@ -995,7 +995,7 @@ bool emberAfTestClusterClusterTestSimpleOptionalArgumentRequestCallback(
 // -----------------------------------------------------------------------------
 // Plugin initialization
 
-void MatterTestClusterPluginServerInitCallback(void)
+void MatterUnitTestingPluginServerInitCallback(void)
 {
     registerAttributeAccessOverride(&gAttrAccess);
 }
diff --git a/src/app/tests/TestBufferedReadCallback.cpp b/src/app/tests/TestBufferedReadCallback.cpp
index 6a2e7ad983718c..bdd988593f63b5 100644
--- a/src/app/tests/TestBufferedReadCallback.cpp
+++ b/src/app/tests/TestBufferedReadCallback.cpp
@@ -116,10 +116,10 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
     case ValidationInstruction::kSimpleAttributeA: {
         ChipLogProgress(DataManagement, "\t\t -- Validating A");
 
-        Clusters::TestCluster::Attributes::Int8u::TypeInfo::Type value;
+        Clusters::UnitTesting::Attributes::Int8u::TypeInfo::Type value;
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::Int8u::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::Int8u::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::NotList);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value == mCurrentInstruction);
@@ -129,10 +129,10 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
     case ValidationInstruction::kSimpleAttributeB: {
         ChipLogProgress(DataManagement, "\t\t -- Validating B");
 
-        Clusters::TestCluster::Attributes::Int32u::TypeInfo::Type value;
+        Clusters::UnitTesting::Attributes::Int32u::TypeInfo::Type value;
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::Int32u::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::Int32u::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::NotList);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value == mCurrentInstruction);
@@ -142,12 +142,12 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
     case ValidationInstruction::kListAttributeC_Empty: {
         ChipLogProgress(DataManagement, "\t\t -- Validating C[]");
 
-        Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::DecodableType value;
+        Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::DecodableType value;
         size_t len;
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListStructOctetString::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListStructOctetString::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value.ComputeSize(&len) == CHIP_NO_ERROR);
@@ -169,12 +169,12 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
 
         ChipLogProgress(DataManagement, "\t\t -- Validating C[%" PRIu32 "]", expectedListLength);
 
-        Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::DecodableType value;
+        Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::DecodableType value;
         size_t len;
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListStructOctetString::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListStructOctetString::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value.ComputeSize(&len) == CHIP_NO_ERROR);
@@ -197,12 +197,12 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
     case ValidationInstruction::kListAttributeD_Empty: {
         ChipLogProgress(DataManagement, "\t\t -- Validating D[]");
 
-        Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::DecodableType value;
+        Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::DecodableType value;
         size_t len;
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListInt8u::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListInt8u::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value.ComputeSize(&len) == CHIP_NO_ERROR);
@@ -224,12 +224,12 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
 
         ChipLogProgress(DataManagement, "\t\t -- Validating D[%" PRIu32 "]", expectedListLength);
 
-        Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::DecodableType value;
+        Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::DecodableType value;
         size_t len;
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListInt8u::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListInt8u::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, DataModel::Decode(*apData, value) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(gSuite, value.ComputeSize(&len) == CHIP_NO_ERROR);
@@ -253,8 +253,8 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
         ChipLogProgress(DataManagement, "\t\t -- Validating C|e");
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListStructOctetString::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListStructOctetString::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, aStatus.mStatus == Protocols::InteractionModel::Status::Failure);
         break;
@@ -264,8 +264,8 @@ void DataSeriesValidator::OnAttributeData(const ConcreteDataAttributePath & aPat
         ChipLogProgress(DataManagement, "\t\t -- Validating D|e");
 
         NL_TEST_ASSERT(gSuite,
-                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::TestCluster::Id &&
-                           aPath.mAttributeId == Clusters::TestCluster::Attributes::ListInt8u::Id &&
+                       aPath.mEndpointId == 0 && aPath.mClusterId == Clusters::UnitTesting::Id &&
+                           aPath.mAttributeId == Clusters::UnitTesting::Attributes::ListInt8u::Id &&
                            aPath.mListOp == ConcreteDataAttributePath::ListOperation::ReplaceAll);
         NL_TEST_ASSERT(gSuite, aStatus.mStatus == Protocols::InteractionModel::Status::Failure);
 
@@ -297,7 +297,7 @@ void DataSeriesGenerator::Generate()
 {
     System::PacketBufferHandle handle;
     System::PacketBufferTLVWriter writer;
-    ConcreteDataAttributePath path(0, Clusters::TestCluster::Id, 0);
+    ConcreteDataAttributePath path(0, Clusters::UnitTesting::Id, 0);
     System::PacketBufferTLVReader reader;
     ReadClient::Callback * callback = &mReadCallback;
     StatusIB status;
@@ -318,8 +318,8 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kSimpleAttributeA: {
             ChipLogProgress(DataManagement, "\t -- Generating A");
 
-            Clusters::TestCluster::Attributes::Int8u::TypeInfo::Type value = index;
-            path.mAttributeId                                              = Clusters::TestCluster::Attributes::Int8u::Id;
+            Clusters::UnitTesting::Attributes::Int8u::TypeInfo::Type value = index;
+            path.mAttributeId                                              = Clusters::UnitTesting::Attributes::Int8u::Id;
             path.mListOp                                                   = ConcreteDataAttributePath::ListOperation::NotList;
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
             break;
@@ -328,8 +328,8 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kSimpleAttributeB: {
             ChipLogProgress(DataManagement, "\t -- Generating B");
 
-            Clusters::TestCluster::Attributes::Int32u::TypeInfo::Type value = index;
-            path.mAttributeId                                               = Clusters::TestCluster::Attributes::Int32u::Id;
+            Clusters::UnitTesting::Attributes::Int32u::TypeInfo::Type value = index;
+            path.mAttributeId                                               = Clusters::UnitTesting::Attributes::Int32u::Id;
             path.mListOp                                                    = ConcreteDataAttributePath::ListOperation::NotList;
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
             break;
@@ -338,8 +338,8 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kListAttributeC_Empty: {
             ChipLogProgress(DataManagement, "\t -- Generating C[]");
 
-            Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+            Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
             break;
@@ -348,8 +348,8 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kListAttributeC_NotEmpty: {
             ChipLogProgress(DataManagement, "\t -- Generating C[2]");
 
-            Clusters::TestCluster::Structs::TestListStructOctet::Type listData[2];
-            Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value(listData);
+            Clusters::UnitTesting::Structs::TestListStructOctet::Type listData[2];
+            Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value(listData);
 
             uint8_t index2 = 0;
             for (auto & item : listData)
@@ -358,7 +358,7 @@ void DataSeriesGenerator::Generate()
                 index2++;
             }
 
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
 
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
@@ -368,8 +368,8 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kListAttributeD_Empty: {
             ChipLogProgress(DataManagement, "\t -- Generating D[]");
 
-            Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::Type value;
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListInt8u::Id;
+            Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::Type value;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListInt8u::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
             break;
@@ -379,7 +379,7 @@ void DataSeriesGenerator::Generate()
             ChipLogProgress(DataManagement, "\t -- Generating D[2]");
 
             uint8_t listData[2];
-            Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::Type value(listData);
+            Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::Type value(listData);
 
             uint8_t index2 = 0;
             for (auto & item : listData)
@@ -388,7 +388,7 @@ void DataSeriesGenerator::Generate()
                 index2++;
             }
 
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListInt8u::Id;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListInt8u::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
 
             NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
@@ -398,7 +398,7 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kListAttributeC_Error: {
             ChipLogProgress(DataManagement, "\t -- Generating C|e");
 
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
             status.mStatus    = Protocols::InteractionModel::Status::Failure;
             hasData           = false;
@@ -409,7 +409,7 @@ void DataSeriesGenerator::Generate()
         case ValidationInstruction::kListAttributeD_Error: {
             ChipLogProgress(DataManagement, "\t -- Generating D|e");
 
-            path.mAttributeId = Clusters::TestCluster::Attributes::ListInt8u::Id;
+            path.mAttributeId = Clusters::UnitTesting::Attributes::ListInt8u::Id;
             path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
             status.mStatus    = Protocols::InteractionModel::Status::Failure;
             hasData           = false;
@@ -419,12 +419,12 @@ void DataSeriesGenerator::Generate()
 
         case ValidationInstruction::kListAttributeC_NotEmpty_Chunked: {
             hasData = false;
-            Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
+            Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
 
             {
                 ChipLogProgress(DataManagement, "\t -- Generating C[]");
 
-                path.mAttributeId = Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+                path.mAttributeId = Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
                 path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
                 NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
 
@@ -438,13 +438,13 @@ void DataSeriesGenerator::Generate()
 
             for (int i = 0; i < 512; i++)
             {
-                Clusters::TestCluster::Structs::TestListStructOctet::Type listItem;
+                Clusters::UnitTesting::Structs::TestListStructOctet::Type listItem;
 
                 handle = System::PacketBufferHandle::New(1000);
                 writer.Init(std::move(handle), true);
                 status = StatusIB();
 
-                path.mAttributeId = Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+                path.mAttributeId = Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
                 path.mListOp      = ConcreteDataAttributePath::ListOperation::AppendItem;
 
                 listItem.member1 = (uint64_t) i;
@@ -462,12 +462,12 @@ void DataSeriesGenerator::Generate()
 
         case ValidationInstruction::kListAttributeD_NotEmpty_Chunked: {
             hasData = false;
-            Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::Type value;
+            Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::Type value;
 
             {
                 ChipLogProgress(DataManagement, "\t -- Generating D[]");
 
-                path.mAttributeId = Clusters::TestCluster::Attributes::ListInt8u::Id;
+                path.mAttributeId = Clusters::UnitTesting::Attributes::ListInt8u::Id;
                 path.mListOp      = ConcreteDataAttributePath::ListOperation::ReplaceAll;
                 NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
 
@@ -485,7 +485,7 @@ void DataSeriesGenerator::Generate()
                 writer.Init(std::move(handle), true);
                 status = StatusIB();
 
-                path.mAttributeId = Clusters::TestCluster::Attributes::ListInt8u::Id;
+                path.mAttributeId = Clusters::UnitTesting::Attributes::ListInt8u::Id;
                 path.mListOp      = ConcreteDataAttributePath::ListOperation::AppendItem;
 
                 NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), (uint8_t)(i)) == CHIP_NO_ERROR);
diff --git a/src/app/tests/TestClusterStateCache.cpp b/src/app/tests/TestClusterStateCache.cpp
index 93c75508bde025..d2b85fad74f5d5 100644
--- a/src/app/tests/TestClusterStateCache.cpp
+++ b/src/app/tests/TestClusterStateCache.cpp
@@ -82,19 +82,19 @@ struct AttributeInstruction
         switch (mAttributeType)
         {
         case kAttributeA:
-            return Clusters::TestCluster::Attributes::Int16u::Id;
+            return Clusters::UnitTesting::Attributes::Int16u::Id;
             break;
 
         case kAttributeB:
-            return Clusters::TestCluster::Attributes::OctetString::Id;
+            return Clusters::UnitTesting::Attributes::OctetString::Id;
             break;
 
         case kAttributeC:
-            return Clusters::TestCluster::Attributes::StructAttr::Id;
+            return Clusters::UnitTesting::Attributes::StructAttr::Id;
             break;
 
         default:
-            return Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+            return Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
             break;
         }
     }
@@ -184,7 +184,7 @@ void DataSeriesGenerator::Generate(ForwardedDataCallbackValidator & dataCallback
     uint8_t index = 0;
     for (auto & instruction : mInstructionList)
     {
-        ConcreteDataAttributePath path(instruction.mEndpointId, Clusters::TestCluster::Id, 0);
+        ConcreteDataAttributePath path(instruction.mEndpointId, Clusters::UnitTesting::Id, 0);
         Platform::ScopedMemoryBufferWithSize handle;
         handle.Calloc(3000);
         TLV::ScopedBufferTLVWriter writer(std::move(handle), 3000);
@@ -202,7 +202,7 @@ void DataSeriesGenerator::Generate(ForwardedDataCallbackValidator & dataCallback
             case AttributeInstruction::kAttributeA: {
                 ChipLogProgress(DataManagement, "\t -- Generating A");
 
-                Clusters::TestCluster::Attributes::Int16u::TypeInfo::Type value = instruction.mInstructionId;
+                Clusters::UnitTesting::Attributes::Int16u::TypeInfo::Type value = instruction.mInstructionId;
                 NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
                 break;
             }
@@ -210,7 +210,7 @@ void DataSeriesGenerator::Generate(ForwardedDataCallbackValidator & dataCallback
             case AttributeInstruction::kAttributeB: {
                 ChipLogProgress(DataManagement, "\t -- Generating B");
 
-                Clusters::TestCluster::Attributes::OctetString::TypeInfo::Type value;
+                Clusters::UnitTesting::Attributes::OctetString::TypeInfo::Type value;
                 uint8_t buf[] = { 'h', 'e', 'l', 'l', 'o' };
                 value         = buf;
 
@@ -221,7 +221,7 @@ void DataSeriesGenerator::Generate(ForwardedDataCallbackValidator & dataCallback
             case AttributeInstruction::kAttributeC: {
                 ChipLogProgress(DataManagement, "\t -- Generating C");
 
-                Clusters::TestCluster::Attributes::StructAttr::TypeInfo::Type value;
+                Clusters::UnitTesting::Attributes::StructAttr::TypeInfo::Type value;
                 value.a = instruction.mInstructionId;
                 value.b = true;
                 NL_TEST_ASSERT(gSuite, DataModel::Encode(writer, TLV::AnonymousTag(), value) == CHIP_NO_ERROR);
@@ -232,14 +232,14 @@ void DataSeriesGenerator::Generate(ForwardedDataCallbackValidator & dataCallback
                 ChipLogProgress(DataManagement, "\t -- Generating D");
 
                 // buf[200] is 1.6k
-                Clusters::TestCluster::Structs::TestListStructOctet::Type buf[200];
+                Clusters::UnitTesting::Structs::TestListStructOctet::Type buf[200];
 
                 for (auto & i : buf)
                 {
                     i.member1 = instruction.mInstructionId;
                 }
 
-                Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
+                Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
                 path.mListOp = ConcreteDataAttributePath::ListOperation::ReplaceAll;
 
                 value = buf;
@@ -278,7 +278,7 @@ class CacheValidator : public ClusterStateCache::Callback
 public:
     CacheValidator(AttributeInstructionListType & instructionList, ForwardedDataCallbackValidator & dataCallbackValidator);
 
-    Clusters::TestCluster::Attributes::TypeInfo::DecodableType clusterValue;
+    Clusters::UnitTesting::Attributes::TypeInfo::DecodableType clusterValue;
 
 private:
     void OnDone(ReadClient *) override {}
@@ -316,8 +316,8 @@ class CacheValidator : public ClusterStateCache::Callback
         case AttributeInstruction::kAttributeA: {
             ChipLogProgress(DataManagement, "\t\t -- Validating A");
 
-            Clusters::TestCluster::Attributes::Int16u::TypeInfo::DecodableType v = 0;
-            err = cache->Get(path, v);
+            Clusters::UnitTesting::Attributes::Int16u::TypeInfo::DecodableType v = 0;
+            err = cache->Get(path, v);
             if (err == CHIP_ERROR_IM_STATUS_CODE_RECEIVED)
             {
                 gotStatus = true;
@@ -335,8 +335,8 @@ class CacheValidator : public ClusterStateCache::Callback
         case AttributeInstruction::kAttributeB: {
             ChipLogProgress(DataManagement, "\t\t -- Validating B");
 
-            Clusters::TestCluster::Attributes::OctetString::TypeInfo::DecodableType v;
-            err = cache->Get(path, v);
+            Clusters::UnitTesting::Attributes::OctetString::TypeInfo::DecodableType v;
+            err = cache->Get(path, v);
             if (err == CHIP_ERROR_IM_STATUS_CODE_RECEIVED)
             {
                 gotStatus = true;
@@ -354,8 +354,8 @@ class CacheValidator : public ClusterStateCache::Callback
         case AttributeInstruction::kAttributeC: {
             ChipLogProgress(DataManagement, "\t\t -- Validating C");
 
-            Clusters::TestCluster::Attributes::StructAttr::TypeInfo::DecodableType v;
-            err = cache->Get(path, v);
+            Clusters::UnitTesting::Attributes::StructAttr::TypeInfo::DecodableType v;
+            err = cache->Get(path, v);
             if (err == CHIP_ERROR_IM_STATUS_CODE_RECEIVED)
             {
                 gotStatus = true;
@@ -373,8 +373,8 @@ class CacheValidator : public ClusterStateCache::Callback
         case AttributeInstruction::kAttributeD: {
             ChipLogProgress(DataManagement, "\t\t -- Validating D");
 
-            Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::DecodableType v;
-            err = cache->Get(path, v);
+            Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::DecodableType v;
+            err = cache->Get(path, v);
             if (err == CHIP_ERROR_IM_STATUS_CODE_RECEIVED)
             {
                 gotStatus = true;
@@ -452,7 +452,7 @@ class CacheValidator : public ClusterStateCache::Callback
 
             auto status = statusList.front();
             NL_TEST_ASSERT(gSuite, status.mPath.mEndpointId == instruction.mEndpointId);
-            NL_TEST_ASSERT(gSuite, status.mPath.mClusterId == Clusters::TestCluster::Id);
+            NL_TEST_ASSERT(gSuite, status.mPath.mClusterId == Clusters::UnitTesting::Id);
             NL_TEST_ASSERT(gSuite, status.mPath.mAttributeId == instruction.GetAttributeId());
             NL_TEST_ASSERT(gSuite, status.mStatus.mStatus == Protocols::InteractionModel::Status::Failure);
         }
@@ -473,7 +473,7 @@ class CacheValidator : public ClusterStateCache::Callback
         for (auto & instruction : mInstructionSet)
         {
             if (instruction.mEndpointId == path.mEndpointId && instruction.GetAttributeId() == path.mAttributeId &&
-                path.mClusterId == Clusters::TestCluster::Id)
+                path.mClusterId == Clusters::UnitTesting::Id)
             {
 
                 //
@@ -532,8 +532,8 @@ CacheValidator::CacheValidator(AttributeInstructionListType & instructionList,
         mInstructionSet.erase(instruction);
         mInstructionSet.insert(instruction);
         mExpectedAttributes.insert(
-            ConcreteAttributePath(instruction.mEndpointId, Clusters::TestCluster::Id, instruction.GetAttributeId()));
-        mExpectedClusters.insert(std::make_tuple(instruction.mEndpointId, Clusters::TestCluster::Id));
+            ConcreteAttributePath(instruction.mEndpointId, Clusters::UnitTesting::Id, instruction.GetAttributeId()));
+        mExpectedClusters.insert(std::make_tuple(instruction.mEndpointId, Clusters::UnitTesting::Id));
         mExpectedEndpoints.insert(instruction.mEndpointId);
     }
 }
diff --git a/src/app/tests/TestDataModelSerialization.cpp b/src/app/tests/TestDataModelSerialization.cpp
index 3c922f348b4514..9756f7b48c167e 100644
--- a/src/app/tests/TestDataModelSerialization.cpp
+++ b/src/app/tests/TestDataModelSerialization.cpp
@@ -173,18 +173,18 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
     // Encode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
         uint8_t buf[4]  = { 0, 1, 2, 3 };
         char strbuf[10] = "chip";
 
         t.a = 20;
         t.b = true;
-        t.c = TestCluster::SimpleEnum::kValueA;
+        t.c = Clusters::UnitTesting::SimpleEnum::kValueA;
         t.d = buf;
 
         t.e = Span{ strbuf, strlen(strbuf) };
 
-        t.f.Set(TestCluster::SimpleBitmap::kValueC);
+        t.f.Set(Clusters::UnitTesting::SimpleBitmap::kValueC);
 
         err = DataModel::Encode(_this->mWriter, TLV::AnonymousTag(), t);
         NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -199,7 +199,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
     // Decode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
 
         _this->SetupReader();
 
@@ -208,7 +208,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
 
         NL_TEST_ASSERT(apSuite, t.a == 20);
         NL_TEST_ASSERT(apSuite, t.b == true);
-        NL_TEST_ASSERT(apSuite, t.c == TestCluster::SimpleEnum::kValueA);
+        NL_TEST_ASSERT(apSuite, t.c == Clusters::UnitTesting::SimpleEnum::kValueA);
 
         NL_TEST_ASSERT(apSuite, t.d.size() == 4);
 
@@ -218,7 +218,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
         }
 
         NL_TEST_ASSERT(apSuite, StringMatches(t.e, "chip"));
-        NL_TEST_ASSERT(apSuite, t.f.HasOnly(TestCluster::SimpleBitmap::kValueC));
+        NL_TEST_ASSERT(apSuite, t.f.HasOnly(Clusters::UnitTesting::SimpleBitmap::kValueC));
     }
 }
 
@@ -235,18 +235,18 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
     // Encode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
         uint8_t buf[4]  = { 0, 1, 2, 3 };
         char strbuf[10] = "chip";
 
         t.a = 20;
         t.b = true;
-        t.c = static_cast(10);
+        t.c = static_cast(10);
         t.d = buf;
 
         t.e = Span{ strbuf, strlen(strbuf) };
 
-        t.f.Set(TestCluster::SimpleBitmap::kValueC);
+        t.f.Set(Clusters::UnitTesting::SimpleBitmap::kValueC);
 
         err = DataModel::Encode(_this->mWriter, TLV::AnonymousTag(), t);
         NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -261,7 +261,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecSimpleStruc
     // Decode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
 
         _this->SetupReader();
 
@@ -283,7 +283,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecNestedStruc
     // Encode
     //
     {
-        TestCluster::Structs::NestedStruct::Type t;
+        Clusters::UnitTesting::Structs::NestedStruct::Type t;
         uint8_t buf[4]  = { 0, 1, 2, 3 };
         char strbuf[10] = "chip";
 
@@ -291,7 +291,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecNestedStruc
         t.b   = true;
         t.c.a = 11;
         t.c.b = true;
-        t.c.c = TestCluster::SimpleEnum::kValueB;
+        t.c.c = Clusters::UnitTesting::SimpleEnum::kValueB;
         t.c.d = buf;
 
         t.c.e = Span{ strbuf, strlen(strbuf) };
@@ -309,7 +309,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecNestedStruc
     // Decode
     //
     {
-        TestCluster::Structs::NestedStruct::DecodableType t;
+        Clusters::UnitTesting::Structs::NestedStruct::DecodableType t;
 
         _this->SetupReader();
 
@@ -320,7 +320,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecNestedStruc
         NL_TEST_ASSERT(apSuite, t.b == true);
         NL_TEST_ASSERT(apSuite, t.c.a == 11);
         NL_TEST_ASSERT(apSuite, t.c.b == true);
-        NL_TEST_ASSERT(apSuite, t.c.c == TestCluster::SimpleEnum::kValueB);
+        NL_TEST_ASSERT(apSuite, t.c.c == Clusters::UnitTesting::SimpleEnum::kValueB);
 
         NL_TEST_ASSERT(apSuite, t.c.d.size() == 4);
 
@@ -346,11 +346,11 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableNe
     // Encode
     //
     {
-        TestCluster::Structs::NestedStructList::Type t;
+        Clusters::UnitTesting::Structs::NestedStructList::Type t;
         uint8_t buf[4]     = { 0, 1, 2, 3 };
         uint32_t intBuf[4] = { 10000, 10001, 10002, 10003 };
         char strbuf[10]    = "chip";
-        TestCluster::Structs::SimpleStruct::Type structList[4];
+        Clusters::UnitTesting::Structs::SimpleStruct::Type structList[4];
         uint8_t i = 0;
         ByteSpan spanList[4];
 
@@ -358,7 +358,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableNe
         t.b   = true;
         t.c.a = 11;
         t.c.b = true;
-        t.c.c = TestCluster::SimpleEnum::kValueB;
+        t.c.c = Clusters::UnitTesting::SimpleEnum::kValueB;
         t.c.d = buf;
         t.e   = intBuf;
 
@@ -394,7 +394,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableNe
     // Decode
     //
     {
-        TestCluster::Structs::NestedStructList::DecodableType t;
+        Clusters::UnitTesting::Structs::NestedStructList::DecodableType t;
         int i;
 
         _this->SetupReader();
@@ -406,7 +406,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableNe
         NL_TEST_ASSERT(apSuite, t.b == true);
         NL_TEST_ASSERT(apSuite, t.c.a == 11);
         NL_TEST_ASSERT(apSuite, t.c.b == true);
-        NL_TEST_ASSERT(apSuite, t.c.c == TestCluster::SimpleEnum::kValueB);
+        NL_TEST_ASSERT(apSuite, t.c.c == Clusters::UnitTesting::SimpleEnum::kValueB);
 
         NL_TEST_ASSERT(apSuite, StringMatches(t.c.e, "chip"));
 
@@ -491,9 +491,9 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableDo
     // Encode
     //
     {
-        TestCluster::Structs::DoubleNestedStructList::Type t;
-        TestCluster::Structs::NestedStructList::Type n[4];
-        TestCluster::Structs::SimpleStruct::Type structList[4];
+        Clusters::UnitTesting::Structs::DoubleNestedStructList::Type t;
+        Clusters::UnitTesting::Structs::NestedStructList::Type n[4];
+        Clusters::UnitTesting::Structs::SimpleStruct::Type structList[4];
         uint8_t i;
 
         t.a = n;
@@ -523,7 +523,7 @@ void TestDataModelSerialization::TestDataModelSerialization_EncAndDecDecodableDo
     // Decode
     //
     {
-        TestCluster::Structs::DoubleNestedStructList::DecodableType t;
+        Clusters::UnitTesting::Structs::DoubleNestedStructList::DecodableType t;
 
         _this->SetupReader();
 
@@ -568,25 +568,25 @@ void TestDataModelSerialization::TestDataModelSerialization_OptionalFields(nlTes
     // Encode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
         uint8_t buf[4]  = { 0, 1, 2, 3 };
         char strbuf[10] = "chip";
 
         t.a = 20;
         t.b = true;
-        t.c = TestCluster::SimpleEnum::kValueA;
+        t.c = Clusters::UnitTesting::SimpleEnum::kValueA;
         t.d = buf;
 
         t.e = Span{ strbuf, strlen(strbuf) };
 
         // Encode every field manually except a.
         {
-            err =
-                EncodeStruct(_this->mWriter, TLV::AnonymousTag(),
-                             MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kB)), t.b),
-                             MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kC)), t.c),
-                             MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kD)), t.d),
-                             MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kE)), t.e));
+            err = EncodeStruct(
+                _this->mWriter, TLV::AnonymousTag(),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kB)), t.b),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kC)), t.c),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kD)), t.d),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kE)), t.e));
             NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
         }
 
@@ -600,7 +600,7 @@ void TestDataModelSerialization::TestDataModelSerialization_OptionalFields(nlTes
     // Decode
     //
     {
-        TestCluster::Structs::SimpleStruct::DecodableType t;
+        Clusters::UnitTesting::Structs::SimpleStruct::DecodableType t;
 
         _this->SetupReader();
 
@@ -614,7 +614,7 @@ void TestDataModelSerialization::TestDataModelSerialization_OptionalFields(nlTes
         NL_TEST_ASSERT(apSuite, t.a == 150);
 
         NL_TEST_ASSERT(apSuite, t.b == true);
-        NL_TEST_ASSERT(apSuite, t.c == TestCluster::SimpleEnum::kValueA);
+        NL_TEST_ASSERT(apSuite, t.c == Clusters::UnitTesting::SimpleEnum::kValueA);
 
         NL_TEST_ASSERT(apSuite, t.d.size() == 4);
 
@@ -639,13 +639,13 @@ void TestDataModelSerialization::TestDataModelSerialization_ExtraField(nlTestSui
     // Encode
     //
     {
-        TestCluster::Structs::SimpleStruct::Type t;
+        Clusters::UnitTesting::Structs::SimpleStruct::Type t;
         uint8_t buf[4]  = { 0, 1, 2, 3 };
         char strbuf[10] = "chip";
 
         t.a = 20;
         t.b = true;
-        t.c = TestCluster::SimpleEnum::kValueA;
+        t.c = Clusters::UnitTesting::SimpleEnum::kValueA;
         t.d = buf;
 
         t.e = Span{ strbuf, strlen(strbuf) };
@@ -654,12 +654,13 @@ void TestDataModelSerialization::TestDataModelSerialization_ExtraField(nlTestSui
         {
             err = EncodeStruct(
                 _this->mWriter, TLV::AnonymousTag(),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kA)), t.a),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kB)), t.b),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kC)), t.c),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kD)), t.d),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kE)), t.e),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kE) + 1), t.a));
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kA)), t.a),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kB)), t.b),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kC)), t.c),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kD)), t.d),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kE)), t.e),
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kE) + 1),
+                                 t.a));
             NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
         }
 
@@ -673,7 +674,7 @@ void TestDataModelSerialization::TestDataModelSerialization_ExtraField(nlTestSui
     // Decode
     //
     {
-        TestCluster::Structs::SimpleStruct::DecodableType t;
+        Clusters::UnitTesting::Structs::SimpleStruct::DecodableType t;
 
         _this->SetupReader();
 
@@ -683,7 +684,7 @@ void TestDataModelSerialization::TestDataModelSerialization_ExtraField(nlTestSui
 
         NL_TEST_ASSERT(apSuite, t.a == 20);
         NL_TEST_ASSERT(apSuite, t.b == true);
-        NL_TEST_ASSERT(apSuite, t.c == TestCluster::SimpleEnum::kValueA);
+        NL_TEST_ASSERT(apSuite, t.c == Clusters::UnitTesting::SimpleEnum::kValueA);
 
         NL_TEST_ASSERT(apSuite, t.d.size() == 4);
 
@@ -712,13 +713,13 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
         // Encode
         //
         {
-            TestCluster::Structs::SimpleStruct::Type t;
+            Clusters::UnitTesting::Structs::SimpleStruct::Type t;
             uint8_t buf[4]  = { 0, 1, 2, 3 };
             char strbuf[10] = "chip";
 
             t.a = 20;
             t.b = true;
-            t.c = TestCluster::SimpleEnum::kValueA;
+            t.c = Clusters::UnitTesting::SimpleEnum::kValueA;
             t.d = buf;
 
             t.e = Span{ strbuf, strlen(strbuf) };
@@ -727,11 +728,12 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
             {
                 err = EncodeStruct(
                     _this->mWriter, TLV::AnonymousTag(),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kA)), t.b),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kB)), t.b),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kC)), t.c),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kD)), t.d),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kE)), t.e));
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kA)), t.b),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kB)), t.b),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kC)), t.c),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kD)), t.d),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kE)),
+                                     t.e));
                 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
             }
 
@@ -745,7 +747,7 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
         // Decode
         //
         {
-            TestCluster::Structs::SimpleStruct::DecodableType t;
+            Clusters::UnitTesting::Structs::SimpleStruct::DecodableType t;
 
             _this->SetupReader();
 
@@ -764,13 +766,13 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
         // Encode
         //
         {
-            TestCluster::Structs::SimpleStruct::Type t;
+            Clusters::UnitTesting::Structs::SimpleStruct::Type t;
             uint8_t buf[4]  = { 0, 1, 2, 3 };
             char strbuf[10] = "chip";
 
             t.a = 20;
             t.b = true;
-            t.c = TestCluster::SimpleEnum::kValueA;
+            t.c = Clusters::UnitTesting::SimpleEnum::kValueA;
             t.d = buf;
 
             t.e = Span{ strbuf, strlen(strbuf) };
@@ -779,11 +781,12 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
             {
                 err = EncodeStruct(
                     _this->mWriter, TLV::AnonymousTag(),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kA)), t.a),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kB)), t.b),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kC)), t.c),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kD)), t.e),
-                    MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::SimpleStruct::Fields::kE)), t.e));
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kA)), t.a),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kB)), t.b),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kC)), t.c),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kD)), t.e),
+                    MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::SimpleStruct::Fields::kE)),
+                                     t.e));
                 NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
             }
 
@@ -797,7 +800,7 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidSimpleFieldTy
         // Decode
         //
         {
-            TestCluster::Structs::SimpleStruct::DecodableType t;
+            Clusters::UnitTesting::Structs::SimpleStruct::DecodableType t;
 
             _this->SetupReader();
 
@@ -819,7 +822,7 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidListType(nlTe
     // Encode
     //
     {
-        TestCluster::Structs::NestedStructList::Type t;
+        Clusters::UnitTesting::Structs::NestedStructList::Type t;
         uint32_t intBuf[4] = { 10000, 10001, 10002, 10003 };
 
         t.e = intBuf;
@@ -828,7 +831,8 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidListType(nlTe
         {
             err = EncodeStruct(
                 _this->mWriter, TLV::AnonymousTag(),
-                MakeTagValuePair(TLV::ContextTag(to_underlying(TestCluster::Structs::NestedStructList::Fields::kD)), t.e));
+                MakeTagValuePair(TLV::ContextTag(to_underlying(Clusters::UnitTesting::Structs::NestedStructList::Fields::kD)),
+                                 t.e));
             NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
         }
 
@@ -842,7 +846,7 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidListType(nlTe
     // Decode
     //
     {
-        TestCluster::Structs::NestedStructList::DecodableType t;
+        Clusters::UnitTesting::Structs::NestedStructList::DecodableType t;
 
         _this->SetupReader();
 
@@ -863,7 +867,8 @@ void TestDataModelSerialization::TestDataModelSerialization_InvalidListType(nlTe
 }
 
 namespace {
-bool SimpleStructsEqual(const TestCluster::Structs::SimpleStruct::Type & s1, const TestCluster::Structs::SimpleStruct::Type & s2)
+bool SimpleStructsEqual(const Clusters::UnitTesting::Structs::SimpleStruct::Type & s1,
+                        const Clusters::UnitTesting::Structs::SimpleStruct::Type & s2)
 {
     return s1.a == s2.a && s1.b == s2.b && s1.c == s2.c && s1.d.data_equal(s2.d) && s1.e.data_equal(s2.e) && s1.f == s2.f;
 }
@@ -914,16 +919,17 @@ void TestDataModelSerialization::NullablesOptionalsEncodeDecodeCheck(nlTestSuite
 
     const char structStr[]      = "something";
     const uint8_t structBytes[] = { 1, 8, 17 };
-    TestCluster::Structs::SimpleStruct::Type myStruct;
+    Clusters::UnitTesting::Structs::SimpleStruct::Type myStruct;
     myStruct.a = 17;
     myStruct.b = true;
-    myStruct.c = TestCluster::SimpleEnum::kValueB;
+    myStruct.c = Clusters::UnitTesting::SimpleEnum::kValueB;
     myStruct.d = ByteSpan(structBytes);
     myStruct.e = CharSpan::fromCharString(structStr);
-    myStruct.f = TestCluster::SimpleBitmap(2);
+    myStruct.f = Clusters::UnitTesting::SimpleBitmap(2);
 
-    TestCluster::SimpleEnum enumListVals[] = { TestCluster::SimpleEnum::kValueA, TestCluster::SimpleEnum::kValueC };
-    DataModel::List enumList(enumListVals);
+    Clusters::UnitTesting::SimpleEnum enumListVals[] = { Clusters::UnitTesting::SimpleEnum::kValueA,
+                                                         Clusters::UnitTesting::SimpleEnum::kValueC };
+    DataModel::List enumList(enumListVals);
 
     // Encode
     {
@@ -1076,15 +1082,15 @@ void TestDataModelSerialization::NullablesOptionalsEncodeDecodeCheck(nlTestSuite
 
 void TestDataModelSerialization::NullablesOptionalsStruct(nlTestSuite * apSuite, void * apContext)
 {
-    using EncType = TestCluster::Structs::NullablesAndOptionalsStruct::Type;
-    using DecType = TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType;
+    using EncType = Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::Type;
+    using DecType = Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType;
     NullablesOptionalsEncodeDecodeCheck(apSuite, apContext);
 }
 
 void TestDataModelSerialization::NullablesOptionalsCommand(nlTestSuite * apSuite, void * apContext)
 {
-    using EncType = TestCluster::Commands::TestComplexNullableOptionalRequest::Type;
-    using DecType = TestCluster::Commands::TestComplexNullableOptionalRequest::DecodableType;
+    using EncType = Clusters::UnitTesting::Commands::TestComplexNullableOptionalRequest::Type;
+    using DecType = Clusters::UnitTesting::Commands::TestComplexNullableOptionalRequest::DecodableType;
     NullablesOptionalsEncodeDecodeCheck(apSuite, apContext);
 }
 
diff --git a/src/app/tests/TestWriteInteraction.cpp b/src/app/tests/TestWriteInteraction.cpp
index 6437b251cbf17f..d984b0c9e5dd07 100644
--- a/src/app/tests/TestWriteInteraction.cpp
+++ b/src/app/tests/TestWriteInteraction.cpp
@@ -382,7 +382,7 @@ void TestWriteInteraction::TestWriteRoundtripWithClusterObjects(nlTestSuite * ap
     const uint8_t byteSpanData[] = { 0xde, 0xad, 0xbe, 0xef };
     const char charSpanData[]    = "a simple test string";
 
-    app::Clusters::TestCluster::Structs::SimpleStruct::Type dataTx;
+    app::Clusters::UnitTesting::Structs::SimpleStruct::Type dataTx;
     dataTx.a = 12;
     dataTx.b = true;
     dataTx.d = chip::ByteSpan(byteSpanData);
@@ -402,7 +402,7 @@ void TestWriteInteraction::TestWriteRoundtripWithClusterObjects(nlTestSuite * ap
     NL_TEST_ASSERT(apSuite, callback.mOnSuccessCalled == 1);
 
     {
-        app::Clusters::TestCluster::Structs::SimpleStruct::Type dataRx;
+        app::Clusters::UnitTesting::Structs::SimpleStruct::Type dataRx;
         TLV::TLVReader reader;
         reader.Init(attributeDataTLV, attributeDataTLVLen);
         reader.Next();
@@ -447,7 +447,7 @@ void TestWriteInteraction::TestWriteRoundtripWithClusterObjectsVersionMatch(nlTe
     attributePathParams.mClusterId   = 3;
     attributePathParams.mAttributeId = 4;
 
-    DataModel::Nullable dataTx;
+    DataModel::Nullable dataTx;
 
     Optional version(kAcceptedDataVersion);
 
@@ -496,10 +496,10 @@ void TestWriteInteraction::TestWriteRoundtripWithClusterObjectsVersionMismatch(n
     attributePathParams.mClusterId   = 3;
     attributePathParams.mAttributeId = 4;
 
-    app::Clusters::TestCluster::Structs::SimpleStruct::Type dataTxValue;
+    app::Clusters::UnitTesting::Structs::SimpleStruct::Type dataTxValue;
     dataTxValue.a = 12;
     dataTxValue.b = true;
-    DataModel::Nullable dataTx;
+    DataModel::Nullable dataTx;
     dataTx.SetNonNull(dataTxValue);
     Optional version(kRejectedDataVersion);
     writeClient.EncodeAttribute(attributePathParams, dataTx, version);
diff --git a/src/app/tests/suites/TestCluster.yaml b/src/app/tests/suites/TestCluster.yaml
index e1ddaba5939780..f84068e7ba912e 100644
--- a/src/app/tests/suites/TestCluster.yaml
+++ b/src/app/tests/suites/TestCluster.yaml
@@ -16,7 +16,7 @@ name: Test Cluster Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestClusterComplexTypes.yaml b/src/app/tests/suites/TestClusterComplexTypes.yaml
index 9b88113ba57111..2044bf8ca75796 100644
--- a/src/app/tests/suites/TestClusterComplexTypes.yaml
+++ b/src/app/tests/suites/TestClusterComplexTypes.yaml
@@ -16,7 +16,7 @@ name: Test Cluster Complex Types Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestClusterMultiFabric.yaml b/src/app/tests/suites/TestClusterMultiFabric.yaml
index 6a1bef07b816b1..448fef86b9b38a 100644
--- a/src/app/tests/suites/TestClusterMultiFabric.yaml
+++ b/src/app/tests/suites/TestClusterMultiFabric.yaml
@@ -65,7 +65,7 @@ tests:
 
     - label: "Write TestFabricScoped list from alpha"
       identity: "alpha"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "writeAttribute"
       attribute: "list_fabric_scoped"
       arguments:
@@ -118,7 +118,7 @@ tests:
 
     - label: "Write TestFabricScoped list from beta"
       identity: "beta"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "writeAttribute"
       attribute: "list_fabric_scoped"
       arguments:
@@ -168,7 +168,7 @@ tests:
 
     - label: "Read back TestFabricScoped list from alpha"
       identity: "alpha"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       attribute: "list_fabric_scoped"
       response:
@@ -218,7 +218,7 @@ tests:
 
     - label: "Read back TestFabricScoped list from beta"
       identity: "beta"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       attribute: "list_fabric_scoped"
       response:
@@ -268,7 +268,7 @@ tests:
 
     - label: "Read back TestFabricScoped list from alpha (fabricFiltered false)"
       identity: "alpha"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       fabricFiltered: false
       attribute: "list_fabric_scoped"
@@ -366,7 +366,7 @@ tests:
 
     - label: "Read back TestFabricScoped list from beta (fabricFiltered false)"
       identity: "beta"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       fabricFiltered: false
       attribute: "list_fabric_scoped"
@@ -453,7 +453,7 @@ tests:
 
     - label: "Write smaller TestFabricScoped list from alpha (again)"
       identity: "alpha"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "writeAttribute"
       attribute: "list_fabric_scoped"
       arguments:
@@ -483,7 +483,7 @@ tests:
 
     - label: "Read back unchanged TestFabricScoped list from beta (again)"
       identity: "beta"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       attribute: "list_fabric_scoped"
       response:
@@ -533,7 +533,7 @@ tests:
 
     - label: "Read back TestFabricScoped list from alpha (again)"
       identity: "alpha"
-      cluster: "Test Cluster"
+      cluster: "Unit Testing"
       command: "readAttribute"
       attribute: "list_fabric_scoped"
       response:
diff --git a/src/app/tests/suites/TestConfigVariables.yaml b/src/app/tests/suites/TestConfigVariables.yaml
index eff8a39aaa106c..b8cc8def2e39c3 100644
--- a/src/app/tests/suites/TestConfigVariables.yaml
+++ b/src/app/tests/suites/TestConfigVariables.yaml
@@ -16,7 +16,7 @@ name: Test Cluster Config Variables Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
     arg1:
         type: int8u
diff --git a/src/app/tests/suites/TestConstraints.yaml b/src/app/tests/suites/TestConstraints.yaml
index 312e7b84a3f7cb..f96c8d1d2a513c 100644
--- a/src/app/tests/suites/TestConstraints.yaml
+++ b/src/app/tests/suites/TestConstraints.yaml
@@ -16,7 +16,7 @@ name: Test Cluster Constraints Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestDelayCommands.yaml b/src/app/tests/suites/TestDelayCommands.yaml
index 8e89bdfa68f85d..ee239900e16307 100644
--- a/src/app/tests/suites/TestDelayCommands.yaml
+++ b/src/app/tests/suites/TestDelayCommands.yaml
@@ -16,7 +16,7 @@ name: Delay Commands Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestEvents.yaml b/src/app/tests/suites/TestEvents.yaml
index 7c6592f32070bb..9fbdfb466fb6f6 100644
--- a/src/app/tests/suites/TestEvents.yaml
+++ b/src/app/tests/suites/TestEvents.yaml
@@ -16,7 +16,7 @@ name: Events Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestLogCommands.yaml b/src/app/tests/suites/TestLogCommands.yaml
index 8d9a1b61f5239a..c343b2eceb71d0 100644
--- a/src/app/tests/suites/TestLogCommands.yaml
+++ b/src/app/tests/suites/TestLogCommands.yaml
@@ -16,7 +16,7 @@ name: Log Commands Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/tests/suites/TestSaveAs.yaml b/src/app/tests/suites/TestSaveAs.yaml
index 8913168c3a6b59..efafc4cb4594a6 100644
--- a/src/app/tests/suites/TestSaveAs.yaml
+++ b/src/app/tests/suites/TestSaveAs.yaml
@@ -16,7 +16,7 @@ name: Test Cluster Tests
 
 config:
     nodeId: 0x12344321
-    cluster: "Test Cluster"
+    cluster: "Unit Testing"
     endpoint: 1
 
 tests:
diff --git a/src/app/zap-templates/zcl/data-model/chip/test-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/test-cluster.xml
index da8acf50bbd389..1da90ce642d11e 100644
--- a/src/app/zap-templates/zcl/data-model/chip/test-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/test-cluster.xml
@@ -138,9 +138,9 @@ limitations under the License.
     
   
     CHIP
-    Test Cluster
+    Unit Testing
     0xFFF1FC05
-    TEST_CLUSTER
+    UNIT_TESTING_CLUSTER
     The Test Cluster is meant to validate the generated code
     
     boolean
diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
index 971824a0081df5..625c15fb877e21 100644
--- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json
+++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
@@ -177,7 +177,7 @@
             "FeatureMap",
             "ThreadMetrics"
         ],
-        "Test Cluster": [
+        "Unit Testing": [
             "struct_attr",
             "nullable_struct",
             "general_error_boolean",
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index da4c1d78bd83c2..474ab92b9ac5a9 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -171,7 +171,7 @@
             "FeatureMap",
             "ThreadMetrics"
         ],
-        "Test Cluster": [
+        "Unit Testing": [
             "struct_attr",
             "nullable_struct",
             "general_error_boolean",
diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn
index 9403f04d34dd6e..2596b11333a7fa 100644
--- a/src/controller/data_model/BUILD.gn
+++ b/src/controller/data_model/BUILD.gn
@@ -163,8 +163,8 @@ if (current_os == "android") {
       "jni/AccountLoginClient-InvokeSubscribeImpl.cpp",
       "jni/ElectricalMeasurementClient-ReadImpl.cpp",
       "jni/ElectricalMeasurementClient-InvokeSubscribeImpl.cpp",
-      "jni/TestClusterClient-ReadImpl.cpp",
-      "jni/TestClusterClient-InvokeSubscribeImpl.cpp",
+      "jni/UnitTestingClient-ReadImpl.cpp",
+      "jni/UnitTestingClient-InvokeSubscribeImpl.cpp",
     ]
   }
 
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 628c92ec9038a3..a2b36324ea51af 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -4088,7 +4088,7 @@ client cluster ElectricalMeasurement = 2820 {
   readonly attribute int16u clusterRevision = 65533;
 }
 
-client cluster TestCluster = 4294048773 {
+client cluster UnitTesting = 4294048773 {
   enum SimpleEnum : ENUM8 {
     kUnspecified = 0;
     kValueA = 1;
@@ -4466,7 +4466,7 @@ endpoint 1 {
   binding cluster ApplicationBasic;
   binding cluster AccountLogin;
   binding cluster ElectricalMeasurement;
-  binding cluster TestCluster;
+  binding cluster UnitTesting;
 }
 
 
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index 54521003b8ec95..73ce6039c09532 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -17763,7 +17763,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
@@ -17951,7 +17951,7 @@
           ]
         },
         {
-          "name": "Test Cluster",
+          "name": "Unit Testing",
           "code": 4294048773,
           "mfgCode": null,
           "define": "TEST_CLUSTER",
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index ca7686c215c2d1..555e8280f40ba5 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -17089,8 +17089,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
         }
         break;
     }
-    case app::Clusters::TestCluster::Id: {
-        using namespace app::Clusters::TestCluster;
+    case app::Clusters::UnitTesting::Id: {
+        using namespace app::Clusters::UnitTesting;
         switch (aPath.mAttributeId)
         {
         case Attributes::Boolean::Id: {
@@ -17561,18 +17561,18 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                 jclass testListStructOctetStructClass_1;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterTestListStructOctet",
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterTestListStructOctet",
                     testListStructOctetStructClass_1);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterTestListStructOctet");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterTestListStructOctet");
                     return nullptr;
                 }
                 jmethodID testListStructOctetStructCtor_1 =
                     env->GetMethodID(testListStructOctetStructClass_1, "", "(Ljava/lang/Long;[B)V");
                 if (testListStructOctetStructCtor_1 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterTestListStructOctet constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterTestListStructOctet constructor");
                     return nullptr;
                 }
 
@@ -17837,10 +17837,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                     jclass simpleStructStructClass_3;
                     err = chip::JniReferences::GetInstance().GetClassRef(
-                        env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_3);
+                        env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_3);
                     if (err != CHIP_NO_ERROR)
                     {
-                        ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                        ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                         return nullptr;
                     }
                     jmethodID simpleStructStructCtor_3 =
@@ -17849,7 +17849,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                          "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                     if (simpleStructStructCtor_3 == nullptr)
                     {
-                        ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                        ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                         return nullptr;
                     }
 
@@ -17922,10 +17922,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                     jclass simpleStructStructClass_3;
                     err = chip::JniReferences::GetInstance().GetClassRef(
-                        env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_3);
+                        env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_3);
                     if (err != CHIP_NO_ERROR)
                     {
-                        ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                        ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                         return nullptr;
                     }
                     jmethodID simpleStructStructCtor_3 =
@@ -17934,7 +17934,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                          "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                     if (simpleStructStructCtor_3 == nullptr)
                     {
-                        ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                        ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                         return nullptr;
                     }
 
@@ -18022,10 +18022,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                         jclass simpleStructStructClass_4;
                         err = chip::JniReferences::GetInstance().GetClassRef(
-                            env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_4);
+                            env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_4);
                         if (err != CHIP_NO_ERROR)
                         {
-                            ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                            ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                             return nullptr;
                         }
                         jmethodID simpleStructStructCtor_4 =
@@ -18034,7 +18034,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                              "lang/Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                         if (simpleStructStructCtor_4 == nullptr)
                         {
-                            ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                            ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                             return nullptr;
                         }
 
@@ -18136,21 +18136,21 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                 jclass nullablesAndOptionalsStructStructClass_1;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterNullablesAndOptionalsStruct",
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct",
                     nullablesAndOptionalsStructStructClass_1);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterNullablesAndOptionalsStruct");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct");
                     return nullptr;
                 }
                 jmethodID nullablesAndOptionalsStructStructCtor_1 = env->GetMethodID(
                     nullablesAndOptionalsStructStructClass_1, "",
                     "(Ljava/lang/Integer;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;Ljava/util/Optional;Ljava/util/"
-                    "Optional;Lchip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;Ljava/util/Optional;Ljava/util/"
+                    "Optional;Lchip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;Ljava/util/Optional;Ljava/util/"
                     "Optional;Ljava/util/ArrayList;Ljava/util/Optional;Ljava/util/Optional;)V");
                 if (nullablesAndOptionalsStructStructCtor_1 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterNullablesAndOptionalsStruct constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct constructor");
                     return nullptr;
                 }
 
@@ -18228,10 +18228,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
             jclass simpleStructStructClass_0;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_0);
+                env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_0);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                 return nullptr;
             }
             jmethodID simpleStructStructCtor_0 =
@@ -18240,7 +18240,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                  "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
             if (simpleStructStructCtor_0 == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                 return nullptr;
             }
 
@@ -18470,10 +18470,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                 jclass simpleStructStructClass_2;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_2);
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_2);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                     return nullptr;
                 }
                 jmethodID simpleStructStructCtor_2 =
@@ -18482,7 +18482,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                      "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                 if (simpleStructStructCtor_2 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                     return nullptr;
                 }
 
@@ -18515,19 +18515,19 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                 jclass testFabricScopedStructClass_1;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterTestFabricScoped", testFabricScopedStructClass_1);
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterTestFabricScoped", testFabricScopedStructClass_1);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterTestFabricScoped");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterTestFabricScoped");
                     return nullptr;
                 }
                 jmethodID testFabricScopedStructCtor_1 = env->GetMethodID(
                     testFabricScopedStructClass_1, "",
                     "(Ljava/lang/Integer;Ljava/util/Optional;Ljava/lang/Integer;Ljava/util/Optional;Ljava/lang/String;Lchip/"
-                    "devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;Ljava/util/ArrayList;Ljava/lang/Integer;)V");
+                    "devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;Ljava/util/ArrayList;Ljava/lang/Integer;)V");
                 if (testFabricScopedStructCtor_1 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterTestFabricScoped constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterTestFabricScoped constructor");
                     return nullptr;
                 }
 
@@ -19268,10 +19268,10 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
 
                 jclass simpleStructStructClass_1;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_1);
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_1);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                     return nullptr;
                 }
                 jmethodID simpleStructStructCtor_1 =
@@ -19280,7 +19280,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
                                      "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                 if (simpleStructStructCtor_1 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                     return nullptr;
                 }
 
diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h
index f65429461182d1..2a1d813a06d313 100644
--- a/src/controller/java/zap-generated/CHIPCallbackTypes.h
+++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h
@@ -1774,192 +1774,192 @@ typedef void (*CHIPElectricalMeasurementClusterFeatureMapAttributeCallbackType)(
     void *, chip::app::Clusters::ElectricalMeasurement::Attributes::FeatureMap::TypeInfo::DecodableArgType);
 typedef void (*CHIPElectricalMeasurementClusterClusterRevisionAttributeCallbackType)(
     void *, chip::app::Clusters::ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterTestSpecificResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterTestAddArgumentsResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterTestListInt8UReverseResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterTestEnumsResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterTestNullableOptionalResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterBooleanResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterSimpleStructResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType &);
-typedef void (*CHIPTestClusterClusterTestEmitTestEventResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType &);
-
-typedef void (*CHIPTestClusterClusterBooleanAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Boolean::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterBitmap8AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Bitmap8::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterBitmap16AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Bitmap16::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterBitmap32AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Bitmap32::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterBitmap64AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Bitmap64::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt8uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int8u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt16uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int16u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt24uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int24u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt32uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int32u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt40uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int40u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt48uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int48u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt56uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int56u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt64uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int64u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt8sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int8s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt16sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int16s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt24sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int24s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt32sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int32s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt40sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int40s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt48sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int48s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt56sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int56s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterInt64sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Int64s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterEnum8AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Enum8::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterEnum16AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Enum16::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterFloatSingleAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::FloatSingle::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterFloatDoubleAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::FloatDouble::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterOctetStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::OctetString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterListInt8uAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListInt8u::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterListOctetStringAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListOctetString::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterListStructOctetStringAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterLongOctetStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::LongOctetString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterCharStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::CharString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterLongCharStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::LongCharString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterEpochUsAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::EpochUs::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterEpochSAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::EpochS::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterVendorIdAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::VendorId::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterListNullablesAndOptionalsStructAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterEnumAttrAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::EnumAttr::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterStructAttrAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::StructAttr::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterRangeRestrictedInt8uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterRangeRestrictedInt8sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterRangeRestrictedInt16uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterRangeRestrictedInt16sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterListLongOctetStringAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListLongOctetString::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterListFabricScopedAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::ListFabricScoped::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterTimedWriteBooleanAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::TimedWriteBoolean::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterGeneralErrorBooleanAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::GeneralErrorBoolean::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterClusterErrorBooleanAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::ClusterErrorBoolean::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterUnsupportedAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::Unsupported::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableBooleanAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableBoolean::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableBitmap8AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableBitmap8::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableBitmap16AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableBitmap16::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableBitmap32AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableBitmap32::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableBitmap64AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableBitmap64::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt8uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt8u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt16uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt16u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt24uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt24u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt32uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt32u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt40uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt40u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt48uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt48u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt56uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt56u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt64uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt64u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt8sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt8s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt16sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt16s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt24sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt24s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt32sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt32s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt40sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt40s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt48sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt48s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt56sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt56s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableInt64sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableInt64s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableEnum8AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableEnum8::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableEnum16AttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableEnum16::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableFloatSingleAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableFloatSingle::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableFloatDoubleAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableFloatDouble::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableOctetStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableOctetString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableCharStringAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableCharString::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableEnumAttrAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableEnumAttr::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableStructAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableStruct::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableRangeRestrictedInt8uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableRangeRestrictedInt8sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableRangeRestrictedInt16uAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterNullableRangeRestrictedInt16sAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterGeneratedCommandListAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::GeneratedCommandList::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterAcceptedCommandListAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::AcceptedCommandList::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterAttributeListAttributeCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Attributes::AttributeList::TypeInfo::DecodableType &);
-typedef void (*CHIPTestClusterClusterFeatureMapAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::FeatureMap::TypeInfo::DecodableArgType);
-typedef void (*CHIPTestClusterClusterClusterRevisionAttributeCallbackType)(
-    void *, chip::app::Clusters::TestCluster::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterTestSpecificResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTestAddArgumentsResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTestListInt8UReverseResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTestEnumsResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTestNullableOptionalResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterBooleanResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterSimpleStructResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTestEmitTestEventResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType &);
+
+typedef void (*CHIPUnitTestingClusterBooleanAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Boolean::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterBitmap8AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Bitmap8::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterBitmap16AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Bitmap16::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterBitmap32AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Bitmap32::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterBitmap64AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Bitmap64::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt8uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int8u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt16uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int16u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt24uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int24u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt32uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int32u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt40uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int40u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt48uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int48u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt56uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int56u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt64uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int64u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt8sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int8s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt16sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int16s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt24sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int24s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt32sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int32s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt40sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int40s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt48sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int48s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt56sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int56s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterInt64sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Int64s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterEnum8AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Enum8::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterEnum16AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Enum16::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterFloatSingleAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::FloatSingle::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterFloatDoubleAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::FloatDouble::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterOctetStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::OctetString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterListInt8uAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterListOctetStringAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListOctetString::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterListStructOctetStringAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterLongOctetStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::LongOctetString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterCharStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::CharString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterLongCharStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::LongCharString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterEpochUsAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::EpochUs::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterEpochSAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::EpochS::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterVendorIdAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::VendorId::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterListNullablesAndOptionalsStructAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterEnumAttrAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::EnumAttr::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterStructAttrAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::StructAttr::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterRangeRestrictedInt8uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterRangeRestrictedInt8sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterRangeRestrictedInt16uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterRangeRestrictedInt16sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterListLongOctetStringAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListLongOctetString::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterListFabricScopedAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::ListFabricScoped::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterTimedWriteBooleanAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::TimedWriteBoolean::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterGeneralErrorBooleanAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterClusterErrorBooleanAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterUnsupportedAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::Unsupported::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableBooleanAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableBoolean::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableBitmap8AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableBitmap8::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableBitmap16AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableBitmap16::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableBitmap32AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableBitmap32::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableBitmap64AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableBitmap64::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt8uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt8u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt16uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt16u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt24uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt24u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt32uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt32u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt40uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt40u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt48uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt48u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt56uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt56u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt64uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt64u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt8sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt8s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt16sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt16s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt24sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt24s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt32sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt32s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt40sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt40s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt48sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt48s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt56sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt56s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableInt64sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableInt64s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableEnum8AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableEnum8::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableEnum16AttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableEnum16::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableFloatSingleAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableFloatSingle::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableFloatDoubleAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableFloatDouble::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableOctetStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableOctetString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableCharStringAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableCharString::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableEnumAttrAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableEnumAttr::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableStructAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableStruct::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableRangeRestrictedInt8uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableRangeRestrictedInt8sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableRangeRestrictedInt16uAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterNullableRangeRestrictedInt16sAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterGeneratedCommandListAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::GeneratedCommandList::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterAcceptedCommandListAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::AcceptedCommandList::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterAttributeListAttributeCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Attributes::AttributeList::TypeInfo::DecodableType &);
+typedef void (*CHIPUnitTestingClusterFeatureMapAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::FeatureMap::TypeInfo::DecodableArgType);
+typedef void (*CHIPUnitTestingClusterClusterRevisionAttributeCallbackType)(
+    void *, chip::app::Clusters::UnitTesting::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
diff --git a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
index 676bd63cac2034..8fa0e3d7020618 100644
--- a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
@@ -5151,12 +5151,12 @@ JNI_METHOD(void, ContentLauncherCluster, writeSupportedStreamingProtocolsAttribu
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeBooleanAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeBooleanAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Boolean::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Boolean::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5178,7 +5178,7 @@ JNI_METHOD(void, TestClusterCluster, writeBooleanAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5203,12 +5203,12 @@ JNI_METHOD(void, TestClusterCluster, writeBooleanAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeBitmap8Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeBitmap8Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Bitmap8::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Bitmap8::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5230,7 +5230,7 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap8Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5255,12 +5255,12 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap8Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeBitmap16Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeBitmap16Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Bitmap16::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Bitmap16::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5282,7 +5282,7 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap16Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5307,12 +5307,12 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap16Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeBitmap32Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeBitmap32Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Bitmap32::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Bitmap32::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5333,7 +5333,7 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap32Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5358,12 +5358,12 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap32Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeBitmap64Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeBitmap64Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Bitmap64::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Bitmap64::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5384,7 +5384,7 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap64Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5409,12 +5409,12 @@ JNI_METHOD(void, TestClusterCluster, writeBitmap64Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt8uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt8uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int8u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int8u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5436,7 +5436,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt8uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5461,12 +5461,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt8uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt16uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt16uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int16u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int16u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5488,7 +5488,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt16uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5513,12 +5513,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt16uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt24uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt24uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int24u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int24u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5539,7 +5539,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt24uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5564,12 +5564,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt24uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt32uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt32uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int32u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int32u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5590,7 +5590,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt32uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5615,12 +5615,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt32uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt40uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt40uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int40u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int40u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5641,7 +5641,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt40uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5666,12 +5666,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt40uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt48uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt48uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int48u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int48u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5692,7 +5692,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt48uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5717,12 +5717,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt48uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt56uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt56uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int56u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int56u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5743,7 +5743,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt56uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5768,12 +5768,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt56uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt64uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt64uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int64u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int64u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5794,7 +5794,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt64uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5819,12 +5819,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt64uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt8sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt8sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int8s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int8s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5846,7 +5846,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt8sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5871,12 +5871,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt8sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt16sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt16sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int16s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int16s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5898,7 +5898,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt16sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5923,12 +5923,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt16sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt24sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt24sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int24s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int24s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -5949,7 +5949,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt24sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -5974,12 +5974,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt24sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt32sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt32sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int32s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int32s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6000,7 +6000,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt32sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6025,12 +6025,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt32sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt40sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt40sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int40s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int40s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6051,7 +6051,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt40sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6076,12 +6076,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt40sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt48sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt48sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int48s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int48s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6102,7 +6102,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt48sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6127,12 +6127,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt48sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt56sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt56sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int56s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int56s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6153,7 +6153,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt56sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6178,12 +6178,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt56sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeInt64sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeInt64sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Int64s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Int64s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6204,7 +6204,7 @@ JNI_METHOD(void, TestClusterCluster, writeInt64sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6229,12 +6229,12 @@ JNI_METHOD(void, TestClusterCluster, writeInt64sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeEnum8Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeEnum8Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Enum8::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Enum8::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6256,7 +6256,7 @@ JNI_METHOD(void, TestClusterCluster, writeEnum8Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6281,12 +6281,12 @@ JNI_METHOD(void, TestClusterCluster, writeEnum8Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeEnum16Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeEnum16Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Enum16::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Enum16::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6308,7 +6308,7 @@ JNI_METHOD(void, TestClusterCluster, writeEnum16Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6333,12 +6333,12 @@ JNI_METHOD(void, TestClusterCluster, writeEnum16Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeFloatSingleAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeFloatSingleAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::FloatSingle::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::FloatSingle::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6359,7 +6359,7 @@ JNI_METHOD(void, TestClusterCluster, writeFloatSingleAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6384,12 +6384,12 @@ JNI_METHOD(void, TestClusterCluster, writeFloatSingleAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeFloatDoubleAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeFloatDoubleAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::FloatDouble::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::FloatDouble::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6411,7 +6411,7 @@ JNI_METHOD(void, TestClusterCluster, writeFloatDoubleAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6436,12 +6436,12 @@ JNI_METHOD(void, TestClusterCluster, writeFloatDoubleAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jbyteArray value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::OctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::OctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6463,7 +6463,7 @@ JNI_METHOD(void, TestClusterCluster, writeOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6488,12 +6488,12 @@ JNI_METHOD(void, TestClusterCluster, writeOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListInt8uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListInt8uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListInt8u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListInt8u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6537,7 +6537,7 @@ JNI_METHOD(void, TestClusterCluster, writeListInt8uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6562,12 +6562,12 @@ JNI_METHOD(void, TestClusterCluster, writeListInt8uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jbyteArray value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListOctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListOctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6612,7 +6612,7 @@ JNI_METHOD(void, TestClusterCluster, writeListOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6637,12 +6637,12 @@ JNI_METHOD(void, TestClusterCluster, writeListOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListStructOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListStructOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListStructOctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6694,7 +6694,7 @@ JNI_METHOD(void, TestClusterCluster, writeListStructOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6719,12 +6719,12 @@ JNI_METHOD(void, TestClusterCluster, writeListStructOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeLongOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeLongOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jbyteArray value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::LongOctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::LongOctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6746,7 +6746,7 @@ JNI_METHOD(void, TestClusterCluster, writeLongOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6771,12 +6771,12 @@ JNI_METHOD(void, TestClusterCluster, writeLongOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeCharStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeCharStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jstring value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::CharString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::CharString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6798,7 +6798,7 @@ JNI_METHOD(void, TestClusterCluster, writeCharStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6823,12 +6823,12 @@ JNI_METHOD(void, TestClusterCluster, writeCharStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeLongCharStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeLongCharStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jstring value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::LongCharString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::LongCharString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6850,7 +6850,7 @@ JNI_METHOD(void, TestClusterCluster, writeLongCharStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6875,12 +6875,12 @@ JNI_METHOD(void, TestClusterCluster, writeLongCharStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeEpochUsAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeEpochUsAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::EpochUs::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::EpochUs::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6901,7 +6901,7 @@ JNI_METHOD(void, TestClusterCluster, writeEpochUsAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6926,12 +6926,12 @@ JNI_METHOD(void, TestClusterCluster, writeEpochUsAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeEpochSAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeEpochSAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::EpochS::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::EpochS::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -6952,7 +6952,7 @@ JNI_METHOD(void, TestClusterCluster, writeEpochSAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -6977,12 +6977,12 @@ JNI_METHOD(void, TestClusterCluster, writeEpochSAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeVendorIdAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeVendorIdAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::VendorId::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::VendorId::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7004,7 +7004,7 @@ JNI_METHOD(void, TestClusterCluster, writeVendorIdAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7029,12 +7029,12 @@ JNI_METHOD(void, TestClusterCluster, writeVendorIdAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListNullablesAndOptionalsStructAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListNullablesAndOptionalsStructAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7157,7 +7157,7 @@ JNI_METHOD(void, TestClusterCluster, writeListNullablesAndOptionalsStructAttribu
                 }
                 jobject element_0_nullableStructItem_1;
                 chip::JniReferences::GetInstance().GetObjectField(
-                    element_0, "nullableStruct", "Lchip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;",
+                    element_0, "nullableStruct", "Lchip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;",
                     element_0_nullableStructItem_1);
                 if (element_0_nullableStructItem_1 == nullptr)
                 {
@@ -7463,7 +7463,7 @@ JNI_METHOD(void, TestClusterCluster, writeListNullablesAndOptionalsStructAttribu
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7488,12 +7488,12 @@ JNI_METHOD(void, TestClusterCluster, writeListNullablesAndOptionalsStructAttribu
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeEnumAttrAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeEnumAttrAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::EnumAttr::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::EnumAttr::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7515,7 +7515,7 @@ JNI_METHOD(void, TestClusterCluster, writeEnumAttrAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7540,12 +7540,12 @@ JNI_METHOD(void, TestClusterCluster, writeEnumAttrAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeRangeRestrictedInt8uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7567,7 +7567,7 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7592,12 +7592,12 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeRangeRestrictedInt8sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7619,7 +7619,7 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7644,12 +7644,12 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt8sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeRangeRestrictedInt16uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7671,7 +7671,7 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7696,12 +7696,12 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeRangeRestrictedInt16sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7723,7 +7723,7 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7748,12 +7748,12 @@ JNI_METHOD(void, TestClusterCluster, writeRangeRestrictedInt16sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListLongOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListLongOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jbyteArray value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListLongOctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListLongOctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7798,7 +7798,7 @@ JNI_METHOD(void, TestClusterCluster, writeListLongOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -7823,12 +7823,12 @@ JNI_METHOD(void, TestClusterCluster, writeListLongOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeListFabricScopedAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeListFabricScopedAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ListFabricScoped::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ListFabricScoped::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -7914,7 +7914,7 @@ JNI_METHOD(void, TestClusterCluster, writeListFabricScopedAttribute)
                 listHolder_0->mList[i_0].fabricSensitiveCharString = cleanupStrings.back()->charSpan();
                 jobject element_0_fabricSensitiveStructItem_1;
                 chip::JniReferences::GetInstance().GetObjectField(
-                    element_0, "fabricSensitiveStruct", "Lchip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;",
+                    element_0, "fabricSensitiveStruct", "Lchip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;",
                     element_0_fabricSensitiveStructItem_1);
                 jobject element_0_fabricSensitiveStructItem_1_aItem_2;
                 chip::JniReferences::GetInstance().GetObjectField(element_0_fabricSensitiveStructItem_1, "a", "Ljava/lang/Integer;",
@@ -8022,7 +8022,7 @@ JNI_METHOD(void, TestClusterCluster, writeListFabricScopedAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8047,12 +8047,12 @@ JNI_METHOD(void, TestClusterCluster, writeListFabricScopedAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeTimedWriteBooleanAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeTimedWriteBooleanAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::TimedWriteBoolean::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8074,7 +8074,7 @@ JNI_METHOD(void, TestClusterCluster, writeTimedWriteBooleanAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8092,12 +8092,12 @@ JNI_METHOD(void, TestClusterCluster, writeTimedWriteBooleanAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeGeneralErrorBooleanAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeGeneralErrorBooleanAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::GeneralErrorBoolean::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8119,7 +8119,7 @@ JNI_METHOD(void, TestClusterCluster, writeGeneralErrorBooleanAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8144,12 +8144,12 @@ JNI_METHOD(void, TestClusterCluster, writeGeneralErrorBooleanAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeClusterErrorBooleanAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeClusterErrorBooleanAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::ClusterErrorBoolean::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8171,7 +8171,7 @@ JNI_METHOD(void, TestClusterCluster, writeClusterErrorBooleanAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8196,12 +8196,12 @@ JNI_METHOD(void, TestClusterCluster, writeClusterErrorBooleanAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeUnsupportedAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeUnsupportedAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::Unsupported::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::Unsupported::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8223,7 +8223,7 @@ JNI_METHOD(void, TestClusterCluster, writeUnsupportedAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8248,12 +8248,12 @@ JNI_METHOD(void, TestClusterCluster, writeUnsupportedAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableBooleanAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableBooleanAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableBoolean::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableBoolean::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8283,7 +8283,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBooleanAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8308,12 +8308,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBooleanAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableBitmap8Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableBitmap8Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableBitmap8::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableBitmap8::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8343,7 +8343,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap8Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8368,12 +8368,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap8Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableBitmap16Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableBitmap16Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableBitmap16::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableBitmap16::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8403,7 +8403,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap16Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8428,12 +8428,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap16Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableBitmap32Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableBitmap32Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableBitmap32::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableBitmap32::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8463,7 +8463,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap32Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8488,12 +8488,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap32Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableBitmap64Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableBitmap64Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableBitmap64::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableBitmap64::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8523,7 +8523,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap64Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8548,12 +8548,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableBitmap64Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt8uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt8uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt8u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt8u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8583,7 +8583,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt8uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8608,12 +8608,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt8uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt16uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt16uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt16u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt16u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8643,7 +8643,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt16uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8668,12 +8668,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt16uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt24uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt24uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt24u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt24u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8703,7 +8703,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt24uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8728,12 +8728,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt24uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt32uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt32uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt32u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt32u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8763,7 +8763,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt32uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8788,12 +8788,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt32uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt40uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt40uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt40u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt40u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8823,7 +8823,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt40uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8848,12 +8848,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt40uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt48uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt48uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt48u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt48u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8883,7 +8883,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt48uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8908,12 +8908,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt48uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt56uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt56uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt56u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt56u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -8943,7 +8943,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt56uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -8968,12 +8968,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt56uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt64uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt64uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt64u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt64u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9003,7 +9003,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt64uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9028,12 +9028,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt64uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt8sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt8sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt8s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt8s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9063,7 +9063,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt8sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9088,12 +9088,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt8sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt16sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt16sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt16s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt16s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9123,7 +9123,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt16sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9148,12 +9148,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt16sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt24sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt24sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt24s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt24s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9183,7 +9183,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt24sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9208,12 +9208,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt24sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt32sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt32sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt32s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt32s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9243,7 +9243,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt32sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9268,12 +9268,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt32sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt40sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt40sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt40s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt40s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9303,7 +9303,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt40sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9328,12 +9328,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt40sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt48sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt48sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt48s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt48s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9363,7 +9363,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt48sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9388,12 +9388,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt48sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt56sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt56sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt56s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt56s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9423,7 +9423,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt56sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9448,12 +9448,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt56sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableInt64sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableInt64sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableInt64s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableInt64s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9483,7 +9483,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt64sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9508,12 +9508,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableInt64sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableEnum8Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableEnum8Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableEnum8::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableEnum8::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9543,7 +9543,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnum8Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9568,12 +9568,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnum8Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableEnum16Attribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableEnum16Attribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableEnum16::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableEnum16::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9603,7 +9603,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnum16Attribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9628,12 +9628,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnum16Attribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableFloatSingleAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableFloatSingleAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableFloatSingle::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9663,7 +9663,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableFloatSingleAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9688,12 +9688,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableFloatSingleAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableFloatDoubleAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableFloatDoubleAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableFloatDouble::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9723,7 +9723,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableFloatDoubleAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9748,12 +9748,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableFloatDoubleAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableOctetStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableOctetStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jbyteArray value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableOctetString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableOctetString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9783,7 +9783,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableOctetStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9808,12 +9808,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableOctetStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableCharStringAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableCharStringAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jstring value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableCharString::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableCharString::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9843,7 +9843,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableCharStringAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9868,12 +9868,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableCharStringAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableEnumAttrAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableEnumAttrAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableEnumAttr::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9903,7 +9903,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnumAttrAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9928,12 +9928,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableEnumAttrAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableRangeRestrictedInt8uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -9963,7 +9963,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8uAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -9988,12 +9988,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8uAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableRangeRestrictedInt8sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -10023,7 +10023,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8sAttribute)
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -10048,12 +10048,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt8sAttribute)
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt16uAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableRangeRestrictedInt16uAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -10083,7 +10083,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt16uAttribute
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -10108,12 +10108,12 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt16uAttribute
     onFailure.release();
 }
 
-JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt16sAttribute)
+JNI_METHOD(void, UnitTestingCluster, writeNullableRangeRestrictedInt16sAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+    using TypeInfo = chip::app::Clusters::UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector> cleanupByteArrays;
@@ -10143,7 +10143,7 @@ JNI_METHOD(void, TestClusterCluster, writeNullableRangeRestrictedInt16sAttribute
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
     CHIP_ERROR err                  = CHIP_NO_ERROR;
-    TestClusterCluster * cppCluster = reinterpret_cast(clusterPtr);
+    UnitTestingCluster * cppCluster = reinterpret_cast(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index fcdb5b536f65a1..cea5d480a81416 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -3255,8 +3255,8 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
         }
         break;
     }
-    case app::Clusters::TestCluster::Id: {
-        using namespace app::Clusters::TestCluster;
+    case app::Clusters::UnitTesting::Id: {
+        using namespace app::Clusters::UnitTesting;
         switch (aPath.mEventId)
         {
         case Events::TestEvent::Id: {
@@ -3326,10 +3326,10 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
 
             jclass simpleStructStructClass_0;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_0);
+                env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_0);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                 return nullptr;
             }
             jmethodID simpleStructStructCtor_0 =
@@ -3338,7 +3338,7 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
                                  "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
             if (simpleStructStructCtor_0 == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                 return nullptr;
             }
 
@@ -3394,10 +3394,10 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
 
                 jclass simpleStructStructClass_1;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_1);
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_1);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                     return nullptr;
                 }
                 jmethodID simpleStructStructCtor_1 =
@@ -3406,7 +3406,7 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
                                      "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                 if (simpleStructStructCtor_1 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                     return nullptr;
                 }
 
@@ -3433,19 +3433,19 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
 
             jclass testEventStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$TestClusterClusterTestEventEvent", testEventStructClass);
+                env, "chip/devicecontroller/ChipEventStructs$UnitTestingClusterTestEventEvent", testEventStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$TestClusterClusterTestEventEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$UnitTestingClusterTestEventEvent");
                 return nullptr;
             }
             jmethodID testEventStructCtor =
                 env->GetMethodID(testEventStructClass, "",
                                  "(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;Lchip/devicecontroller/"
-                                 "ChipStructs$TestClusterClusterSimpleStruct;Ljava/util/ArrayList;Ljava/util/ArrayList;)V");
+                                 "ChipStructs$UnitTestingClusterSimpleStruct;Ljava/util/ArrayList;Ljava/util/ArrayList;)V");
             if (testEventStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$TestClusterClusterTestEventEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$UnitTestingClusterTestEventEvent constructor");
                 return nullptr;
             }
 
@@ -3470,18 +3470,18 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
 
             jclass testFabricScopedEventStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$TestClusterClusterTestFabricScopedEventEvent",
+                env, "chip/devicecontroller/ChipEventStructs$UnitTestingClusterTestFabricScopedEventEvent",
                 testFabricScopedEventStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$TestClusterClusterTestFabricScopedEventEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$UnitTestingClusterTestFabricScopedEventEvent");
                 return nullptr;
             }
             jmethodID testFabricScopedEventStructCtor =
                 env->GetMethodID(testFabricScopedEventStructClass, "", "(Ljava/lang/Integer;)V");
             if (testFabricScopedEventStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$TestClusterClusterTestFabricScopedEventEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$UnitTestingClusterTestFabricScopedEventEvent constructor");
                 return nullptr;
             }
 
diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
index 32ae5c41b17ca7..08eaadcb710a3d 100644
--- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
@@ -3723,8 +3723,8 @@ void CHIPAccountLoginClusterGetSetupPINResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, setupPIN);
 }
-CHIPTestClusterClusterTestSpecificResponseCallback::CHIPTestClusterClusterTestSpecificResponseCallback(jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+CHIPUnitTestingClusterTestSpecificResponseCallback::CHIPUnitTestingClusterTestSpecificResponseCallback(jobject javaCallback) :
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3740,7 +3740,7 @@ CHIPTestClusterClusterTestSpecificResponseCallback::CHIPTestClusterClusterTestSp
     }
 }
 
-CHIPTestClusterClusterTestSpecificResponseCallback::~CHIPTestClusterClusterTestSpecificResponseCallback()
+CHIPUnitTestingClusterTestSpecificResponseCallback::~CHIPUnitTestingClusterTestSpecificResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3751,8 +3751,8 @@ CHIPTestClusterClusterTestSpecificResponseCallback::~CHIPTestClusterClusterTestS
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestSpecificResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestSpecificResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -3762,10 +3762,10 @@ void CHIPTestClusterClusterTestSpecificResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -3783,9 +3783,9 @@ void CHIPTestClusterClusterTestSpecificResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, returnValue);
 }
-CHIPTestClusterClusterTestAddArgumentsResponseCallback::CHIPTestClusterClusterTestAddArgumentsResponseCallback(
+CHIPUnitTestingClusterTestAddArgumentsResponseCallback::CHIPUnitTestingClusterTestAddArgumentsResponseCallback(
     jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3801,7 +3801,7 @@ CHIPTestClusterClusterTestAddArgumentsResponseCallback::CHIPTestClusterClusterTe
     }
 }
 
-CHIPTestClusterClusterTestAddArgumentsResponseCallback::~CHIPTestClusterClusterTestAddArgumentsResponseCallback()
+CHIPUnitTestingClusterTestAddArgumentsResponseCallback::~CHIPUnitTestingClusterTestAddArgumentsResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3812,8 +3812,8 @@ CHIPTestClusterClusterTestAddArgumentsResponseCallback::~CHIPTestClusterClusterT
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestAddArgumentsResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestAddArgumentsResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -3823,10 +3823,10 @@ void CHIPTestClusterClusterTestAddArgumentsResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -3844,9 +3844,9 @@ void CHIPTestClusterClusterTestAddArgumentsResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, returnValue);
 }
-CHIPTestClusterClusterTestListInt8UReverseResponseCallback::CHIPTestClusterClusterTestListInt8UReverseResponseCallback(
+CHIPUnitTestingClusterTestListInt8UReverseResponseCallback::CHIPUnitTestingClusterTestListInt8UReverseResponseCallback(
     jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3862,7 +3862,7 @@ CHIPTestClusterClusterTestListInt8UReverseResponseCallback::CHIPTestClusterClust
     }
 }
 
-CHIPTestClusterClusterTestListInt8UReverseResponseCallback::~CHIPTestClusterClusterTestListInt8UReverseResponseCallback()
+CHIPUnitTestingClusterTestListInt8UReverseResponseCallback::~CHIPUnitTestingClusterTestListInt8UReverseResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3873,8 +3873,8 @@ CHIPTestClusterClusterTestListInt8UReverseResponseCallback::~CHIPTestClusterClus
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestListInt8UReverseResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestListInt8UReverseResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -3884,10 +3884,10 @@ void CHIPTestClusterClusterTestListInt8UReverseResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -3914,8 +3914,8 @@ void CHIPTestClusterClusterTestListInt8UReverseResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, arg1);
 }
-CHIPTestClusterClusterTestEnumsResponseCallback::CHIPTestClusterClusterTestEnumsResponseCallback(jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+CHIPUnitTestingClusterTestEnumsResponseCallback::CHIPUnitTestingClusterTestEnumsResponseCallback(jobject javaCallback) :
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3931,7 +3931,7 @@ CHIPTestClusterClusterTestEnumsResponseCallback::CHIPTestClusterClusterTestEnums
     }
 }
 
-CHIPTestClusterClusterTestEnumsResponseCallback::~CHIPTestClusterClusterTestEnumsResponseCallback()
+CHIPUnitTestingClusterTestEnumsResponseCallback::~CHIPUnitTestingClusterTestEnumsResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3942,8 +3942,8 @@ CHIPTestClusterClusterTestEnumsResponseCallback::~CHIPTestClusterClusterTestEnum
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestEnumsResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestEnumsResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -3953,9 +3953,9 @@ void CHIPTestClusterClusterTestEnumsResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -3979,9 +3979,9 @@ void CHIPTestClusterClusterTestEnumsResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, arg1, arg2);
 }
-CHIPTestClusterClusterTestNullableOptionalResponseCallback::CHIPTestClusterClusterTestNullableOptionalResponseCallback(
+CHIPUnitTestingClusterTestNullableOptionalResponseCallback::CHIPUnitTestingClusterTestNullableOptionalResponseCallback(
     jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -3997,7 +3997,7 @@ CHIPTestClusterClusterTestNullableOptionalResponseCallback::CHIPTestClusterClust
     }
 }
 
-CHIPTestClusterClusterTestNullableOptionalResponseCallback::~CHIPTestClusterClusterTestNullableOptionalResponseCallback()
+CHIPUnitTestingClusterTestNullableOptionalResponseCallback::~CHIPUnitTestingClusterTestNullableOptionalResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4008,8 +4008,8 @@ CHIPTestClusterClusterTestNullableOptionalResponseCallback::~CHIPTestClusterClus
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestNullableOptionalResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestNullableOptionalResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4019,10 +4019,10 @@ void CHIPTestClusterClusterTestNullableOptionalResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -4094,8 +4094,8 @@ void CHIPTestClusterClusterTestNullableOptionalResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, wasPresent, wasNull, value, originalValue);
 }
-CHIPTestClusterClusterBooleanResponseCallback::CHIPTestClusterClusterBooleanResponseCallback(jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+CHIPUnitTestingClusterBooleanResponseCallback::CHIPUnitTestingClusterBooleanResponseCallback(jobject javaCallback) :
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4111,7 +4111,7 @@ CHIPTestClusterClusterBooleanResponseCallback::CHIPTestClusterClusterBooleanResp
     }
 }
 
-CHIPTestClusterClusterBooleanResponseCallback::~CHIPTestClusterClusterBooleanResponseCallback()
+CHIPUnitTestingClusterBooleanResponseCallback::~CHIPUnitTestingClusterBooleanResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4122,8 +4122,8 @@ CHIPTestClusterClusterBooleanResponseCallback::~CHIPTestClusterClusterBooleanRes
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterBooleanResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterBooleanResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4133,9 +4133,9 @@ void CHIPTestClusterClusterBooleanResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -4153,8 +4153,8 @@ void CHIPTestClusterClusterBooleanResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, value);
 }
-CHIPTestClusterClusterSimpleStructResponseCallback::CHIPTestClusterClusterSimpleStructResponseCallback(jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+CHIPUnitTestingClusterSimpleStructResponseCallback::CHIPUnitTestingClusterSimpleStructResponseCallback(jobject javaCallback) :
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4170,7 +4170,7 @@ CHIPTestClusterClusterSimpleStructResponseCallback::CHIPTestClusterClusterSimple
     }
 }
 
-CHIPTestClusterClusterSimpleStructResponseCallback::~CHIPTestClusterClusterSimpleStructResponseCallback()
+CHIPUnitTestingClusterSimpleStructResponseCallback::~CHIPUnitTestingClusterSimpleStructResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4181,8 +4181,8 @@ CHIPTestClusterClusterSimpleStructResponseCallback::~CHIPTestClusterClusterSimpl
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterSimpleStructResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4192,10 +4192,10 @@ void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
@@ -4203,7 +4203,7 @@ void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
     VerifyOrReturn(javaCallbackRef != nullptr);
 
     err = JniReferences::GetInstance().FindMethod(
-        env, javaCallbackRef, "onSuccess", "(Lchip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;)V", &javaMethod);
+        env, javaCallbackRef, "onSuccess", "(Lchip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;)V", &javaMethod);
     VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error invoking Java callback: %s", ErrorStr(err)));
 
     jobject arg1;
@@ -4246,11 +4246,11 @@ void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
                                                                  dataResponse.arg1.h, arg1_h);
 
     jclass simpleStructStructClass_0;
-    err = chip::JniReferences::GetInstance().GetClassRef(env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct",
+    err = chip::JniReferences::GetInstance().GetClassRef(env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct",
                                                          simpleStructStructClass_0);
     if (err != CHIP_NO_ERROR)
     {
-        ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+        ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
         return;
     }
     jmethodID simpleStructStructCtor_0 = env->GetMethodID(simpleStructStructClass_0, "",
@@ -4258,7 +4258,7 @@ void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
                                                           "String;Ljava/lang/Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
     if (simpleStructStructCtor_0 == nullptr)
     {
-        ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+        ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
         return;
     }
 
@@ -4267,9 +4267,9 @@ void CHIPTestClusterClusterSimpleStructResponseCallback::CallbackFn(
 
     env->CallVoidMethod(javaCallbackRef, javaMethod, arg1);
 }
-CHIPTestClusterClusterTestEmitTestEventResponseCallback::CHIPTestClusterClusterTestEmitTestEventResponseCallback(
+CHIPUnitTestingClusterTestEmitTestEventResponseCallback::CHIPUnitTestingClusterTestEmitTestEventResponseCallback(
     jobject javaCallback) :
-    Callback::Callback(CallbackFn, this)
+    Callback::Callback(CallbackFn, this)
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4285,7 +4285,7 @@ CHIPTestClusterClusterTestEmitTestEventResponseCallback::CHIPTestClusterClusterT
     }
 }
 
-CHIPTestClusterClusterTestEmitTestEventResponseCallback::~CHIPTestClusterClusterTestEmitTestEventResponseCallback()
+CHIPUnitTestingClusterTestEmitTestEventResponseCallback::~CHIPUnitTestingClusterTestEmitTestEventResponseCallback()
 {
     JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4296,8 +4296,8 @@ CHIPTestClusterClusterTestEmitTestEventResponseCallback::~CHIPTestClusterCluster
     env->DeleteGlobalRef(javaCallbackRef);
 };
 
-void CHIPTestClusterClusterTestEmitTestEventResponseCallback::CallbackFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType & dataResponse)
+void CHIPUnitTestingClusterTestEmitTestEventResponseCallback::CallbackFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & dataResponse)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4307,10 +4307,10 @@ void CHIPTestClusterClusterTestEmitTestEventResponseCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
 
-    std::unique_ptr
-        cppCallback(reinterpret_cast(context),
-                    chip::Platform::Delete);
+    std::unique_ptr
+        cppCallback(reinterpret_cast(context),
+                    chip::Platform::Delete);
     VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
 
     javaCallbackRef = cppCallback->javaCallbackRef;
diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.h b/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
index 48ed9d967954c9..4605d5f20dbb1f 100644
--- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
@@ -597,119 +597,119 @@ class CHIPAccountLoginClusterGetSetupPINResponseCallback
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestSpecificResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestSpecificResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestSpecificResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestSpecificResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestSpecificResponseCallback();
+    ~CHIPUnitTestingClusterTestSpecificResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestAddArgumentsResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestAddArgumentsResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestAddArgumentsResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestAddArgumentsResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestAddArgumentsResponseCallback();
+    ~CHIPUnitTestingClusterTestAddArgumentsResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestListInt8UReverseResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestListInt8UReverseResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestListInt8UReverseResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestListInt8UReverseResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestListInt8UReverseResponseCallback();
+    ~CHIPUnitTestingClusterTestListInt8UReverseResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestEnumsResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestEnumsResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestEnumsResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestEnumsResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestEnumsResponseCallback();
+    ~CHIPUnitTestingClusterTestEnumsResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestNullableOptionalResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestNullableOptionalResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestNullableOptionalResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestNullableOptionalResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestNullableOptionalResponseCallback();
+    ~CHIPUnitTestingClusterTestNullableOptionalResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterBooleanResponseCallback : public Callback::Callback
+class CHIPUnitTestingClusterBooleanResponseCallback : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterBooleanResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterBooleanResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterBooleanResponseCallback();
+    ~CHIPUnitTestingClusterBooleanResponseCallback();
 
-    static void CallbackFn(void * context, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & data);
+    static void CallbackFn(void * context, const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterSimpleStructResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterSimpleStructResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterSimpleStructResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterSimpleStructResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterSimpleStructResponseCallback();
+    ~CHIPUnitTestingClusterSimpleStructResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
 };
 
-class CHIPTestClusterClusterTestEmitTestEventResponseCallback
-    : public Callback::Callback
+class CHIPUnitTestingClusterTestEmitTestEventResponseCallback
+    : public Callback::Callback
 {
 public:
-    CHIPTestClusterClusterTestEmitTestEventResponseCallback(jobject javaCallback);
+    CHIPUnitTestingClusterTestEmitTestEventResponseCallback(jobject javaCallback);
 
-    ~CHIPTestClusterClusterTestEmitTestEventResponseCallback();
+    ~CHIPUnitTestingClusterTestEmitTestEventResponseCallback();
 
     static void CallbackFn(void * context,
-                           const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType & data);
+                           const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & data);
 
 private:
     jobject javaCallbackRef;
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 8aabd4545260c8..65e9a4218f26f9 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -25774,8 +25774,8 @@ void CHIPElectricalMeasurementAttributeListAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterListInt8uAttributeCallback::CHIPTestClusterListInt8uAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingListInt8uAttributeCallback::CHIPUnitTestingListInt8uAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -25791,7 +25791,7 @@ CHIPTestClusterListInt8uAttributeCallback::CHIPTestClusterListInt8uAttributeCall
     }
 }
 
-CHIPTestClusterListInt8uAttributeCallback::~CHIPTestClusterListInt8uAttributeCallback()
+CHIPUnitTestingListInt8uAttributeCallback::~CHIPUnitTestingListInt8uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -25802,7 +25802,7 @@ CHIPTestClusterListInt8uAttributeCallback::~CHIPTestClusterListInt8uAttributeCal
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListInt8uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingListInt8uAttributeCallback::CallbackFn(void * context,
                                                            const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -25812,8 +25812,8 @@ void CHIPTestClusterListInt8uAttributeCallback::CallbackFn(void * context,
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -25843,9 +25843,9 @@ void CHIPTestClusterListInt8uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterListOctetStringAttributeCallback::CHIPTestClusterListOctetStringAttributeCallback(jobject javaCallback,
+CHIPUnitTestingListOctetStringAttributeCallback::CHIPUnitTestingListOctetStringAttributeCallback(jobject javaCallback,
                                                                                                  bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -25862,7 +25862,7 @@ CHIPTestClusterListOctetStringAttributeCallback::CHIPTestClusterListOctetStringA
     }
 }
 
-CHIPTestClusterListOctetStringAttributeCallback::~CHIPTestClusterListOctetStringAttributeCallback()
+CHIPUnitTestingListOctetStringAttributeCallback::~CHIPUnitTestingListOctetStringAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -25873,7 +25873,7 @@ CHIPTestClusterListOctetStringAttributeCallback::~CHIPTestClusterListOctetString
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListOctetStringAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingListOctetStringAttributeCallback::CallbackFn(void * context,
                                                                  const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -25883,8 +25883,8 @@ void CHIPTestClusterListOctetStringAttributeCallback::CallbackFn(void * context,
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -25914,9 +25914,9 @@ void CHIPTestClusterListOctetStringAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterListStructOctetStringAttributeCallback::CHIPTestClusterListStructOctetStringAttributeCallback(jobject javaCallback,
+CHIPUnitTestingListStructOctetStringAttributeCallback::CHIPUnitTestingListStructOctetStringAttributeCallback(jobject javaCallback,
                                                                                                              bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -25933,7 +25933,7 @@ CHIPTestClusterListStructOctetStringAttributeCallback::CHIPTestClusterListStruct
     }
 }
 
-CHIPTestClusterListStructOctetStringAttributeCallback::~CHIPTestClusterListStructOctetStringAttributeCallback()
+CHIPUnitTestingListStructOctetStringAttributeCallback::~CHIPUnitTestingListStructOctetStringAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -25944,9 +25944,9 @@ CHIPTestClusterListStructOctetStringAttributeCallback::~CHIPTestClusterListStruc
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListStructOctetStringAttributeCallback::CallbackFn(
+void CHIPUnitTestingListStructOctetStringAttributeCallback::CallbackFn(
     void * context,
-    const chip::app::DataModel::DecodableList & list)
+    const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -25955,8 +25955,8 @@ void CHIPTestClusterListStructOctetStringAttributeCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -25989,17 +25989,17 @@ void CHIPTestClusterListStructOctetStringAttributeCallback::CallbackFn(
 
         jclass testListStructOctetStructClass_1;
         err = chip::JniReferences::GetInstance().GetClassRef(
-            env, "chip/devicecontroller/ChipStructs$TestClusterClusterTestListStructOctet", testListStructOctetStructClass_1);
+            env, "chip/devicecontroller/ChipStructs$UnitTestingClusterTestListStructOctet", testListStructOctetStructClass_1);
         if (err != CHIP_NO_ERROR)
         {
-            ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterTestListStructOctet");
+            ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterTestListStructOctet");
             return;
         }
         jmethodID testListStructOctetStructCtor_1 =
             env->GetMethodID(testListStructOctetStructClass_1, "", "(Ljava/lang/Long;[B)V");
         if (testListStructOctetStructCtor_1 == nullptr)
         {
-            ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterTestListStructOctet constructor");
+            ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterTestListStructOctet constructor");
             return;
         }
 
@@ -26012,8 +26012,8 @@ void CHIPTestClusterListStructOctetStringAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterVendorIdAttributeCallback::CHIPTestClusterVendorIdAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingVendorIdAttributeCallback::CHIPUnitTestingVendorIdAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26029,7 +26029,7 @@ CHIPTestClusterVendorIdAttributeCallback::CHIPTestClusterVendorIdAttributeCallba
     }
 }
 
-CHIPTestClusterVendorIdAttributeCallback::~CHIPTestClusterVendorIdAttributeCallback()
+CHIPUnitTestingVendorIdAttributeCallback::~CHIPUnitTestingVendorIdAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26040,7 +26040,7 @@ CHIPTestClusterVendorIdAttributeCallback::~CHIPTestClusterVendorIdAttributeCallb
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterVendorIdAttributeCallback::CallbackFn(void * context, chip::VendorId value)
+void CHIPUnitTestingVendorIdAttributeCallback::CallbackFn(void * context, chip::VendorId value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -26048,8 +26048,8 @@ void CHIPTestClusterVendorIdAttributeCallback::CallbackFn(void * context, chip::
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -26069,9 +26069,9 @@ void CHIPTestClusterVendorIdAttributeCallback::CallbackFn(void * context, chip::
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback(
+CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback(
     jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -26088,7 +26088,7 @@ CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CHIPTestCluster
     }
 }
 
-CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::~CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback()
+CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::~CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26099,10 +26099,10 @@ CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::~CHIPTestCluste
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn(
+void CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback::CallbackFn(
     void * context,
     const chip::app::DataModel::DecodableList<
-        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & list)
+        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -26111,8 +26111,8 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -26285,10 +26285,10 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
 
             jclass simpleStructStructClass_3;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_3);
+                env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_3);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                 return;
             }
             jmethodID simpleStructStructCtor_3 =
@@ -26297,7 +26297,7 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
                                  "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
             if (simpleStructStructCtor_3 == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                 return;
             }
 
@@ -26369,10 +26369,10 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
 
             jclass simpleStructStructClass_3;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_3);
+                env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_3);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                 return;
             }
             jmethodID simpleStructStructCtor_3 =
@@ -26381,7 +26381,7 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
                                  "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
             if (simpleStructStructCtor_3 == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                 return;
             }
 
@@ -26466,10 +26466,10 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
 
                 jclass simpleStructStructClass_4;
                 err = chip::JniReferences::GetInstance().GetClassRef(
-                    env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_4);
+                    env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_4);
                 if (err != CHIP_NO_ERROR)
                 {
-                    ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+                    ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
                     return;
                 }
                 jmethodID simpleStructStructCtor_4 =
@@ -26478,7 +26478,7 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
                                      "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
                 if (simpleStructStructCtor_4 == nullptr)
                 {
-                    ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+                    ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
                     return;
                 }
 
@@ -26571,21 +26571,21 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
 
         jclass nullablesAndOptionalsStructStructClass_1;
         err = chip::JniReferences::GetInstance().GetClassRef(
-            env, "chip/devicecontroller/ChipStructs$TestClusterClusterNullablesAndOptionalsStruct",
+            env, "chip/devicecontroller/ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct",
             nullablesAndOptionalsStructStructClass_1);
         if (err != CHIP_NO_ERROR)
         {
-            ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterNullablesAndOptionalsStruct");
+            ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct");
             return;
         }
         jmethodID nullablesAndOptionalsStructStructCtor_1 =
             env->GetMethodID(nullablesAndOptionalsStructStructClass_1, "",
                              "(Ljava/lang/Integer;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;Ljava/util/"
-                             "Optional;Ljava/util/Optional;Lchip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;Ljava/"
+                             "Optional;Ljava/util/Optional;Lchip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;Ljava/"
                              "util/Optional;Ljava/util/Optional;Ljava/util/ArrayList;Ljava/util/Optional;Ljava/util/Optional;)V");
         if (nullablesAndOptionalsStructStructCtor_1 == nullptr)
         {
-            ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterNullablesAndOptionalsStruct constructor");
+            ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterNullablesAndOptionalsStruct constructor");
             return;
         }
 
@@ -26601,9 +26601,9 @@ void CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback::CallbackFn
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterListLongOctetStringAttributeCallback::CHIPTestClusterListLongOctetStringAttributeCallback(jobject javaCallback,
+CHIPUnitTestingListLongOctetStringAttributeCallback::CHIPUnitTestingListLongOctetStringAttributeCallback(jobject javaCallback,
                                                                                                          bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -26620,7 +26620,7 @@ CHIPTestClusterListLongOctetStringAttributeCallback::CHIPTestClusterListLongOcte
     }
 }
 
-CHIPTestClusterListLongOctetStringAttributeCallback::~CHIPTestClusterListLongOctetStringAttributeCallback()
+CHIPUnitTestingListLongOctetStringAttributeCallback::~CHIPUnitTestingListLongOctetStringAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26631,7 +26631,7 @@ CHIPTestClusterListLongOctetStringAttributeCallback::~CHIPTestClusterListLongOct
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListLongOctetStringAttributeCallback::CallbackFn(
+void CHIPUnitTestingListLongOctetStringAttributeCallback::CallbackFn(
     void * context, const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -26641,8 +26641,8 @@ void CHIPTestClusterListLongOctetStringAttributeCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -26672,9 +26672,9 @@ void CHIPTestClusterListLongOctetStringAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterListFabricScopedAttributeCallback::CHIPTestClusterListFabricScopedAttributeCallback(jobject javaCallback,
+CHIPUnitTestingListFabricScopedAttributeCallback::CHIPUnitTestingListFabricScopedAttributeCallback(jobject javaCallback,
                                                                                                    bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -26691,7 +26691,7 @@ CHIPTestClusterListFabricScopedAttributeCallback::CHIPTestClusterListFabricScope
     }
 }
 
-CHIPTestClusterListFabricScopedAttributeCallback::~CHIPTestClusterListFabricScopedAttributeCallback()
+CHIPUnitTestingListFabricScopedAttributeCallback::~CHIPUnitTestingListFabricScopedAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26702,9 +26702,9 @@ CHIPTestClusterListFabricScopedAttributeCallback::~CHIPTestClusterListFabricScop
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
+void CHIPUnitTestingListFabricScopedAttributeCallback::CallbackFn(
     void * context,
-    const chip::app::DataModel::DecodableList & list)
+    const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -26713,8 +26713,8 @@ void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -26848,10 +26848,10 @@ void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
 
         jclass simpleStructStructClass_2;
         err = chip::JniReferences::GetInstance().GetClassRef(
-            env, "chip/devicecontroller/ChipStructs$TestClusterClusterSimpleStruct", simpleStructStructClass_2);
+            env, "chip/devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct", simpleStructStructClass_2);
         if (err != CHIP_NO_ERROR)
         {
-            ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterSimpleStruct");
+            ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterSimpleStruct");
             return;
         }
         jmethodID simpleStructStructCtor_2 =
@@ -26860,7 +26860,7 @@ void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
                              "Integer;Ljava/lang/Float;Ljava/lang/Double;)V");
         if (simpleStructStructCtor_2 == nullptr)
         {
-            ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterSimpleStruct constructor");
+            ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterSimpleStruct constructor");
             return;
         }
 
@@ -26892,19 +26892,19 @@ void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
 
         jclass testFabricScopedStructClass_1;
         err = chip::JniReferences::GetInstance().GetClassRef(
-            env, "chip/devicecontroller/ChipStructs$TestClusterClusterTestFabricScoped", testFabricScopedStructClass_1);
+            env, "chip/devicecontroller/ChipStructs$UnitTestingClusterTestFabricScoped", testFabricScopedStructClass_1);
         if (err != CHIP_NO_ERROR)
         {
-            ChipLogError(Zcl, "Could not find class ChipStructs$TestClusterClusterTestFabricScoped");
+            ChipLogError(Zcl, "Could not find class ChipStructs$UnitTestingClusterTestFabricScoped");
             return;
         }
         jmethodID testFabricScopedStructCtor_1 = env->GetMethodID(
             testFabricScopedStructClass_1, "",
             "(Ljava/lang/Integer;Ljava/util/Optional;Ljava/lang/Integer;Ljava/util/Optional;Ljava/lang/String;Lchip/"
-            "devicecontroller/ChipStructs$TestClusterClusterSimpleStruct;Ljava/util/ArrayList;Ljava/lang/Integer;)V");
+            "devicecontroller/ChipStructs$UnitTestingClusterSimpleStruct;Ljava/util/ArrayList;Ljava/lang/Integer;)V");
         if (testFabricScopedStructCtor_1 == nullptr)
         {
-            ChipLogError(Zcl, "Could not find ChipStructs$TestClusterClusterTestFabricScoped constructor");
+            ChipLogError(Zcl, "Could not find ChipStructs$UnitTestingClusterTestFabricScoped constructor");
             return;
         }
 
@@ -26920,9 +26920,9 @@ void CHIPTestClusterListFabricScopedAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterNullableBooleanAttributeCallback::CHIPTestClusterNullableBooleanAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableBooleanAttributeCallback::CHIPUnitTestingNullableBooleanAttributeCallback(jobject javaCallback,
                                                                                                  bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -26939,7 +26939,7 @@ CHIPTestClusterNullableBooleanAttributeCallback::CHIPTestClusterNullableBooleanA
     }
 }
 
-CHIPTestClusterNullableBooleanAttributeCallback::~CHIPTestClusterNullableBooleanAttributeCallback()
+CHIPUnitTestingNullableBooleanAttributeCallback::~CHIPUnitTestingNullableBooleanAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -26950,7 +26950,7 @@ CHIPTestClusterNullableBooleanAttributeCallback::~CHIPTestClusterNullableBoolean
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableBooleanAttributeCallback::CallbackFn(void * context, const chip::app::DataModel::Nullable & value)
+void CHIPUnitTestingNullableBooleanAttributeCallback::CallbackFn(void * context, const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -26958,8 +26958,8 @@ void CHIPTestClusterNullableBooleanAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -26986,9 +26986,9 @@ void CHIPTestClusterNullableBooleanAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableBitmap8AttributeCallback::CHIPTestClusterNullableBitmap8AttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableBitmap8AttributeCallback::CHIPUnitTestingNullableBitmap8AttributeCallback(jobject javaCallback,
                                                                                                  bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27005,7 +27005,7 @@ CHIPTestClusterNullableBitmap8AttributeCallback::CHIPTestClusterNullableBitmap8A
     }
 }
 
-CHIPTestClusterNullableBitmap8AttributeCallback::~CHIPTestClusterNullableBitmap8AttributeCallback()
+CHIPUnitTestingNullableBitmap8AttributeCallback::~CHIPUnitTestingNullableBitmap8AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27016,8 +27016,8 @@ CHIPTestClusterNullableBitmap8AttributeCallback::~CHIPTestClusterNullableBitmap8
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableBitmap8AttributeCallback::CallbackFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void CHIPUnitTestingNullableBitmap8AttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -27025,8 +27025,8 @@ void CHIPTestClusterNullableBitmap8AttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27053,9 +27053,9 @@ void CHIPTestClusterNullableBitmap8AttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableBitmap16AttributeCallback::CHIPTestClusterNullableBitmap16AttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableBitmap16AttributeCallback::CHIPUnitTestingNullableBitmap16AttributeCallback(jobject javaCallback,
                                                                                                    bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27072,7 +27072,7 @@ CHIPTestClusterNullableBitmap16AttributeCallback::CHIPTestClusterNullableBitmap1
     }
 }
 
-CHIPTestClusterNullableBitmap16AttributeCallback::~CHIPTestClusterNullableBitmap16AttributeCallback()
+CHIPUnitTestingNullableBitmap16AttributeCallback::~CHIPUnitTestingNullableBitmap16AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27083,8 +27083,8 @@ CHIPTestClusterNullableBitmap16AttributeCallback::~CHIPTestClusterNullableBitmap
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableBitmap16AttributeCallback::CallbackFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void CHIPUnitTestingNullableBitmap16AttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -27092,8 +27092,8 @@ void CHIPTestClusterNullableBitmap16AttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27120,9 +27120,9 @@ void CHIPTestClusterNullableBitmap16AttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableBitmap32AttributeCallback::CHIPTestClusterNullableBitmap32AttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableBitmap32AttributeCallback::CHIPUnitTestingNullableBitmap32AttributeCallback(jobject javaCallback,
                                                                                                    bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27139,7 +27139,7 @@ CHIPTestClusterNullableBitmap32AttributeCallback::CHIPTestClusterNullableBitmap3
     }
 }
 
-CHIPTestClusterNullableBitmap32AttributeCallback::~CHIPTestClusterNullableBitmap32AttributeCallback()
+CHIPUnitTestingNullableBitmap32AttributeCallback::~CHIPUnitTestingNullableBitmap32AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27150,8 +27150,8 @@ CHIPTestClusterNullableBitmap32AttributeCallback::~CHIPTestClusterNullableBitmap
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableBitmap32AttributeCallback::CallbackFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void CHIPUnitTestingNullableBitmap32AttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -27159,8 +27159,8 @@ void CHIPTestClusterNullableBitmap32AttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27187,9 +27187,9 @@ void CHIPTestClusterNullableBitmap32AttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableBitmap64AttributeCallback::CHIPTestClusterNullableBitmap64AttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableBitmap64AttributeCallback::CHIPUnitTestingNullableBitmap64AttributeCallback(jobject javaCallback,
                                                                                                    bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27206,7 +27206,7 @@ CHIPTestClusterNullableBitmap64AttributeCallback::CHIPTestClusterNullableBitmap6
     }
 }
 
-CHIPTestClusterNullableBitmap64AttributeCallback::~CHIPTestClusterNullableBitmap64AttributeCallback()
+CHIPUnitTestingNullableBitmap64AttributeCallback::~CHIPUnitTestingNullableBitmap64AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27217,8 +27217,8 @@ CHIPTestClusterNullableBitmap64AttributeCallback::~CHIPTestClusterNullableBitmap
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableBitmap64AttributeCallback::CallbackFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void CHIPUnitTestingNullableBitmap64AttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -27226,8 +27226,8 @@ void CHIPTestClusterNullableBitmap64AttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27254,8 +27254,8 @@ void CHIPTestClusterNullableBitmap64AttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt8uAttributeCallback::CHIPTestClusterNullableInt8uAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingNullableInt8uAttributeCallback::CHIPUnitTestingNullableInt8uAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27271,7 +27271,7 @@ CHIPTestClusterNullableInt8uAttributeCallback::CHIPTestClusterNullableInt8uAttri
     }
 }
 
-CHIPTestClusterNullableInt8uAttributeCallback::~CHIPTestClusterNullableInt8uAttributeCallback()
+CHIPUnitTestingNullableInt8uAttributeCallback::~CHIPUnitTestingNullableInt8uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27282,7 +27282,7 @@ CHIPTestClusterNullableInt8uAttributeCallback::~CHIPTestClusterNullableInt8uAttr
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt8uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt8uAttributeCallback::CallbackFn(void * context,
                                                                const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27291,8 +27291,8 @@ void CHIPTestClusterNullableInt8uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27319,9 +27319,9 @@ void CHIPTestClusterNullableInt8uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt16uAttributeCallback::CHIPTestClusterNullableInt16uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt16uAttributeCallback::CHIPUnitTestingNullableInt16uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27338,7 +27338,7 @@ CHIPTestClusterNullableInt16uAttributeCallback::CHIPTestClusterNullableInt16uAtt
     }
 }
 
-CHIPTestClusterNullableInt16uAttributeCallback::~CHIPTestClusterNullableInt16uAttributeCallback()
+CHIPUnitTestingNullableInt16uAttributeCallback::~CHIPUnitTestingNullableInt16uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27349,7 +27349,7 @@ CHIPTestClusterNullableInt16uAttributeCallback::~CHIPTestClusterNullableInt16uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt16uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt16uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27358,8 +27358,8 @@ void CHIPTestClusterNullableInt16uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27386,9 +27386,9 @@ void CHIPTestClusterNullableInt16uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt24uAttributeCallback::CHIPTestClusterNullableInt24uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt24uAttributeCallback::CHIPUnitTestingNullableInt24uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27405,7 +27405,7 @@ CHIPTestClusterNullableInt24uAttributeCallback::CHIPTestClusterNullableInt24uAtt
     }
 }
 
-CHIPTestClusterNullableInt24uAttributeCallback::~CHIPTestClusterNullableInt24uAttributeCallback()
+CHIPUnitTestingNullableInt24uAttributeCallback::~CHIPUnitTestingNullableInt24uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27416,7 +27416,7 @@ CHIPTestClusterNullableInt24uAttributeCallback::~CHIPTestClusterNullableInt24uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt24uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt24uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27425,8 +27425,8 @@ void CHIPTestClusterNullableInt24uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27453,9 +27453,9 @@ void CHIPTestClusterNullableInt24uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt32uAttributeCallback::CHIPTestClusterNullableInt32uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt32uAttributeCallback::CHIPUnitTestingNullableInt32uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27472,7 +27472,7 @@ CHIPTestClusterNullableInt32uAttributeCallback::CHIPTestClusterNullableInt32uAtt
     }
 }
 
-CHIPTestClusterNullableInt32uAttributeCallback::~CHIPTestClusterNullableInt32uAttributeCallback()
+CHIPUnitTestingNullableInt32uAttributeCallback::~CHIPUnitTestingNullableInt32uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27483,7 +27483,7 @@ CHIPTestClusterNullableInt32uAttributeCallback::~CHIPTestClusterNullableInt32uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt32uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt32uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27492,8 +27492,8 @@ void CHIPTestClusterNullableInt32uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27520,9 +27520,9 @@ void CHIPTestClusterNullableInt32uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt40uAttributeCallback::CHIPTestClusterNullableInt40uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt40uAttributeCallback::CHIPUnitTestingNullableInt40uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27539,7 +27539,7 @@ CHIPTestClusterNullableInt40uAttributeCallback::CHIPTestClusterNullableInt40uAtt
     }
 }
 
-CHIPTestClusterNullableInt40uAttributeCallback::~CHIPTestClusterNullableInt40uAttributeCallback()
+CHIPUnitTestingNullableInt40uAttributeCallback::~CHIPUnitTestingNullableInt40uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27550,7 +27550,7 @@ CHIPTestClusterNullableInt40uAttributeCallback::~CHIPTestClusterNullableInt40uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt40uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt40uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27559,8 +27559,8 @@ void CHIPTestClusterNullableInt40uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27587,9 +27587,9 @@ void CHIPTestClusterNullableInt40uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt48uAttributeCallback::CHIPTestClusterNullableInt48uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt48uAttributeCallback::CHIPUnitTestingNullableInt48uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27606,7 +27606,7 @@ CHIPTestClusterNullableInt48uAttributeCallback::CHIPTestClusterNullableInt48uAtt
     }
 }
 
-CHIPTestClusterNullableInt48uAttributeCallback::~CHIPTestClusterNullableInt48uAttributeCallback()
+CHIPUnitTestingNullableInt48uAttributeCallback::~CHIPUnitTestingNullableInt48uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27617,7 +27617,7 @@ CHIPTestClusterNullableInt48uAttributeCallback::~CHIPTestClusterNullableInt48uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt48uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt48uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27626,8 +27626,8 @@ void CHIPTestClusterNullableInt48uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27654,9 +27654,9 @@ void CHIPTestClusterNullableInt48uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt56uAttributeCallback::CHIPTestClusterNullableInt56uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt56uAttributeCallback::CHIPUnitTestingNullableInt56uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27673,7 +27673,7 @@ CHIPTestClusterNullableInt56uAttributeCallback::CHIPTestClusterNullableInt56uAtt
     }
 }
 
-CHIPTestClusterNullableInt56uAttributeCallback::~CHIPTestClusterNullableInt56uAttributeCallback()
+CHIPUnitTestingNullableInt56uAttributeCallback::~CHIPUnitTestingNullableInt56uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27684,7 +27684,7 @@ CHIPTestClusterNullableInt56uAttributeCallback::~CHIPTestClusterNullableInt56uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt56uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt56uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27693,8 +27693,8 @@ void CHIPTestClusterNullableInt56uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27721,9 +27721,9 @@ void CHIPTestClusterNullableInt56uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt64uAttributeCallback::CHIPTestClusterNullableInt64uAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt64uAttributeCallback::CHIPUnitTestingNullableInt64uAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27740,7 +27740,7 @@ CHIPTestClusterNullableInt64uAttributeCallback::CHIPTestClusterNullableInt64uAtt
     }
 }
 
-CHIPTestClusterNullableInt64uAttributeCallback::~CHIPTestClusterNullableInt64uAttributeCallback()
+CHIPUnitTestingNullableInt64uAttributeCallback::~CHIPUnitTestingNullableInt64uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27751,7 +27751,7 @@ CHIPTestClusterNullableInt64uAttributeCallback::~CHIPTestClusterNullableInt64uAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt64uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt64uAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27760,8 +27760,8 @@ void CHIPTestClusterNullableInt64uAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27788,8 +27788,8 @@ void CHIPTestClusterNullableInt64uAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt8sAttributeCallback::CHIPTestClusterNullableInt8sAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingNullableInt8sAttributeCallback::CHIPUnitTestingNullableInt8sAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27805,7 +27805,7 @@ CHIPTestClusterNullableInt8sAttributeCallback::CHIPTestClusterNullableInt8sAttri
     }
 }
 
-CHIPTestClusterNullableInt8sAttributeCallback::~CHIPTestClusterNullableInt8sAttributeCallback()
+CHIPUnitTestingNullableInt8sAttributeCallback::~CHIPUnitTestingNullableInt8sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27816,7 +27816,7 @@ CHIPTestClusterNullableInt8sAttributeCallback::~CHIPTestClusterNullableInt8sAttr
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt8sAttributeCallback::CallbackFn(void * context, const chip::app::DataModel::Nullable & value)
+void CHIPUnitTestingNullableInt8sAttributeCallback::CallbackFn(void * context, const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -27824,8 +27824,8 @@ void CHIPTestClusterNullableInt8sAttributeCallback::CallbackFn(void * context, c
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27852,9 +27852,9 @@ void CHIPTestClusterNullableInt8sAttributeCallback::CallbackFn(void * context, c
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt16sAttributeCallback::CHIPTestClusterNullableInt16sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt16sAttributeCallback::CHIPUnitTestingNullableInt16sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27871,7 +27871,7 @@ CHIPTestClusterNullableInt16sAttributeCallback::CHIPTestClusterNullableInt16sAtt
     }
 }
 
-CHIPTestClusterNullableInt16sAttributeCallback::~CHIPTestClusterNullableInt16sAttributeCallback()
+CHIPUnitTestingNullableInt16sAttributeCallback::~CHIPUnitTestingNullableInt16sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27882,7 +27882,7 @@ CHIPTestClusterNullableInt16sAttributeCallback::~CHIPTestClusterNullableInt16sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt16sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt16sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27891,8 +27891,8 @@ void CHIPTestClusterNullableInt16sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27919,9 +27919,9 @@ void CHIPTestClusterNullableInt16sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt24sAttributeCallback::CHIPTestClusterNullableInt24sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt24sAttributeCallback::CHIPUnitTestingNullableInt24sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -27938,7 +27938,7 @@ CHIPTestClusterNullableInt24sAttributeCallback::CHIPTestClusterNullableInt24sAtt
     }
 }
 
-CHIPTestClusterNullableInt24sAttributeCallback::~CHIPTestClusterNullableInt24sAttributeCallback()
+CHIPUnitTestingNullableInt24sAttributeCallback::~CHIPUnitTestingNullableInt24sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -27949,7 +27949,7 @@ CHIPTestClusterNullableInt24sAttributeCallback::~CHIPTestClusterNullableInt24sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt24sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt24sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -27958,8 +27958,8 @@ void CHIPTestClusterNullableInt24sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -27986,9 +27986,9 @@ void CHIPTestClusterNullableInt24sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt32sAttributeCallback::CHIPTestClusterNullableInt32sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt32sAttributeCallback::CHIPUnitTestingNullableInt32sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28005,7 +28005,7 @@ CHIPTestClusterNullableInt32sAttributeCallback::CHIPTestClusterNullableInt32sAtt
     }
 }
 
-CHIPTestClusterNullableInt32sAttributeCallback::~CHIPTestClusterNullableInt32sAttributeCallback()
+CHIPUnitTestingNullableInt32sAttributeCallback::~CHIPUnitTestingNullableInt32sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28016,7 +28016,7 @@ CHIPTestClusterNullableInt32sAttributeCallback::~CHIPTestClusterNullableInt32sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt32sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt32sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28025,8 +28025,8 @@ void CHIPTestClusterNullableInt32sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28053,9 +28053,9 @@ void CHIPTestClusterNullableInt32sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt40sAttributeCallback::CHIPTestClusterNullableInt40sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt40sAttributeCallback::CHIPUnitTestingNullableInt40sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28072,7 +28072,7 @@ CHIPTestClusterNullableInt40sAttributeCallback::CHIPTestClusterNullableInt40sAtt
     }
 }
 
-CHIPTestClusterNullableInt40sAttributeCallback::~CHIPTestClusterNullableInt40sAttributeCallback()
+CHIPUnitTestingNullableInt40sAttributeCallback::~CHIPUnitTestingNullableInt40sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28083,7 +28083,7 @@ CHIPTestClusterNullableInt40sAttributeCallback::~CHIPTestClusterNullableInt40sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt40sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt40sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28092,8 +28092,8 @@ void CHIPTestClusterNullableInt40sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28120,9 +28120,9 @@ void CHIPTestClusterNullableInt40sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt48sAttributeCallback::CHIPTestClusterNullableInt48sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt48sAttributeCallback::CHIPUnitTestingNullableInt48sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28139,7 +28139,7 @@ CHIPTestClusterNullableInt48sAttributeCallback::CHIPTestClusterNullableInt48sAtt
     }
 }
 
-CHIPTestClusterNullableInt48sAttributeCallback::~CHIPTestClusterNullableInt48sAttributeCallback()
+CHIPUnitTestingNullableInt48sAttributeCallback::~CHIPUnitTestingNullableInt48sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28150,7 +28150,7 @@ CHIPTestClusterNullableInt48sAttributeCallback::~CHIPTestClusterNullableInt48sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt48sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt48sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28159,8 +28159,8 @@ void CHIPTestClusterNullableInt48sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28187,9 +28187,9 @@ void CHIPTestClusterNullableInt48sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt56sAttributeCallback::CHIPTestClusterNullableInt56sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt56sAttributeCallback::CHIPUnitTestingNullableInt56sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28206,7 +28206,7 @@ CHIPTestClusterNullableInt56sAttributeCallback::CHIPTestClusterNullableInt56sAtt
     }
 }
 
-CHIPTestClusterNullableInt56sAttributeCallback::~CHIPTestClusterNullableInt56sAttributeCallback()
+CHIPUnitTestingNullableInt56sAttributeCallback::~CHIPUnitTestingNullableInt56sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28217,7 +28217,7 @@ CHIPTestClusterNullableInt56sAttributeCallback::~CHIPTestClusterNullableInt56sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt56sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt56sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28226,8 +28226,8 @@ void CHIPTestClusterNullableInt56sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28254,9 +28254,9 @@ void CHIPTestClusterNullableInt56sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableInt64sAttributeCallback::CHIPTestClusterNullableInt64sAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableInt64sAttributeCallback::CHIPUnitTestingNullableInt64sAttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28273,7 +28273,7 @@ CHIPTestClusterNullableInt64sAttributeCallback::CHIPTestClusterNullableInt64sAtt
     }
 }
 
-CHIPTestClusterNullableInt64sAttributeCallback::~CHIPTestClusterNullableInt64sAttributeCallback()
+CHIPUnitTestingNullableInt64sAttributeCallback::~CHIPUnitTestingNullableInt64sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28284,7 +28284,7 @@ CHIPTestClusterNullableInt64sAttributeCallback::~CHIPTestClusterNullableInt64sAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableInt64sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableInt64sAttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28293,8 +28293,8 @@ void CHIPTestClusterNullableInt64sAttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28321,8 +28321,8 @@ void CHIPTestClusterNullableInt64sAttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableEnum8AttributeCallback::CHIPTestClusterNullableEnum8AttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingNullableEnum8AttributeCallback::CHIPUnitTestingNullableEnum8AttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28338,7 +28338,7 @@ CHIPTestClusterNullableEnum8AttributeCallback::CHIPTestClusterNullableEnum8Attri
     }
 }
 
-CHIPTestClusterNullableEnum8AttributeCallback::~CHIPTestClusterNullableEnum8AttributeCallback()
+CHIPUnitTestingNullableEnum8AttributeCallback::~CHIPUnitTestingNullableEnum8AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28349,7 +28349,7 @@ CHIPTestClusterNullableEnum8AttributeCallback::~CHIPTestClusterNullableEnum8Attr
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableEnum8AttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableEnum8AttributeCallback::CallbackFn(void * context,
                                                                const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28358,8 +28358,8 @@ void CHIPTestClusterNullableEnum8AttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28386,9 +28386,9 @@ void CHIPTestClusterNullableEnum8AttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableEnum16AttributeCallback::CHIPTestClusterNullableEnum16AttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableEnum16AttributeCallback::CHIPUnitTestingNullableEnum16AttributeCallback(jobject javaCallback,
                                                                                                bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28405,7 +28405,7 @@ CHIPTestClusterNullableEnum16AttributeCallback::CHIPTestClusterNullableEnum16Att
     }
 }
 
-CHIPTestClusterNullableEnum16AttributeCallback::~CHIPTestClusterNullableEnum16AttributeCallback()
+CHIPUnitTestingNullableEnum16AttributeCallback::~CHIPUnitTestingNullableEnum16AttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28416,7 +28416,7 @@ CHIPTestClusterNullableEnum16AttributeCallback::~CHIPTestClusterNullableEnum16At
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableEnum16AttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableEnum16AttributeCallback::CallbackFn(void * context,
                                                                 const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28425,8 +28425,8 @@ void CHIPTestClusterNullableEnum16AttributeCallback::CallbackFn(void * context,
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28453,9 +28453,9 @@ void CHIPTestClusterNullableEnum16AttributeCallback::CallbackFn(void * context,
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableFloatSingleAttributeCallback::CHIPTestClusterNullableFloatSingleAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableFloatSingleAttributeCallback::CHIPUnitTestingNullableFloatSingleAttributeCallback(jobject javaCallback,
                                                                                                          bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28472,7 +28472,7 @@ CHIPTestClusterNullableFloatSingleAttributeCallback::CHIPTestClusterNullableFloa
     }
 }
 
-CHIPTestClusterNullableFloatSingleAttributeCallback::~CHIPTestClusterNullableFloatSingleAttributeCallback()
+CHIPUnitTestingNullableFloatSingleAttributeCallback::~CHIPUnitTestingNullableFloatSingleAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28483,7 +28483,7 @@ CHIPTestClusterNullableFloatSingleAttributeCallback::~CHIPTestClusterNullableFlo
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableFloatSingleAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableFloatSingleAttributeCallback::CallbackFn(void * context,
                                                                      const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28492,8 +28492,8 @@ void CHIPTestClusterNullableFloatSingleAttributeCallback::CallbackFn(void * cont
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28520,9 +28520,9 @@ void CHIPTestClusterNullableFloatSingleAttributeCallback::CallbackFn(void * cont
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableFloatDoubleAttributeCallback::CHIPTestClusterNullableFloatDoubleAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableFloatDoubleAttributeCallback::CHIPUnitTestingNullableFloatDoubleAttributeCallback(jobject javaCallback,
                                                                                                          bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28539,7 +28539,7 @@ CHIPTestClusterNullableFloatDoubleAttributeCallback::CHIPTestClusterNullableFloa
     }
 }
 
-CHIPTestClusterNullableFloatDoubleAttributeCallback::~CHIPTestClusterNullableFloatDoubleAttributeCallback()
+CHIPUnitTestingNullableFloatDoubleAttributeCallback::~CHIPUnitTestingNullableFloatDoubleAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28550,7 +28550,7 @@ CHIPTestClusterNullableFloatDoubleAttributeCallback::~CHIPTestClusterNullableFlo
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableFloatDoubleAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableFloatDoubleAttributeCallback::CallbackFn(void * context,
                                                                      const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28559,8 +28559,8 @@ void CHIPTestClusterNullableFloatDoubleAttributeCallback::CallbackFn(void * cont
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28587,9 +28587,9 @@ void CHIPTestClusterNullableFloatDoubleAttributeCallback::CallbackFn(void * cont
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableOctetStringAttributeCallback::CHIPTestClusterNullableOctetStringAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableOctetStringAttributeCallback::CHIPUnitTestingNullableOctetStringAttributeCallback(jobject javaCallback,
                                                                                                          bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28606,7 +28606,7 @@ CHIPTestClusterNullableOctetStringAttributeCallback::CHIPTestClusterNullableOcte
     }
 }
 
-CHIPTestClusterNullableOctetStringAttributeCallback::~CHIPTestClusterNullableOctetStringAttributeCallback()
+CHIPUnitTestingNullableOctetStringAttributeCallback::~CHIPUnitTestingNullableOctetStringAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28617,7 +28617,7 @@ CHIPTestClusterNullableOctetStringAttributeCallback::~CHIPTestClusterNullableOct
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableOctetStringAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableOctetStringAttributeCallback::CallbackFn(void * context,
                                                                      const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28626,8 +28626,8 @@ void CHIPTestClusterNullableOctetStringAttributeCallback::CallbackFn(void * cont
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28654,9 +28654,9 @@ void CHIPTestClusterNullableOctetStringAttributeCallback::CallbackFn(void * cont
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableCharStringAttributeCallback::CHIPTestClusterNullableCharStringAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableCharStringAttributeCallback::CHIPUnitTestingNullableCharStringAttributeCallback(jobject javaCallback,
                                                                                                        bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28673,7 +28673,7 @@ CHIPTestClusterNullableCharStringAttributeCallback::CHIPTestClusterNullableCharS
     }
 }
 
-CHIPTestClusterNullableCharStringAttributeCallback::~CHIPTestClusterNullableCharStringAttributeCallback()
+CHIPUnitTestingNullableCharStringAttributeCallback::~CHIPUnitTestingNullableCharStringAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28684,7 +28684,7 @@ CHIPTestClusterNullableCharStringAttributeCallback::~CHIPTestClusterNullableChar
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableCharStringAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableCharStringAttributeCallback::CallbackFn(void * context,
                                                                     const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28693,8 +28693,8 @@ void CHIPTestClusterNullableCharStringAttributeCallback::CallbackFn(void * conte
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28718,9 +28718,9 @@ void CHIPTestClusterNullableCharStringAttributeCallback::CallbackFn(void * conte
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableEnumAttrAttributeCallback::CHIPTestClusterNullableEnumAttrAttributeCallback(jobject javaCallback,
+CHIPUnitTestingNullableEnumAttrAttributeCallback::CHIPUnitTestingNullableEnumAttrAttributeCallback(jobject javaCallback,
                                                                                                    bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28737,7 +28737,7 @@ CHIPTestClusterNullableEnumAttrAttributeCallback::CHIPTestClusterNullableEnumAtt
     }
 }
 
-CHIPTestClusterNullableEnumAttrAttributeCallback::~CHIPTestClusterNullableEnumAttrAttributeCallback()
+CHIPUnitTestingNullableEnumAttrAttributeCallback::~CHIPUnitTestingNullableEnumAttrAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28748,8 +28748,8 @@ CHIPTestClusterNullableEnumAttrAttributeCallback::~CHIPTestClusterNullableEnumAt
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableEnumAttrAttributeCallback::CallbackFn(
-    void * context, const chip::app::DataModel::Nullable & value)
+void CHIPUnitTestingNullableEnumAttrAttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -28757,8 +28757,8 @@ void CHIPTestClusterNullableEnumAttrAttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28785,9 +28785,9 @@ void CHIPTestClusterNullableEnumAttrAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback(
+CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback::CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback(
     jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28804,7 +28804,7 @@ CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::CHIPTestClusterNul
     }
 }
 
-CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::~CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback()
+CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback::~CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28815,7 +28815,7 @@ CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::~CHIPTestClusterNu
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback::CallbackFn(void * context,
                                                                               const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28824,8 +28824,8 @@ void CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::CallbackFn(vo
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28852,9 +28852,9 @@ void CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback::CallbackFn(vo
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback(
+CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback::CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback(
     jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28871,7 +28871,7 @@ CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::CHIPTestClusterNul
     }
 }
 
-CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::~CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback()
+CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback::~CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28882,7 +28882,7 @@ CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::~CHIPTestClusterNu
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback::CallbackFn(void * context,
                                                                               const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28891,8 +28891,8 @@ void CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::CallbackFn(vo
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28919,9 +28919,9 @@ void CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback::CallbackFn(vo
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback(
+CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback::CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback(
     jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -28938,7 +28938,7 @@ CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::CHIPTestClusterNu
     }
 }
 
-CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::~CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback()
+CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback::~CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -28949,7 +28949,7 @@ CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::~CHIPTestClusterN
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::CallbackFn(
+void CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback::CallbackFn(
     void * context, const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -28958,8 +28958,8 @@ void CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -28986,9 +28986,9 @@ void CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback(
+CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback::CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback(
     jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -29005,7 +29005,7 @@ CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::CHIPTestClusterNu
     }
 }
 
-CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::~CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback()
+CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback::~CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -29016,7 +29016,7 @@ CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::~CHIPTestClusterN
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::CallbackFn(
+void CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback::CallbackFn(
     void * context, const chip::app::DataModel::Nullable & value)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -29025,8 +29025,8 @@ void CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::CallbackFn(
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -29053,9 +29053,9 @@ void CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPTestClusterGeneratedCommandListAttributeCallback::CHIPTestClusterGeneratedCommandListAttributeCallback(jobject javaCallback,
+CHIPUnitTestingGeneratedCommandListAttributeCallback::CHIPUnitTestingGeneratedCommandListAttributeCallback(jobject javaCallback,
                                                                                                            bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -29072,7 +29072,7 @@ CHIPTestClusterGeneratedCommandListAttributeCallback::CHIPTestClusterGeneratedCo
     }
 }
 
-CHIPTestClusterGeneratedCommandListAttributeCallback::~CHIPTestClusterGeneratedCommandListAttributeCallback()
+CHIPUnitTestingGeneratedCommandListAttributeCallback::~CHIPUnitTestingGeneratedCommandListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -29083,7 +29083,7 @@ CHIPTestClusterGeneratedCommandListAttributeCallback::~CHIPTestClusterGeneratedC
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterGeneratedCommandListAttributeCallback::CallbackFn(
+void CHIPUnitTestingGeneratedCommandListAttributeCallback::CallbackFn(
     void * context, const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -29093,8 +29093,8 @@ void CHIPTestClusterGeneratedCommandListAttributeCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -29124,9 +29124,9 @@ void CHIPTestClusterGeneratedCommandListAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterAcceptedCommandListAttributeCallback::CHIPTestClusterAcceptedCommandListAttributeCallback(jobject javaCallback,
+CHIPUnitTestingAcceptedCommandListAttributeCallback::CHIPUnitTestingAcceptedCommandListAttributeCallback(jobject javaCallback,
                                                                                                          bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this),
+    chip::Callback::Callback(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -29143,7 +29143,7 @@ CHIPTestClusterAcceptedCommandListAttributeCallback::CHIPTestClusterAcceptedComm
     }
 }
 
-CHIPTestClusterAcceptedCommandListAttributeCallback::~CHIPTestClusterAcceptedCommandListAttributeCallback()
+CHIPUnitTestingAcceptedCommandListAttributeCallback::~CHIPUnitTestingAcceptedCommandListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -29154,7 +29154,7 @@ CHIPTestClusterAcceptedCommandListAttributeCallback::~CHIPTestClusterAcceptedCom
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterAcceptedCommandListAttributeCallback::CallbackFn(
+void CHIPUnitTestingAcceptedCommandListAttributeCallback::CallbackFn(
     void * context, const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -29164,8 +29164,8 @@ void CHIPTestClusterAcceptedCommandListAttributeCallback::CallbackFn(
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -29195,8 +29195,8 @@ void CHIPTestClusterAcceptedCommandListAttributeCallback::CallbackFn(
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPTestClusterAttributeListAttributeCallback::CHIPTestClusterAttributeListAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPUnitTestingAttributeListAttributeCallback::CHIPUnitTestingAttributeListAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -29212,7 +29212,7 @@ CHIPTestClusterAttributeListAttributeCallback::CHIPTestClusterAttributeListAttri
     }
 }
 
-CHIPTestClusterAttributeListAttributeCallback::~CHIPTestClusterAttributeListAttributeCallback()
+CHIPUnitTestingAttributeListAttributeCallback::~CHIPUnitTestingAttributeListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -29223,7 +29223,7 @@ CHIPTestClusterAttributeListAttributeCallback::~CHIPTestClusterAttributeListAttr
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPTestClusterAttributeListAttributeCallback::CallbackFn(void * context,
+void CHIPUnitTestingAttributeListAttributeCallback::CallbackFn(void * context,
                                                                const chip::app::DataModel::DecodableList & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
@@ -29233,8 +29233,8 @@ void CHIPTestClusterAttributeListAttributeCallback::CallbackFn(void * context,
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr cppCallback(
-        reinterpret_cast(context), maybeDestroy);
+    std::unique_ptr cppCallback(
+        reinterpret_cast(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h
index f488ecefabe54e..c3787ecc43b9fa 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h
@@ -10800,20 +10800,20 @@ class CHIPElectricalMeasurementAttributeListAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListInt8uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListInt8uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListInt8uAttributeCallback();
+    ~CHIPUnitTestingListInt8uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListInt8uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListInt8uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -10821,7 +10821,7 @@ class CHIPTestClusterListInt8uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10830,20 +10830,20 @@ class CHIPTestClusterListInt8uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListOctetStringAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListOctetStringAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListOctetStringAttributeCallback();
+    ~CHIPUnitTestingListOctetStringAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListOctetStringAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListOctetStringAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -10851,7 +10851,7 @@ class CHIPTestClusterListOctetStringAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10860,31 +10860,31 @@ class CHIPTestClusterListOctetStringAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListStructOctetStringAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListStructOctetStringAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListStructOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListStructOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListStructOctetStringAttributeCallback();
+    ~CHIPUnitTestingListStructOctetStringAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListStructOctetStringAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListStructOctetStringAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void CallbackFn(
         void * context,
-        const chip::app::DataModel::DecodableList &
+        const chip::app::DataModel::DecodableList &
             list);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10893,20 +10893,20 @@ class CHIPTestClusterListStructOctetStringAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterVendorIdAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingVendorIdAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterVendorIdAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingVendorIdAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterVendorIdAttributeCallback();
+    ~CHIPUnitTestingVendorIdAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterVendorIdAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingVendorIdAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -10914,7 +10914,7 @@ class CHIPTestClusterVendorIdAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10923,30 +10923,30 @@ class CHIPTestClusterVendorIdAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback();
+    ~CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListNullablesAndOptionalsStructAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void CallbackFn(void * context,
                            const chip::app::DataModel::DecodableList<
-                               chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & list);
+                               chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & list);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10955,20 +10955,20 @@ class CHIPTestClusterListNullablesAndOptionalsStructAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListLongOctetStringAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListLongOctetStringAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListLongOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListLongOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListLongOctetStringAttributeCallback();
+    ~CHIPUnitTestingListLongOctetStringAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListLongOctetStringAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListLongOctetStringAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -10976,7 +10976,7 @@ class CHIPTestClusterListLongOctetStringAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -10985,31 +10985,31 @@ class CHIPTestClusterListLongOctetStringAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterListFabricScopedAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingListFabricScopedAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterListFabricScopedAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingListFabricScopedAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterListFabricScopedAttributeCallback();
+    ~CHIPUnitTestingListFabricScopedAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterListFabricScopedAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingListFabricScopedAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void CallbackFn(
         void * context,
-        const chip::app::DataModel::DecodableList &
+        const chip::app::DataModel::DecodableList &
             list);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11018,20 +11018,20 @@ class CHIPTestClusterListFabricScopedAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableBooleanAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableBooleanAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableBooleanAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableBooleanAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableBooleanAttributeCallback();
+    ~CHIPUnitTestingNullableBooleanAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableBooleanAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableBooleanAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11039,7 +11039,7 @@ class CHIPTestClusterNullableBooleanAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11048,30 +11048,30 @@ class CHIPTestClusterNullableBooleanAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableBitmap8AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableBitmap8AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableBitmap8AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableBitmap8AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableBitmap8AttributeCallback();
+    ~CHIPUnitTestingNullableBitmap8AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableBitmap8AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableBitmap8AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void
     CallbackFn(void * context,
-               const chip::app::DataModel::Nullable> & value);
+               const chip::app::DataModel::Nullable> & value);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11080,30 +11080,30 @@ class CHIPTestClusterNullableBitmap8AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableBitmap16AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableBitmap16AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableBitmap16AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableBitmap16AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableBitmap16AttributeCallback();
+    ~CHIPUnitTestingNullableBitmap16AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableBitmap16AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableBitmap16AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void
     CallbackFn(void * context,
-               const chip::app::DataModel::Nullable> & value);
+               const chip::app::DataModel::Nullable> & value);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11112,30 +11112,30 @@ class CHIPTestClusterNullableBitmap16AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableBitmap32AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableBitmap32AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableBitmap32AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableBitmap32AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableBitmap32AttributeCallback();
+    ~CHIPUnitTestingNullableBitmap32AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableBitmap32AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableBitmap32AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void
     CallbackFn(void * context,
-               const chip::app::DataModel::Nullable> & value);
+               const chip::app::DataModel::Nullable> & value);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11144,30 +11144,30 @@ class CHIPTestClusterNullableBitmap32AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableBitmap64AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableBitmap64AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableBitmap64AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableBitmap64AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableBitmap64AttributeCallback();
+    ~CHIPUnitTestingNullableBitmap64AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableBitmap64AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableBitmap64AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void
     CallbackFn(void * context,
-               const chip::app::DataModel::Nullable> & value);
+               const chip::app::DataModel::Nullable> & value);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11176,20 +11176,20 @@ class CHIPTestClusterNullableBitmap64AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt8uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt8uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt8uAttributeCallback();
+    ~CHIPUnitTestingNullableInt8uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt8uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt8uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11197,7 +11197,7 @@ class CHIPTestClusterNullableInt8uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11206,20 +11206,20 @@ class CHIPTestClusterNullableInt8uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt16uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt16uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt16uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt16uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt16uAttributeCallback();
+    ~CHIPUnitTestingNullableInt16uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt16uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt16uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11227,7 +11227,7 @@ class CHIPTestClusterNullableInt16uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11236,20 +11236,20 @@ class CHIPTestClusterNullableInt16uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt24uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt24uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt24uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt24uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt24uAttributeCallback();
+    ~CHIPUnitTestingNullableInt24uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt24uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt24uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11257,7 +11257,7 @@ class CHIPTestClusterNullableInt24uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11266,20 +11266,20 @@ class CHIPTestClusterNullableInt24uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt32uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt32uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt32uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt32uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt32uAttributeCallback();
+    ~CHIPUnitTestingNullableInt32uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt32uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt32uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11287,7 +11287,7 @@ class CHIPTestClusterNullableInt32uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11296,20 +11296,20 @@ class CHIPTestClusterNullableInt32uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt40uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt40uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt40uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt40uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt40uAttributeCallback();
+    ~CHIPUnitTestingNullableInt40uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt40uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt40uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11317,7 +11317,7 @@ class CHIPTestClusterNullableInt40uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11326,20 +11326,20 @@ class CHIPTestClusterNullableInt40uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt48uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt48uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt48uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt48uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt48uAttributeCallback();
+    ~CHIPUnitTestingNullableInt48uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt48uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt48uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11347,7 +11347,7 @@ class CHIPTestClusterNullableInt48uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11356,20 +11356,20 @@ class CHIPTestClusterNullableInt48uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt56uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt56uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt56uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt56uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt56uAttributeCallback();
+    ~CHIPUnitTestingNullableInt56uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt56uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt56uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11377,7 +11377,7 @@ class CHIPTestClusterNullableInt56uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11386,20 +11386,20 @@ class CHIPTestClusterNullableInt56uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt64uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt64uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt64uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt64uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt64uAttributeCallback();
+    ~CHIPUnitTestingNullableInt64uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt64uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt64uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11407,7 +11407,7 @@ class CHIPTestClusterNullableInt64uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11416,20 +11416,20 @@ class CHIPTestClusterNullableInt64uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt8sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt8sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt8sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt8sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt8sAttributeCallback();
+    ~CHIPUnitTestingNullableInt8sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt8sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt8sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11437,7 +11437,7 @@ class CHIPTestClusterNullableInt8sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11446,20 +11446,20 @@ class CHIPTestClusterNullableInt8sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt16sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt16sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt16sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt16sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt16sAttributeCallback();
+    ~CHIPUnitTestingNullableInt16sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt16sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt16sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11467,7 +11467,7 @@ class CHIPTestClusterNullableInt16sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11476,20 +11476,20 @@ class CHIPTestClusterNullableInt16sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt24sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt24sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt24sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt24sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt24sAttributeCallback();
+    ~CHIPUnitTestingNullableInt24sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt24sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt24sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11497,7 +11497,7 @@ class CHIPTestClusterNullableInt24sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11506,20 +11506,20 @@ class CHIPTestClusterNullableInt24sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt32sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt32sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt32sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt32sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt32sAttributeCallback();
+    ~CHIPUnitTestingNullableInt32sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt32sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt32sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11527,7 +11527,7 @@ class CHIPTestClusterNullableInt32sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11536,20 +11536,20 @@ class CHIPTestClusterNullableInt32sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt40sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt40sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt40sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt40sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt40sAttributeCallback();
+    ~CHIPUnitTestingNullableInt40sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt40sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt40sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11557,7 +11557,7 @@ class CHIPTestClusterNullableInt40sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11566,20 +11566,20 @@ class CHIPTestClusterNullableInt40sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt48sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt48sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt48sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt48sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt48sAttributeCallback();
+    ~CHIPUnitTestingNullableInt48sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt48sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt48sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11587,7 +11587,7 @@ class CHIPTestClusterNullableInt48sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11596,20 +11596,20 @@ class CHIPTestClusterNullableInt48sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt56sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt56sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt56sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt56sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt56sAttributeCallback();
+    ~CHIPUnitTestingNullableInt56sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt56sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt56sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11617,7 +11617,7 @@ class CHIPTestClusterNullableInt56sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11626,20 +11626,20 @@ class CHIPTestClusterNullableInt56sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableInt64sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableInt64sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableInt64sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableInt64sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableInt64sAttributeCallback();
+    ~CHIPUnitTestingNullableInt64sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableInt64sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableInt64sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11647,7 +11647,7 @@ class CHIPTestClusterNullableInt64sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11656,20 +11656,20 @@ class CHIPTestClusterNullableInt64sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableEnum8AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableEnum8AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableEnum8AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableEnum8AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableEnum8AttributeCallback();
+    ~CHIPUnitTestingNullableEnum8AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableEnum8AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableEnum8AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11677,7 +11677,7 @@ class CHIPTestClusterNullableEnum8AttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11686,20 +11686,20 @@ class CHIPTestClusterNullableEnum8AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableEnum16AttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableEnum16AttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableEnum16AttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableEnum16AttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableEnum16AttributeCallback();
+    ~CHIPUnitTestingNullableEnum16AttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableEnum16AttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableEnum16AttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11707,7 +11707,7 @@ class CHIPTestClusterNullableEnum16AttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11716,20 +11716,20 @@ class CHIPTestClusterNullableEnum16AttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableFloatSingleAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableFloatSingleAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableFloatSingleAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableFloatSingleAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableFloatSingleAttributeCallback();
+    ~CHIPUnitTestingNullableFloatSingleAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableFloatSingleAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableFloatSingleAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11737,7 +11737,7 @@ class CHIPTestClusterNullableFloatSingleAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11746,20 +11746,20 @@ class CHIPTestClusterNullableFloatSingleAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableFloatDoubleAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableFloatDoubleAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableFloatDoubleAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableFloatDoubleAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableFloatDoubleAttributeCallback();
+    ~CHIPUnitTestingNullableFloatDoubleAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableFloatDoubleAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableFloatDoubleAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11767,7 +11767,7 @@ class CHIPTestClusterNullableFloatDoubleAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11776,20 +11776,20 @@ class CHIPTestClusterNullableFloatDoubleAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableOctetStringAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableOctetStringAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableOctetStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableOctetStringAttributeCallback();
+    ~CHIPUnitTestingNullableOctetStringAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableOctetStringAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableOctetStringAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11797,7 +11797,7 @@ class CHIPTestClusterNullableOctetStringAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11806,20 +11806,20 @@ class CHIPTestClusterNullableOctetStringAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableCharStringAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableCharStringAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableCharStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableCharStringAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableCharStringAttributeCallback();
+    ~CHIPUnitTestingNullableCharStringAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableCharStringAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableCharStringAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11827,7 +11827,7 @@ class CHIPTestClusterNullableCharStringAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11836,29 +11836,29 @@ class CHIPTestClusterNullableCharStringAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableEnumAttrAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableEnumAttrAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableEnumAttrAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableEnumAttrAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableEnumAttrAttributeCallback();
+    ~CHIPUnitTestingNullableEnumAttrAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableEnumAttrAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableEnumAttrAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
     static void CallbackFn(void * context,
-                           const chip::app::DataModel::Nullable & value);
+                           const chip::app::DataModel::Nullable & value);
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11867,20 +11867,20 @@ class CHIPTestClusterNullableEnumAttrAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback();
+    ~CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableRangeRestrictedInt8uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11888,7 +11888,7 @@ class CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11897,20 +11897,20 @@ class CHIPTestClusterNullableRangeRestrictedInt8uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback();
+    ~CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableRangeRestrictedInt8sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11918,7 +11918,7 @@ class CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11927,20 +11927,20 @@ class CHIPTestClusterNullableRangeRestrictedInt8sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback();
+    ~CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableRangeRestrictedInt16uAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11948,7 +11948,7 @@ class CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11957,20 +11957,20 @@ class CHIPTestClusterNullableRangeRestrictedInt16uAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback();
+    ~CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingNullableRangeRestrictedInt16sAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -11978,7 +11978,7 @@ class CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -11987,20 +11987,20 @@ class CHIPTestClusterNullableRangeRestrictedInt16sAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterGeneratedCommandListAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingGeneratedCommandListAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterGeneratedCommandListAttributeCallback();
+    ~CHIPUnitTestingGeneratedCommandListAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterGeneratedCommandListAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingGeneratedCommandListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -12008,7 +12008,7 @@ class CHIPTestClusterGeneratedCommandListAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -12017,20 +12017,20 @@ class CHIPTestClusterGeneratedCommandListAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterAcceptedCommandListAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingAcceptedCommandListAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterAcceptedCommandListAttributeCallback();
+    ~CHIPUnitTestingAcceptedCommandListAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterAcceptedCommandListAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingAcceptedCommandListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -12038,7 +12038,7 @@ class CHIPTestClusterAcceptedCommandListAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -12047,20 +12047,20 @@ class CHIPTestClusterAcceptedCommandListAttributeCallback
     bool keepAlive;
 };
 
-class CHIPTestClusterAttributeListAttributeCallback
-    : public chip::Callback::Callback
+class CHIPUnitTestingAttributeListAttributeCallback
+    : public chip::Callback::Callback
 {
 public:
-    CHIPTestClusterAttributeListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPUnitTestingAttributeListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPTestClusterAttributeListAttributeCallback();
+    ~CHIPUnitTestingAttributeListAttributeCallback();
 
-    static void maybeDestroy(CHIPTestClusterAttributeListAttributeCallback * callback)
+    static void maybeDestroy(CHIPUnitTestingAttributeListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete(callback);
+            chip::Platform::Delete(callback);
         }
     }
 
@@ -12068,7 +12068,7 @@ class CHIPTestClusterAttributeListAttributeCallback
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast(context)->javaCallbackRef);
+            reinterpret_cast(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index 2e2cdc863599b4..a6200f343ce3e7 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -21910,10 +21910,10 @@ private native void subscribeClusterRevisionAttribute(
         long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
   }
 
-  public static class TestClusterCluster extends BaseChipCluster {
+  public static class UnitTestingCluster extends BaseChipCluster {
     public static final long CLUSTER_ID = 4294048773L;
 
-    public TestClusterCluster(long devicePtr, int endpointId) {
+    public UnitTestingCluster(long devicePtr, int endpointId) {
       super(devicePtr, endpointId);
     }
 
@@ -21970,38 +21970,38 @@ public void testAddArguments(
     }
 
     public void testStructArgumentRequest(
-        BooleanResponseCallback callback, ChipStructs.TestClusterClusterSimpleStruct arg1) {
+        BooleanResponseCallback callback, ChipStructs.UnitTestingClusterSimpleStruct arg1) {
       testStructArgumentRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void testStructArgumentRequest(
         BooleanResponseCallback callback,
-        ChipStructs.TestClusterClusterSimpleStruct arg1,
+        ChipStructs.UnitTestingClusterSimpleStruct arg1,
         int timedInvokeTimeoutMs) {
       testStructArgumentRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
 
     public void testNestedStructArgumentRequest(
-        BooleanResponseCallback callback, ChipStructs.TestClusterClusterNestedStruct arg1) {
+        BooleanResponseCallback callback, ChipStructs.UnitTestingClusterNestedStruct arg1) {
       testNestedStructArgumentRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void testNestedStructArgumentRequest(
         BooleanResponseCallback callback,
-        ChipStructs.TestClusterClusterNestedStruct arg1,
+        ChipStructs.UnitTestingClusterNestedStruct arg1,
         int timedInvokeTimeoutMs) {
       testNestedStructArgumentRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
 
     public void testListStructArgumentRequest(
         BooleanResponseCallback callback,
-        ArrayList arg1) {
+        ArrayList arg1) {
       testListStructArgumentRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void testListStructArgumentRequest(
         BooleanResponseCallback callback,
-        ArrayList arg1,
+        ArrayList arg1,
         int timedInvokeTimeoutMs) {
       testListStructArgumentRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
@@ -22017,26 +22017,26 @@ public void testListInt8UArgumentRequest(
     }
 
     public void testNestedStructListArgumentRequest(
-        BooleanResponseCallback callback, ChipStructs.TestClusterClusterNestedStructList arg1) {
+        BooleanResponseCallback callback, ChipStructs.UnitTestingClusterNestedStructList arg1) {
       testNestedStructListArgumentRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void testNestedStructListArgumentRequest(
         BooleanResponseCallback callback,
-        ChipStructs.TestClusterClusterNestedStructList arg1,
+        ChipStructs.UnitTestingClusterNestedStructList arg1,
         int timedInvokeTimeoutMs) {
       testNestedStructListArgumentRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
 
     public void testListNestedStructListArgumentRequest(
         BooleanResponseCallback callback,
-        ArrayList arg1) {
+        ArrayList arg1) {
       testListNestedStructListArgumentRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void testListNestedStructListArgumentRequest(
         BooleanResponseCallback callback,
-        ArrayList arg1,
+        ArrayList arg1,
         int timedInvokeTimeoutMs) {
       testListNestedStructListArgumentRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
@@ -22075,13 +22075,13 @@ public void testNullableOptionalRequest(
     }
 
     public void simpleStructEchoRequest(
-        SimpleStructResponseCallback callback, ChipStructs.TestClusterClusterSimpleStruct arg1) {
+        SimpleStructResponseCallback callback, ChipStructs.UnitTestingClusterSimpleStruct arg1) {
       simpleStructEchoRequest(chipClusterPtr, callback, arg1, null);
     }
 
     public void simpleStructEchoRequest(
         SimpleStructResponseCallback callback,
-        ChipStructs.TestClusterClusterSimpleStruct arg1,
+        ChipStructs.UnitTestingClusterSimpleStruct arg1,
         int timedInvokeTimeoutMs) {
       simpleStructEchoRequest(chipClusterPtr, callback, arg1, timedInvokeTimeoutMs);
     }
@@ -22145,19 +22145,19 @@ private native void testAddArguments(
     private native void testStructArgumentRequest(
         long chipClusterPtr,
         BooleanResponseCallback Callback,
-        ChipStructs.TestClusterClusterSimpleStruct arg1,
+        ChipStructs.UnitTestingClusterSimpleStruct arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void testNestedStructArgumentRequest(
         long chipClusterPtr,
         BooleanResponseCallback Callback,
-        ChipStructs.TestClusterClusterNestedStruct arg1,
+        ChipStructs.UnitTestingClusterNestedStruct arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void testListStructArgumentRequest(
         long chipClusterPtr,
         BooleanResponseCallback Callback,
-        ArrayList arg1,
+        ArrayList arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void testListInt8UArgumentRequest(
@@ -22169,13 +22169,13 @@ private native void testListInt8UArgumentRequest(
     private native void testNestedStructListArgumentRequest(
         long chipClusterPtr,
         BooleanResponseCallback Callback,
-        ChipStructs.TestClusterClusterNestedStructList arg1,
+        ChipStructs.UnitTestingClusterNestedStructList arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void testListNestedStructListArgumentRequest(
         long chipClusterPtr,
         BooleanResponseCallback Callback,
-        ArrayList arg1,
+        ArrayList arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void testListInt8UReverseRequest(
@@ -22200,7 +22200,7 @@ private native void testNullableOptionalRequest(
     private native void simpleStructEchoRequest(
         long chipClusterPtr,
         SimpleStructResponseCallback Callback,
-        ChipStructs.TestClusterClusterSimpleStruct arg1,
+        ChipStructs.UnitTestingClusterSimpleStruct arg1,
         @Nullable Integer timedInvokeTimeoutMs);
 
     private native void timedInvokeRequest(
@@ -22263,7 +22263,7 @@ public interface BooleanResponseCallback {
     }
 
     public interface SimpleStructResponseCallback {
-      void onSuccess(ChipStructs.TestClusterClusterSimpleStruct arg1);
+      void onSuccess(ChipStructs.UnitTestingClusterSimpleStruct arg1);
 
       void onError(Exception error);
     }
@@ -22291,7 +22291,7 @@ default void onSubscriptionEstablished() {}
     }
 
     public interface ListStructOctetStringAttributeCallback {
-      void onSuccess(List valueList);
+      void onSuccess(List valueList);
 
       void onError(Exception ex);
 
@@ -22307,7 +22307,7 @@ default void onSubscriptionEstablished() {}
     }
 
     public interface ListNullablesAndOptionalsStructAttributeCallback {
-      void onSuccess(List valueList);
+      void onSuccess(List valueList);
 
       void onError(Exception ex);
 
@@ -22323,7 +22323,7 @@ default void onSubscriptionEstablished() {}
     }
 
     public interface ListFabricScopedAttributeCallback {
-      void onSuccess(List valueList);
+      void onSuccess(List valueList);
 
       void onError(Exception ex);
 
@@ -23122,13 +23122,13 @@ public void readListStructOctetStringAttribute(
 
     public void writeListStructOctetStringAttribute(
         DefaultClusterCallback callback,
-        ArrayList value) {
+        ArrayList value) {
       writeListStructOctetStringAttribute(chipClusterPtr, callback, value, null);
     }
 
     public void writeListStructOctetStringAttribute(
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         int timedWriteTimeoutMs) {
       writeListStructOctetStringAttribute(chipClusterPtr, callback, value, timedWriteTimeoutMs);
     }
@@ -23253,13 +23253,13 @@ public void readListNullablesAndOptionalsStructAttribute(
 
     public void writeListNullablesAndOptionalsStructAttribute(
         DefaultClusterCallback callback,
-        ArrayList value) {
+        ArrayList value) {
       writeListNullablesAndOptionalsStructAttribute(chipClusterPtr, callback, value, null);
     }
 
     public void writeListNullablesAndOptionalsStructAttribute(
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         int timedWriteTimeoutMs) {
       writeListNullablesAndOptionalsStructAttribute(
           chipClusterPtr, callback, value, timedWriteTimeoutMs);
@@ -23390,13 +23390,13 @@ public void readListFabricScopedAttribute(ListFabricScopedAttributeCallback call
 
     public void writeListFabricScopedAttribute(
         DefaultClusterCallback callback,
-        ArrayList value) {
+        ArrayList value) {
       writeListFabricScopedAttribute(chipClusterPtr, callback, value, null);
     }
 
     public void writeListFabricScopedAttribute(
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         int timedWriteTimeoutMs) {
       writeListFabricScopedAttribute(chipClusterPtr, callback, value, timedWriteTimeoutMs);
     }
@@ -24439,7 +24439,7 @@ private native void readListStructOctetStringAttribute(
     private native void writeListStructOctetStringAttribute(
         long chipClusterPtr,
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         @Nullable Integer timedWriteTimeoutMs);
 
     private native void subscribeListStructOctetStringAttribute(
@@ -24533,7 +24533,7 @@ private native void readListNullablesAndOptionalsStructAttribute(
     private native void writeListNullablesAndOptionalsStructAttribute(
         long chipClusterPtr,
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         @Nullable Integer timedWriteTimeoutMs);
 
     private native void subscribeListNullablesAndOptionalsStructAttribute(
@@ -24623,7 +24623,7 @@ private native void readListFabricScopedAttribute(
     private native void writeListFabricScopedAttribute(
         long chipClusterPtr,
         DefaultClusterCallback callback,
-        ArrayList value,
+        ArrayList value,
         @Nullable Integer timedWriteTimeoutMs);
 
     private native void subscribeListFabricScopedAttribute(
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
index c3d450db99436f..f2cadefe25e82c 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
@@ -1227,20 +1227,20 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterTestEventEvent {
+  public static class UnitTestingClusterTestEventEvent {
     public Integer arg1;
     public Integer arg2;
     public Boolean arg3;
-    public ChipStructs.TestClusterClusterSimpleStruct arg4;
-    public ArrayList arg5;
+    public ChipStructs.UnitTestingClusterSimpleStruct arg4;
+    public ArrayList arg5;
     public ArrayList arg6;
 
-    public TestClusterClusterTestEventEvent(
+    public UnitTestingClusterTestEventEvent(
         Integer arg1,
         Integer arg2,
         Boolean arg3,
-        ChipStructs.TestClusterClusterSimpleStruct arg4,
-        ArrayList arg5,
+        ChipStructs.UnitTestingClusterSimpleStruct arg4,
+        ArrayList arg5,
         ArrayList arg6) {
       this.arg1 = arg1;
       this.arg2 = arg2;
@@ -1253,7 +1253,7 @@ public TestClusterClusterTestEventEvent(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterTestEventEvent {\n");
+      output.append("UnitTestingClusterTestEventEvent {\n");
       output.append("\targ1: ");
       output.append(arg1);
       output.append("\n");
@@ -1277,17 +1277,17 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterTestFabricScopedEventEvent {
+  public static class UnitTestingClusterTestFabricScopedEventEvent {
     public Integer fabricIndex;
 
-    public TestClusterClusterTestFabricScopedEventEvent(Integer fabricIndex) {
+    public UnitTestingClusterTestFabricScopedEventEvent(Integer fabricIndex) {
       this.fabricIndex = fabricIndex;
     }
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterTestFabricScopedEventEvent {\n");
+      output.append("UnitTestingClusterTestFabricScopedEventEvent {\n");
       output.append("\tfabricIndex: ");
       output.append(fabricIndex);
       output.append("\n");
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
index ff790011258758..46be764d7d6958 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
@@ -218,7 +218,7 @@ public static String clusterIdToName(long clusterId) {
       return "ElectricalMeasurement";
     }
     if (clusterId == 4294048773L) {
-      return "TestCluster";
+      return "UnitTesting";
     }
     return "";
   }
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
index eb9c76ab151f4b..19873b04162950 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
@@ -1827,7 +1827,7 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterSimpleStruct {
+  public static class UnitTestingClusterSimpleStruct {
     public Integer a;
     public Boolean b;
     public Integer c;
@@ -1837,7 +1837,7 @@ public static class TestClusterClusterSimpleStruct {
     public Float g;
     public Double h;
 
-    public TestClusterClusterSimpleStruct(
+    public UnitTestingClusterSimpleStruct(
         Integer a, Boolean b, Integer c, byte[] d, String e, Integer f, Float g, Double h) {
       this.a = a;
       this.b = b;
@@ -1852,7 +1852,7 @@ public TestClusterClusterSimpleStruct(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterSimpleStruct {\n");
+      output.append("UnitTestingClusterSimpleStruct {\n");
       output.append("\ta: ");
       output.append(a);
       output.append("\n");
@@ -1882,23 +1882,23 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterTestFabricScoped {
+  public static class UnitTestingClusterTestFabricScoped {
     public Integer fabricSensitiveInt8u;
     public Optional optionalFabricSensitiveInt8u;
     public @Nullable Integer nullableFabricSensitiveInt8u;
     public @Nullable Optional nullableOptionalFabricSensitiveInt8u;
     public String fabricSensitiveCharString;
-    public ChipStructs.TestClusterClusterSimpleStruct fabricSensitiveStruct;
+    public ChipStructs.UnitTestingClusterSimpleStruct fabricSensitiveStruct;
     public ArrayList fabricSensitiveInt8uList;
     public Integer fabricIndex;
 
-    public TestClusterClusterTestFabricScoped(
+    public UnitTestingClusterTestFabricScoped(
         Integer fabricSensitiveInt8u,
         Optional optionalFabricSensitiveInt8u,
         @Nullable Integer nullableFabricSensitiveInt8u,
         @Nullable Optional nullableOptionalFabricSensitiveInt8u,
         String fabricSensitiveCharString,
-        ChipStructs.TestClusterClusterSimpleStruct fabricSensitiveStruct,
+        ChipStructs.UnitTestingClusterSimpleStruct fabricSensitiveStruct,
         ArrayList fabricSensitiveInt8uList,
         Integer fabricIndex) {
       this.fabricSensitiveInt8u = fabricSensitiveInt8u;
@@ -1914,7 +1914,7 @@ public TestClusterClusterTestFabricScoped(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterTestFabricScoped {\n");
+      output.append("UnitTestingClusterTestFabricScoped {\n");
       output.append("\tfabricSensitiveInt8u: ");
       output.append(fabricSensitiveInt8u);
       output.append("\n");
@@ -1944,30 +1944,30 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterNullablesAndOptionalsStruct {
+  public static class UnitTestingClusterNullablesAndOptionalsStruct {
     public @Nullable Integer nullableInt;
     public Optional optionalInt;
     public @Nullable Optional nullableOptionalInt;
     public @Nullable String nullableString;
     public Optional optionalString;
     public @Nullable Optional nullableOptionalString;
-    public @Nullable ChipStructs.TestClusterClusterSimpleStruct nullableStruct;
-    public Optional optionalStruct;
-    public @Nullable Optional nullableOptionalStruct;
+    public @Nullable ChipStructs.UnitTestingClusterSimpleStruct nullableStruct;
+    public Optional optionalStruct;
+    public @Nullable Optional nullableOptionalStruct;
     public @Nullable ArrayList nullableList;
     public Optional> optionalList;
     public @Nullable Optional> nullableOptionalList;
 
-    public TestClusterClusterNullablesAndOptionalsStruct(
+    public UnitTestingClusterNullablesAndOptionalsStruct(
         @Nullable Integer nullableInt,
         Optional optionalInt,
         @Nullable Optional nullableOptionalInt,
         @Nullable String nullableString,
         Optional optionalString,
         @Nullable Optional nullableOptionalString,
-        @Nullable ChipStructs.TestClusterClusterSimpleStruct nullableStruct,
-        Optional optionalStruct,
-        @Nullable Optional nullableOptionalStruct,
+        @Nullable ChipStructs.UnitTestingClusterSimpleStruct nullableStruct,
+        Optional optionalStruct,
+        @Nullable Optional nullableOptionalStruct,
         @Nullable ArrayList nullableList,
         Optional> optionalList,
         @Nullable Optional> nullableOptionalList) {
@@ -1988,7 +1988,7 @@ public TestClusterClusterNullablesAndOptionalsStruct(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterNullablesAndOptionalsStruct {\n");
+      output.append("UnitTestingClusterNullablesAndOptionalsStruct {\n");
       output.append("\tnullableInt: ");
       output.append(nullableInt);
       output.append("\n");
@@ -2030,13 +2030,13 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterNestedStruct {
+  public static class UnitTestingClusterNestedStruct {
     public Integer a;
     public Boolean b;
-    public ChipStructs.TestClusterClusterSimpleStruct c;
+    public ChipStructs.UnitTestingClusterSimpleStruct c;
 
-    public TestClusterClusterNestedStruct(
-        Integer a, Boolean b, ChipStructs.TestClusterClusterSimpleStruct c) {
+    public UnitTestingClusterNestedStruct(
+        Integer a, Boolean b, ChipStructs.UnitTestingClusterSimpleStruct c) {
       this.a = a;
       this.b = b;
       this.c = c;
@@ -2045,7 +2045,7 @@ public TestClusterClusterNestedStruct(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterNestedStruct {\n");
+      output.append("UnitTestingClusterNestedStruct {\n");
       output.append("\ta: ");
       output.append(a);
       output.append("\n");
@@ -2060,20 +2060,20 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterNestedStructList {
+  public static class UnitTestingClusterNestedStructList {
     public Integer a;
     public Boolean b;
-    public ChipStructs.TestClusterClusterSimpleStruct c;
-    public ArrayList d;
+    public ChipStructs.UnitTestingClusterSimpleStruct c;
+    public ArrayList d;
     public ArrayList e;
     public ArrayList f;
     public ArrayList g;
 
-    public TestClusterClusterNestedStructList(
+    public UnitTestingClusterNestedStructList(
         Integer a,
         Boolean b,
-        ChipStructs.TestClusterClusterSimpleStruct c,
-        ArrayList d,
+        ChipStructs.UnitTestingClusterSimpleStruct c,
+        ArrayList d,
         ArrayList e,
         ArrayList f,
         ArrayList g) {
@@ -2089,7 +2089,7 @@ public TestClusterClusterNestedStructList(
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterNestedStructList {\n");
+      output.append("UnitTestingClusterNestedStructList {\n");
       output.append("\ta: ");
       output.append(a);
       output.append("\n");
@@ -2116,18 +2116,18 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterDoubleNestedStructList {
-    public ArrayList a;
+  public static class UnitTestingClusterDoubleNestedStructList {
+    public ArrayList a;
 
-    public TestClusterClusterDoubleNestedStructList(
-        ArrayList a) {
+    public UnitTestingClusterDoubleNestedStructList(
+        ArrayList a) {
       this.a = a;
     }
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterDoubleNestedStructList {\n");
+      output.append("UnitTestingClusterDoubleNestedStructList {\n");
       output.append("\ta: ");
       output.append(a);
       output.append("\n");
@@ -2136,11 +2136,11 @@ public String toString() {
     }
   }
 
-  public static class TestClusterClusterTestListStructOctet {
+  public static class UnitTestingClusterTestListStructOctet {
     public Long member1;
     public byte[] member2;
 
-    public TestClusterClusterTestListStructOctet(Long member1, byte[] member2) {
+    public UnitTestingClusterTestListStructOctet(Long member1, byte[] member2) {
       this.member1 = member1;
       this.member2 = member2;
     }
@@ -2148,7 +2148,7 @@ public TestClusterClusterTestListStructOctet(Long member1, byte[] member2) {
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("TestClusterClusterTestListStructOctet {\n");
+      output.append("UnitTestingClusterTestListStructOctet {\n");
       output.append("\tmember1: ");
       output.append(member1);
       output.append("\n");
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index f1614c42ad0653..9a357cb064a1a1 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -6698,7 +6698,7 @@ public void onError(Exception ex) {
   }
 
   public static class DelegatedTestSpecificResponseCallback
-      implements ChipClusters.TestClusterCluster.TestSpecificResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestSpecificResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6723,7 +6723,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedTestAddArgumentsResponseCallback
-      implements ChipClusters.TestClusterCluster.TestAddArgumentsResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestAddArgumentsResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6748,7 +6748,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedTestListInt8UReverseResponseCallback
-      implements ChipClusters.TestClusterCluster.TestListInt8UReverseResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestListInt8UReverseResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6772,7 +6772,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedTestEnumsResponseCallback
-      implements ChipClusters.TestClusterCluster.TestEnumsResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestEnumsResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6798,7 +6798,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedTestNullableOptionalResponseCallback
-      implements ChipClusters.TestClusterCluster.TestNullableOptionalResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestNullableOptionalResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6836,7 +6836,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedBooleanResponseCallback
-      implements ChipClusters.TestClusterCluster.BooleanResponseCallback, DelegatedClusterCallback {
+      implements ChipClusters.UnitTestingCluster.BooleanResponseCallback, DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
     @Override
@@ -6859,7 +6859,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedSimpleStructResponseCallback
-      implements ChipClusters.TestClusterCluster.SimpleStructResponseCallback,
+      implements ChipClusters.UnitTestingCluster.SimpleStructResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6869,7 +6869,7 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
     }
 
     @Override
-    public void onSuccess(ChipStructs.TestClusterClusterSimpleStruct arg1) {
+    public void onSuccess(ChipStructs.UnitTestingClusterSimpleStruct arg1) {
       Map responseValues = new LinkedHashMap<>();
       // arg1: Struct SimpleStruct
       // Conversion from this type to Java is not properly implemented yet
@@ -6883,7 +6883,7 @@ public void onError(Exception error) {
   }
 
   public static class DelegatedTestEmitTestEventResponseCallback
-      implements ChipClusters.TestClusterCluster.TestEmitTestEventResponseCallback,
+      implements ChipClusters.UnitTestingCluster.TestEmitTestEventResponseCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6906,8 +6906,8 @@ public void onError(Exception error) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListInt8uAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListInt8uAttributeCallback,
+  public static class DelegatedUnitTestingClusterListInt8uAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListInt8uAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6931,8 +6931,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListOctetStringAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListOctetStringAttributeCallback,
+  public static class DelegatedUnitTestingClusterListOctetStringAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListOctetStringAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6956,8 +6956,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListStructOctetStringAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListStructOctetStringAttributeCallback,
+  public static class DelegatedUnitTestingClusterListStructOctetStringAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListStructOctetStringAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6967,11 +6967,11 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
     }
 
     @Override
-    public void onSuccess(List valueList) {
+    public void onSuccess(List valueList) {
       Map responseValues = new LinkedHashMap<>();
       CommandResponseInfo commandResponseInfo =
           new CommandResponseInfo(
-              "valueList", "List");
+              "valueList", "List");
       responseValues.put(commandResponseInfo, valueList);
       callback.onSuccess(responseValues);
     }
@@ -6982,8 +6982,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListNullablesAndOptionalsStructAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListNullablesAndOptionalsStructAttributeCallback,
+  public static class DelegatedUnitTestingClusterListNullablesAndOptionalsStructAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListNullablesAndOptionalsStructAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -6994,11 +6994,11 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
 
     @Override
     public void onSuccess(
-        List valueList) {
+        List valueList) {
       Map responseValues = new LinkedHashMap<>();
       CommandResponseInfo commandResponseInfo =
           new CommandResponseInfo(
-              "valueList", "List");
+              "valueList", "List");
       responseValues.put(commandResponseInfo, valueList);
       callback.onSuccess(responseValues);
     }
@@ -7009,8 +7009,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListLongOctetStringAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListLongOctetStringAttributeCallback,
+  public static class DelegatedUnitTestingClusterListLongOctetStringAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListLongOctetStringAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7034,8 +7034,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterListFabricScopedAttributeCallback
-      implements ChipClusters.TestClusterCluster.ListFabricScopedAttributeCallback,
+  public static class DelegatedUnitTestingClusterListFabricScopedAttributeCallback
+      implements ChipClusters.UnitTestingCluster.ListFabricScopedAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7045,11 +7045,11 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
     }
 
     @Override
-    public void onSuccess(List valueList) {
+    public void onSuccess(List valueList) {
       Map responseValues = new LinkedHashMap<>();
       CommandResponseInfo commandResponseInfo =
           new CommandResponseInfo(
-              "valueList", "List");
+              "valueList", "List");
       responseValues.put(commandResponseInfo, valueList);
       callback.onSuccess(responseValues);
     }
@@ -7060,8 +7060,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterGeneratedCommandListAttributeCallback
-      implements ChipClusters.TestClusterCluster.GeneratedCommandListAttributeCallback,
+  public static class DelegatedUnitTestingClusterGeneratedCommandListAttributeCallback
+      implements ChipClusters.UnitTestingCluster.GeneratedCommandListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7084,8 +7084,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterAcceptedCommandListAttributeCallback
-      implements ChipClusters.TestClusterCluster.AcceptedCommandListAttributeCallback,
+  public static class DelegatedUnitTestingClusterAcceptedCommandListAttributeCallback
+      implements ChipClusters.UnitTestingCluster.AcceptedCommandListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7108,8 +7108,8 @@ public void onError(Exception ex) {
     }
   }
 
-  public static class DelegatedTestClusterClusterAttributeListAttributeCallback
-      implements ChipClusters.TestClusterCluster.AttributeListAttributeCallback,
+  public static class DelegatedUnitTestingClusterAttributeListAttributeCallback
+      implements ChipClusters.UnitTestingCluster.AttributeListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7466,11 +7466,11 @@ public Map initializeClusterMap() {
             (ptr, endpointId) -> new ChipClusters.ElectricalMeasurementCluster(ptr, endpointId),
             new HashMap<>());
     clusterMap.put("electricalMeasurement", electricalMeasurementClusterInfo);
-    ClusterInfo testClusterClusterInfo =
+    ClusterInfo unitTestingClusterInfo =
         new ClusterInfo(
-            (ptr, endpointId) -> new ChipClusters.TestClusterCluster(ptr, endpointId),
+            (ptr, endpointId) -> new ChipClusters.UnitTestingCluster(ptr, endpointId),
             new HashMap<>());
-    clusterMap.put("testCluster", testClusterClusterInfo);
+    clusterMap.put("unitTesting", unitTestingClusterInfo);
     return clusterMap;
   }
 
@@ -7562,7 +7562,7 @@ public void combineCommand(
     destination.get("applicationBasic").combineCommands(source.get("applicationBasic"));
     destination.get("accountLogin").combineCommands(source.get("accountLogin"));
     destination.get("electricalMeasurement").combineCommands(source.get("electricalMeasurement"));
-    destination.get("testCluster").combineCommands(source.get("testCluster"));
+    destination.get("unitTesting").combineCommands(source.get("unitTesting"));
   }
 
   @SuppressWarnings("unchecked")
@@ -11690,318 +11690,318 @@ public Map> getCommandMap() {
     Map electricalMeasurementClusterInteractionInfoMap =
         new LinkedHashMap<>();
     commandMap.put("electricalMeasurement", electricalMeasurementClusterInteractionInfoMap);
-    Map testClusterClusterInteractionInfoMap = new LinkedHashMap<>();
-    Map testClustertestCommandParams =
+    Map unitTestingClusterInteractionInfoMap = new LinkedHashMap<>();
+    Map unitTestingtestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestInteractionInfo =
+    InteractionInfo unitTestingtestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster).test((DefaultClusterCallback) callback);
+              ((ChipClusters.UnitTestingCluster) cluster).test((DefaultClusterCallback) callback);
             },
             () -> new DelegatedDefaultClusterCallback(),
-            testClustertestCommandParams);
-    testClusterClusterInteractionInfoMap.put("test", testClustertestInteractionInfo);
-    Map testClustertestNotHandledCommandParams =
+            unitTestingtestCommandParams);
+    unitTestingClusterInteractionInfoMap.put("test", unitTestingtestInteractionInfo);
+    Map unitTestingtestNotHandledCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestNotHandledInteractionInfo =
+    InteractionInfo unitTestingtestNotHandledInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testNotHandled((DefaultClusterCallback) callback);
             },
             () -> new DelegatedDefaultClusterCallback(),
-            testClustertestNotHandledCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testNotHandled", testClustertestNotHandledInteractionInfo);
-    Map testClustertestSpecificCommandParams =
+            unitTestingtestNotHandledCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testNotHandled", unitTestingtestNotHandledInteractionInfo);
+    Map unitTestingtestSpecificCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestSpecificInteractionInfo =
+    InteractionInfo unitTestingtestSpecificInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testSpecific(
-                      (ChipClusters.TestClusterCluster.TestSpecificResponseCallback) callback);
+                      (ChipClusters.UnitTestingCluster.TestSpecificResponseCallback) callback);
             },
             () -> new DelegatedTestSpecificResponseCallback(),
-            testClustertestSpecificCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testSpecific", testClustertestSpecificInteractionInfo);
-    Map testClustertestUnknownCommandCommandParams =
+            unitTestingtestSpecificCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testSpecific", unitTestingtestSpecificInteractionInfo);
+    Map unitTestingtestUnknownCommandCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestUnknownCommandInteractionInfo =
+    InteractionInfo unitTestingtestUnknownCommandInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testUnknownCommand((DefaultClusterCallback) callback);
             },
             () -> new DelegatedDefaultClusterCallback(),
-            testClustertestUnknownCommandCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testUnknownCommand", testClustertestUnknownCommandInteractionInfo);
-    Map testClustertestAddArgumentsCommandParams =
+            unitTestingtestUnknownCommandCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testUnknownCommand", unitTestingtestUnknownCommandInteractionInfo);
+    Map unitTestingtestAddArgumentsCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestAddArgumentsarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestAddArgumentsarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", Integer.class, Integer.class);
-    testClustertestAddArgumentsCommandParams.put(
-        "arg1", testClustertestAddArgumentsarg1CommandParameterInfo);
+    unitTestingtestAddArgumentsCommandParams.put(
+        "arg1", unitTestingtestAddArgumentsarg1CommandParameterInfo);
 
-    CommandParameterInfo testClustertestAddArgumentsarg2CommandParameterInfo =
+    CommandParameterInfo unitTestingtestAddArgumentsarg2CommandParameterInfo =
         new CommandParameterInfo("arg2", Integer.class, Integer.class);
-    testClustertestAddArgumentsCommandParams.put(
-        "arg2", testClustertestAddArgumentsarg2CommandParameterInfo);
+    unitTestingtestAddArgumentsCommandParams.put(
+        "arg2", unitTestingtestAddArgumentsarg2CommandParameterInfo);
 
-    InteractionInfo testClustertestAddArgumentsInteractionInfo =
+    InteractionInfo unitTestingtestAddArgumentsInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testAddArguments(
-                      (ChipClusters.TestClusterCluster.TestAddArgumentsResponseCallback) callback,
+                      (ChipClusters.UnitTestingCluster.TestAddArgumentsResponseCallback) callback,
                       (Integer) commandArguments.get("arg1"),
                       (Integer) commandArguments.get("arg2"));
             },
             () -> new DelegatedTestAddArgumentsResponseCallback(),
-            testClustertestAddArgumentsCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testAddArguments", testClustertestAddArgumentsInteractionInfo);
-    Map testClustertestStructArgumentRequestCommandParams =
+            unitTestingtestAddArgumentsCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testAddArguments", unitTestingtestAddArgumentsInteractionInfo);
+    Map unitTestingtestStructArgumentRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestStructArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestStructArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testStructArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
-                      (ChipStructs.TestClusterClusterSimpleStruct) commandArguments.get("arg1"));
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
+                      (ChipStructs.UnitTestingClusterSimpleStruct) commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestStructArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testStructArgumentRequest", testClustertestStructArgumentRequestInteractionInfo);
-    Map testClustertestNestedStructArgumentRequestCommandParams =
+            unitTestingtestStructArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testStructArgumentRequest", unitTestingtestStructArgumentRequestInteractionInfo);
+    Map unitTestingtestNestedStructArgumentRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestNestedStructArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestNestedStructArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testNestedStructArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
-                      (ChipStructs.TestClusterClusterNestedStruct) commandArguments.get("arg1"));
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
+                      (ChipStructs.UnitTestingClusterNestedStruct) commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestNestedStructArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
+            unitTestingtestNestedStructArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
         "testNestedStructArgumentRequest",
-        testClustertestNestedStructArgumentRequestInteractionInfo);
-    Map testClustertestListStructArgumentRequestCommandParams =
+        unitTestingtestNestedStructArgumentRequestInteractionInfo);
+    Map unitTestingtestListStructArgumentRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestListStructArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestListStructArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testListStructArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
-                      (ArrayList)
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
+                      (ArrayList)
                           commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestListStructArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testListStructArgumentRequest", testClustertestListStructArgumentRequestInteractionInfo);
-    Map testClustertestListInt8UArgumentRequestCommandParams =
+            unitTestingtestListStructArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testListStructArgumentRequest", unitTestingtestListStructArgumentRequestInteractionInfo);
+    Map unitTestingtestListInt8UArgumentRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestListInt8UArgumentRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestListInt8UArgumentRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", ArrayList.class, Object.class);
-    testClustertestListInt8UArgumentRequestCommandParams.put(
-        "arg1", testClustertestListInt8UArgumentRequestarg1CommandParameterInfo);
+    unitTestingtestListInt8UArgumentRequestCommandParams.put(
+        "arg1", unitTestingtestListInt8UArgumentRequestarg1CommandParameterInfo);
 
-    InteractionInfo testClustertestListInt8UArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestListInt8UArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testListInt8UArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
                       (ArrayList) commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestListInt8UArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testListInt8UArgumentRequest", testClustertestListInt8UArgumentRequestInteractionInfo);
-    Map testClustertestNestedStructListArgumentRequestCommandParams =
+            unitTestingtestListInt8UArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testListInt8UArgumentRequest", unitTestingtestListInt8UArgumentRequestInteractionInfo);
+    Map unitTestingtestNestedStructListArgumentRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertestNestedStructListArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestNestedStructListArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testNestedStructListArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
-                      (ChipStructs.TestClusterClusterNestedStructList)
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
+                      (ChipStructs.UnitTestingClusterNestedStructList)
                           commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestNestedStructListArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
+            unitTestingtestNestedStructListArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
         "testNestedStructListArgumentRequest",
-        testClustertestNestedStructListArgumentRequestInteractionInfo);
+        unitTestingtestNestedStructListArgumentRequestInteractionInfo);
     Map
-        testClustertestListNestedStructListArgumentRequestCommandParams =
+        unitTestingtestListNestedStructListArgumentRequestCommandParams =
             new LinkedHashMap();
-    InteractionInfo testClustertestListNestedStructListArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestListNestedStructListArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testListNestedStructListArgumentRequest(
-                      (ChipClusters.TestClusterCluster.BooleanResponseCallback) callback,
-                      (ArrayList)
+                      (ChipClusters.UnitTestingCluster.BooleanResponseCallback) callback,
+                      (ArrayList)
                           commandArguments.get("arg1"));
             },
             () -> new DelegatedBooleanResponseCallback(),
-            testClustertestListNestedStructListArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
+            unitTestingtestListNestedStructListArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
         "testListNestedStructListArgumentRequest",
-        testClustertestListNestedStructListArgumentRequestInteractionInfo);
-    Map testClustertestListInt8UReverseRequestCommandParams =
+        unitTestingtestListNestedStructListArgumentRequestInteractionInfo);
+    Map unitTestingtestListInt8UReverseRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestListInt8UReverseRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestListInt8UReverseRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", ArrayList.class, Object.class);
-    testClustertestListInt8UReverseRequestCommandParams.put(
-        "arg1", testClustertestListInt8UReverseRequestarg1CommandParameterInfo);
+    unitTestingtestListInt8UReverseRequestCommandParams.put(
+        "arg1", unitTestingtestListInt8UReverseRequestarg1CommandParameterInfo);
 
-    InteractionInfo testClustertestListInt8UReverseRequestInteractionInfo =
+    InteractionInfo unitTestingtestListInt8UReverseRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testListInt8UReverseRequest(
-                      (ChipClusters.TestClusterCluster.TestListInt8UReverseResponseCallback)
+                      (ChipClusters.UnitTestingCluster.TestListInt8UReverseResponseCallback)
                           callback,
                       (ArrayList) commandArguments.get("arg1"));
             },
             () -> new DelegatedTestListInt8UReverseResponseCallback(),
-            testClustertestListInt8UReverseRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testListInt8UReverseRequest", testClustertestListInt8UReverseRequestInteractionInfo);
-    Map testClustertestEnumsRequestCommandParams =
+            unitTestingtestListInt8UReverseRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testListInt8UReverseRequest", unitTestingtestListInt8UReverseRequestInteractionInfo);
+    Map unitTestingtestEnumsRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestEnumsRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestEnumsRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", Integer.class, Integer.class);
-    testClustertestEnumsRequestCommandParams.put(
-        "arg1", testClustertestEnumsRequestarg1CommandParameterInfo);
+    unitTestingtestEnumsRequestCommandParams.put(
+        "arg1", unitTestingtestEnumsRequestarg1CommandParameterInfo);
 
-    CommandParameterInfo testClustertestEnumsRequestarg2CommandParameterInfo =
+    CommandParameterInfo unitTestingtestEnumsRequestarg2CommandParameterInfo =
         new CommandParameterInfo("arg2", Integer.class, Integer.class);
-    testClustertestEnumsRequestCommandParams.put(
-        "arg2", testClustertestEnumsRequestarg2CommandParameterInfo);
+    unitTestingtestEnumsRequestCommandParams.put(
+        "arg2", unitTestingtestEnumsRequestarg2CommandParameterInfo);
 
-    InteractionInfo testClustertestEnumsRequestInteractionInfo =
+    InteractionInfo unitTestingtestEnumsRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testEnumsRequest(
-                      (ChipClusters.TestClusterCluster.TestEnumsResponseCallback) callback,
+                      (ChipClusters.UnitTestingCluster.TestEnumsResponseCallback) callback,
                       (Integer) commandArguments.get("arg1"),
                       (Integer) commandArguments.get("arg2"));
             },
             () -> new DelegatedTestEnumsResponseCallback(),
-            testClustertestEnumsRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testEnumsRequest", testClustertestEnumsRequestInteractionInfo);
-    Map testClustertestNullableOptionalRequestCommandParams =
+            unitTestingtestEnumsRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testEnumsRequest", unitTestingtestEnumsRequestInteractionInfo);
+    Map unitTestingtestNullableOptionalRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestNullableOptionalRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestNullableOptionalRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", Optional.class, Integer.class);
-    testClustertestNullableOptionalRequestCommandParams.put(
-        "arg1", testClustertestNullableOptionalRequestarg1CommandParameterInfo);
+    unitTestingtestNullableOptionalRequestCommandParams.put(
+        "arg1", unitTestingtestNullableOptionalRequestarg1CommandParameterInfo);
 
-    InteractionInfo testClustertestNullableOptionalRequestInteractionInfo =
+    InteractionInfo unitTestingtestNullableOptionalRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testNullableOptionalRequest(
-                      (ChipClusters.TestClusterCluster.TestNullableOptionalResponseCallback)
+                      (ChipClusters.UnitTestingCluster.TestNullableOptionalResponseCallback)
                           callback,
                       (Optional) commandArguments.get("arg1"));
             },
             () -> new DelegatedTestNullableOptionalResponseCallback(),
-            testClustertestNullableOptionalRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testNullableOptionalRequest", testClustertestNullableOptionalRequestInteractionInfo);
-    Map testClustersimpleStructEchoRequestCommandParams =
+            unitTestingtestNullableOptionalRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testNullableOptionalRequest", unitTestingtestNullableOptionalRequestInteractionInfo);
+    Map unitTestingsimpleStructEchoRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustersimpleStructEchoRequestInteractionInfo =
+    InteractionInfo unitTestingsimpleStructEchoRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .simpleStructEchoRequest(
-                      (ChipClusters.TestClusterCluster.SimpleStructResponseCallback) callback,
-                      (ChipStructs.TestClusterClusterSimpleStruct) commandArguments.get("arg1"));
+                      (ChipClusters.UnitTestingCluster.SimpleStructResponseCallback) callback,
+                      (ChipStructs.UnitTestingClusterSimpleStruct) commandArguments.get("arg1"));
             },
             () -> new DelegatedSimpleStructResponseCallback(),
-            testClustersimpleStructEchoRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "simpleStructEchoRequest", testClustersimpleStructEchoRequestInteractionInfo);
-    Map testClustertimedInvokeRequestCommandParams =
+            unitTestingsimpleStructEchoRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "simpleStructEchoRequest", unitTestingsimpleStructEchoRequestInteractionInfo);
+    Map unitTestingtimedInvokeRequestCommandParams =
         new LinkedHashMap();
-    InteractionInfo testClustertimedInvokeRequestInteractionInfo =
+    InteractionInfo unitTestingtimedInvokeRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .timedInvokeRequest((DefaultClusterCallback) callback, 10000);
             },
             () -> new DelegatedDefaultClusterCallback(),
-            testClustertimedInvokeRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "timedInvokeRequest", testClustertimedInvokeRequestInteractionInfo);
-    Map testClustertestSimpleOptionalArgumentRequestCommandParams =
+            unitTestingtimedInvokeRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "timedInvokeRequest", unitTestingtimedInvokeRequestInteractionInfo);
+    Map unitTestingtestSimpleOptionalArgumentRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestSimpleOptionalArgumentRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestSimpleOptionalArgumentRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", Optional.class, Boolean.class);
-    testClustertestSimpleOptionalArgumentRequestCommandParams.put(
-        "arg1", testClustertestSimpleOptionalArgumentRequestarg1CommandParameterInfo);
+    unitTestingtestSimpleOptionalArgumentRequestCommandParams.put(
+        "arg1", unitTestingtestSimpleOptionalArgumentRequestarg1CommandParameterInfo);
 
-    InteractionInfo testClustertestSimpleOptionalArgumentRequestInteractionInfo =
+    InteractionInfo unitTestingtestSimpleOptionalArgumentRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testSimpleOptionalArgumentRequest(
                       (DefaultClusterCallback) callback,
                       (Optional) commandArguments.get("arg1"));
             },
             () -> new DelegatedDefaultClusterCallback(),
-            testClustertestSimpleOptionalArgumentRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
+            unitTestingtestSimpleOptionalArgumentRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
         "testSimpleOptionalArgumentRequest",
-        testClustertestSimpleOptionalArgumentRequestInteractionInfo);
-    Map testClustertestEmitTestEventRequestCommandParams =
+        unitTestingtestSimpleOptionalArgumentRequestInteractionInfo);
+    Map unitTestingtestEmitTestEventRequestCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertestEmitTestEventRequestarg1CommandParameterInfo =
+    CommandParameterInfo unitTestingtestEmitTestEventRequestarg1CommandParameterInfo =
         new CommandParameterInfo("arg1", Integer.class, Integer.class);
-    testClustertestEmitTestEventRequestCommandParams.put(
-        "arg1", testClustertestEmitTestEventRequestarg1CommandParameterInfo);
+    unitTestingtestEmitTestEventRequestCommandParams.put(
+        "arg1", unitTestingtestEmitTestEventRequestarg1CommandParameterInfo);
 
-    CommandParameterInfo testClustertestEmitTestEventRequestarg2CommandParameterInfo =
+    CommandParameterInfo unitTestingtestEmitTestEventRequestarg2CommandParameterInfo =
         new CommandParameterInfo("arg2", Integer.class, Integer.class);
-    testClustertestEmitTestEventRequestCommandParams.put(
-        "arg2", testClustertestEmitTestEventRequestarg2CommandParameterInfo);
+    unitTestingtestEmitTestEventRequestCommandParams.put(
+        "arg2", unitTestingtestEmitTestEventRequestarg2CommandParameterInfo);
 
-    CommandParameterInfo testClustertestEmitTestEventRequestarg3CommandParameterInfo =
+    CommandParameterInfo unitTestingtestEmitTestEventRequestarg3CommandParameterInfo =
         new CommandParameterInfo("arg3", Boolean.class, Boolean.class);
-    testClustertestEmitTestEventRequestCommandParams.put(
-        "arg3", testClustertestEmitTestEventRequestarg3CommandParameterInfo);
+    unitTestingtestEmitTestEventRequestCommandParams.put(
+        "arg3", unitTestingtestEmitTestEventRequestarg3CommandParameterInfo);
 
-    InteractionInfo testClustertestEmitTestEventRequestInteractionInfo =
+    InteractionInfo unitTestingtestEmitTestEventRequestInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .testEmitTestEventRequest(
-                      (ChipClusters.TestClusterCluster.TestEmitTestEventResponseCallback) callback,
+                      (ChipClusters.UnitTestingCluster.TestEmitTestEventResponseCallback) callback,
                       (Integer) commandArguments.get("arg1"),
                       (Integer) commandArguments.get("arg2"),
                       (Boolean) commandArguments.get("arg3"));
             },
             () -> new DelegatedTestEmitTestEventResponseCallback(),
-            testClustertestEmitTestEventRequestCommandParams);
-    testClusterClusterInteractionInfoMap.put(
-        "testEmitTestEventRequest", testClustertestEmitTestEventRequestInteractionInfo);
-    commandMap.put("testCluster", testClusterClusterInteractionInfoMap);
+            unitTestingtestEmitTestEventRequestCommandParams);
+    unitTestingClusterInteractionInfoMap.put(
+        "testEmitTestEventRequest", unitTestingtestEmitTestEventRequestInteractionInfo);
+    commandMap.put("unitTesting", unitTestingClusterInteractionInfoMap);
     return commandMap;
   }
 }
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
index 4991078bf0d933..49837fd2efbd96 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
@@ -11316,1117 +11316,1117 @@ public Map> getReadAttributeMap() {
         "readClusterRevisionAttribute",
         readElectricalMeasurementClusterRevisionAttributeInteractionInfo);
     readAttributeMap.put("electricalMeasurement", readElectricalMeasurementInteractionInfo);
-    Map readTestClusterInteractionInfo = new LinkedHashMap<>();
-    Map readTestClusterBooleanCommandParams =
+    Map readUnitTestingInteractionInfo = new LinkedHashMap<>();
+    Map readUnitTestingBooleanCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterBooleanAttributeInteractionInfo =
+    InteractionInfo readUnitTestingBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readBooleanAttribute((ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterBooleanCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readBooleanAttribute", readTestClusterBooleanAttributeInteractionInfo);
-    Map readTestClusterBitmap8CommandParams =
+            readUnitTestingBooleanCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readBooleanAttribute", readUnitTestingBooleanAttributeInteractionInfo);
+    Map readUnitTestingBitmap8CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterBitmap8AttributeInteractionInfo =
+    InteractionInfo readUnitTestingBitmap8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readBitmap8Attribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterBitmap8CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readBitmap8Attribute", readTestClusterBitmap8AttributeInteractionInfo);
-    Map readTestClusterBitmap16CommandParams =
+            readUnitTestingBitmap8CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readBitmap8Attribute", readUnitTestingBitmap8AttributeInteractionInfo);
+    Map readUnitTestingBitmap16CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterBitmap16AttributeInteractionInfo =
+    InteractionInfo readUnitTestingBitmap16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readBitmap16Attribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterBitmap16CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readBitmap16Attribute", readTestClusterBitmap16AttributeInteractionInfo);
-    Map readTestClusterBitmap32CommandParams =
+            readUnitTestingBitmap16CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readBitmap16Attribute", readUnitTestingBitmap16AttributeInteractionInfo);
+    Map readUnitTestingBitmap32CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterBitmap32AttributeInteractionInfo =
+    InteractionInfo readUnitTestingBitmap32AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readBitmap32Attribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterBitmap32CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readBitmap32Attribute", readTestClusterBitmap32AttributeInteractionInfo);
-    Map readTestClusterBitmap64CommandParams =
+            readUnitTestingBitmap32CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readBitmap32Attribute", readUnitTestingBitmap32AttributeInteractionInfo);
+    Map readUnitTestingBitmap64CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterBitmap64AttributeInteractionInfo =
+    InteractionInfo readUnitTestingBitmap64AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readBitmap64Attribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterBitmap64CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readBitmap64Attribute", readTestClusterBitmap64AttributeInteractionInfo);
-    Map readTestClusterInt8uCommandParams =
+            readUnitTestingBitmap64CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readBitmap64Attribute", readUnitTestingBitmap64AttributeInteractionInfo);
+    Map readUnitTestingInt8uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt8uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt8uAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterInt8uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt8uAttribute", readTestClusterInt8uAttributeInteractionInfo);
-    Map readTestClusterInt16uCommandParams =
+            readUnitTestingInt8uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt8uAttribute", readUnitTestingInt8uAttributeInteractionInfo);
+    Map readUnitTestingInt16uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt16uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt16uAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterInt16uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt16uAttribute", readTestClusterInt16uAttributeInteractionInfo);
-    Map readTestClusterInt24uCommandParams =
+            readUnitTestingInt16uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt16uAttribute", readUnitTestingInt16uAttributeInteractionInfo);
+    Map readUnitTestingInt24uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt24uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt24uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt24uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt24uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt24uAttribute", readTestClusterInt24uAttributeInteractionInfo);
-    Map readTestClusterInt32uCommandParams =
+            readUnitTestingInt24uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt24uAttribute", readUnitTestingInt24uAttributeInteractionInfo);
+    Map readUnitTestingInt32uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt32uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt32uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt32uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt32uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt32uAttribute", readTestClusterInt32uAttributeInteractionInfo);
-    Map readTestClusterInt40uCommandParams =
+            readUnitTestingInt32uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt32uAttribute", readUnitTestingInt32uAttributeInteractionInfo);
+    Map readUnitTestingInt40uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt40uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt40uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt40uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt40uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt40uAttribute", readTestClusterInt40uAttributeInteractionInfo);
-    Map readTestClusterInt48uCommandParams =
+            readUnitTestingInt40uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt40uAttribute", readUnitTestingInt40uAttributeInteractionInfo);
+    Map readUnitTestingInt48uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt48uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt48uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt48uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt48uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt48uAttribute", readTestClusterInt48uAttributeInteractionInfo);
-    Map readTestClusterInt56uCommandParams =
+            readUnitTestingInt48uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt48uAttribute", readUnitTestingInt48uAttributeInteractionInfo);
+    Map readUnitTestingInt56uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt56uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt56uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt56uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt56uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt56uAttribute", readTestClusterInt56uAttributeInteractionInfo);
-    Map readTestClusterInt64uCommandParams =
+            readUnitTestingInt56uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt56uAttribute", readUnitTestingInt56uAttributeInteractionInfo);
+    Map readUnitTestingInt64uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt64uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt64uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt64uAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt64uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt64uAttribute", readTestClusterInt64uAttributeInteractionInfo);
-    Map readTestClusterInt8sCommandParams =
+            readUnitTestingInt64uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt64uAttribute", readUnitTestingInt64uAttributeInteractionInfo);
+    Map readUnitTestingInt8sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt8sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt8sAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterInt8sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt8sAttribute", readTestClusterInt8sAttributeInteractionInfo);
-    Map readTestClusterInt16sCommandParams =
+            readUnitTestingInt8sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt8sAttribute", readUnitTestingInt8sAttributeInteractionInfo);
+    Map readUnitTestingInt16sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt16sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt16sAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterInt16sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt16sAttribute", readTestClusterInt16sAttributeInteractionInfo);
-    Map readTestClusterInt24sCommandParams =
+            readUnitTestingInt16sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt16sAttribute", readUnitTestingInt16sAttributeInteractionInfo);
+    Map readUnitTestingInt24sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt24sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt24sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt24sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt24sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt24sAttribute", readTestClusterInt24sAttributeInteractionInfo);
-    Map readTestClusterInt32sCommandParams =
+            readUnitTestingInt24sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt24sAttribute", readUnitTestingInt24sAttributeInteractionInfo);
+    Map readUnitTestingInt32sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt32sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt32sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt32sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt32sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt32sAttribute", readTestClusterInt32sAttributeInteractionInfo);
-    Map readTestClusterInt40sCommandParams =
+            readUnitTestingInt32sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt32sAttribute", readUnitTestingInt32sAttributeInteractionInfo);
+    Map readUnitTestingInt40sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt40sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt40sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt40sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt40sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt40sAttribute", readTestClusterInt40sAttributeInteractionInfo);
-    Map readTestClusterInt48sCommandParams =
+            readUnitTestingInt40sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt40sAttribute", readUnitTestingInt40sAttributeInteractionInfo);
+    Map readUnitTestingInt48sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt48sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt48sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt48sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt48sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt48sAttribute", readTestClusterInt48sAttributeInteractionInfo);
-    Map readTestClusterInt56sCommandParams =
+            readUnitTestingInt48sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt48sAttribute", readUnitTestingInt48sAttributeInteractionInfo);
+    Map readUnitTestingInt56sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt56sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt56sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt56sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt56sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt56sAttribute", readTestClusterInt56sAttributeInteractionInfo);
-    Map readTestClusterInt64sCommandParams =
+            readUnitTestingInt56sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt56sAttribute", readUnitTestingInt56sAttributeInteractionInfo);
+    Map readUnitTestingInt64sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterInt64sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingInt64sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readInt64sAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterInt64sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readInt64sAttribute", readTestClusterInt64sAttributeInteractionInfo);
-    Map readTestClusterEnum8CommandParams =
+            readUnitTestingInt64sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readInt64sAttribute", readUnitTestingInt64sAttributeInteractionInfo);
+    Map readUnitTestingEnum8CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterEnum8AttributeInteractionInfo =
+    InteractionInfo readUnitTestingEnum8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readEnum8Attribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterEnum8CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readEnum8Attribute", readTestClusterEnum8AttributeInteractionInfo);
-    Map readTestClusterEnum16CommandParams =
+            readUnitTestingEnum8CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readEnum8Attribute", readUnitTestingEnum8AttributeInteractionInfo);
+    Map readUnitTestingEnum16CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterEnum16AttributeInteractionInfo =
+    InteractionInfo readUnitTestingEnum16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readEnum16Attribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterEnum16CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readEnum16Attribute", readTestClusterEnum16AttributeInteractionInfo);
-    Map readTestClusterFloatSingleCommandParams =
+            readUnitTestingEnum16CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readEnum16Attribute", readUnitTestingEnum16AttributeInteractionInfo);
+    Map readUnitTestingFloatSingleCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterFloatSingleAttributeInteractionInfo =
+    InteractionInfo readUnitTestingFloatSingleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readFloatSingleAttribute((ChipClusters.FloatAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedFloatAttributeCallback(),
-            readTestClusterFloatSingleCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readFloatSingleAttribute", readTestClusterFloatSingleAttributeInteractionInfo);
-    Map readTestClusterFloatDoubleCommandParams =
+            readUnitTestingFloatSingleCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readFloatSingleAttribute", readUnitTestingFloatSingleAttributeInteractionInfo);
+    Map readUnitTestingFloatDoubleCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterFloatDoubleAttributeInteractionInfo =
+    InteractionInfo readUnitTestingFloatDoubleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readFloatDoubleAttribute((ChipClusters.DoubleAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedDoubleAttributeCallback(),
-            readTestClusterFloatDoubleCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readFloatDoubleAttribute", readTestClusterFloatDoubleAttributeInteractionInfo);
-    Map readTestClusterOctetStringCommandParams =
+            readUnitTestingFloatDoubleCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readFloatDoubleAttribute", readUnitTestingFloatDoubleAttributeInteractionInfo);
+    Map readUnitTestingOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readOctetStringAttribute((ChipClusters.OctetStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedOctetStringAttributeCallback(),
-            readTestClusterOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readOctetStringAttribute", readTestClusterOctetStringAttributeInteractionInfo);
-    Map readTestClusterListInt8uCommandParams =
+            readUnitTestingOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readOctetStringAttribute", readUnitTestingOctetStringAttributeInteractionInfo);
+    Map readUnitTestingListInt8uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListInt8uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListInt8uAttribute(
-                      (ChipClusters.TestClusterCluster.ListInt8uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.ListInt8uAttributeCallback) callback);
             },
-            () -> new ClusterInfoMapping.DelegatedTestClusterClusterListInt8uAttributeCallback(),
-            readTestClusterListInt8uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readListInt8uAttribute", readTestClusterListInt8uAttributeInteractionInfo);
-    Map readTestClusterListOctetStringCommandParams =
+            () -> new ClusterInfoMapping.DelegatedUnitTestingClusterListInt8uAttributeCallback(),
+            readUnitTestingListInt8uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readListInt8uAttribute", readUnitTestingListInt8uAttributeInteractionInfo);
+    Map readUnitTestingListOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListOctetStringAttribute(
-                      (ChipClusters.TestClusterCluster.ListOctetStringAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.ListOctetStringAttributeCallback) callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterListOctetStringAttributeCallback(),
-            readTestClusterListOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readListOctetStringAttribute", readTestClusterListOctetStringAttributeInteractionInfo);
-    Map readTestClusterListStructOctetStringCommandParams =
+                    .DelegatedUnitTestingClusterListOctetStringAttributeCallback(),
+            readUnitTestingListOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readListOctetStringAttribute", readUnitTestingListOctetStringAttributeInteractionInfo);
+    Map readUnitTestingListStructOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListStructOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListStructOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListStructOctetStringAttribute(
-                      (ChipClusters.TestClusterCluster.ListStructOctetStringAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.ListStructOctetStringAttributeCallback)
                           callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterListStructOctetStringAttributeCallback(),
-            readTestClusterListStructOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
+                    .DelegatedUnitTestingClusterListStructOctetStringAttributeCallback(),
+            readUnitTestingListStructOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readListStructOctetStringAttribute",
-        readTestClusterListStructOctetStringAttributeInteractionInfo);
-    Map readTestClusterLongOctetStringCommandParams =
+        readUnitTestingListStructOctetStringAttributeInteractionInfo);
+    Map readUnitTestingLongOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterLongOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingLongOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readLongOctetStringAttribute(
                       (ChipClusters.OctetStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedOctetStringAttributeCallback(),
-            readTestClusterLongOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readLongOctetStringAttribute", readTestClusterLongOctetStringAttributeInteractionInfo);
-    Map readTestClusterCharStringCommandParams =
+            readUnitTestingLongOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readLongOctetStringAttribute", readUnitTestingLongOctetStringAttributeInteractionInfo);
+    Map readUnitTestingCharStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterCharStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readCharStringAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readTestClusterCharStringCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readCharStringAttribute", readTestClusterCharStringAttributeInteractionInfo);
-    Map readTestClusterLongCharStringCommandParams =
+            readUnitTestingCharStringCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readCharStringAttribute", readUnitTestingCharStringAttributeInteractionInfo);
+    Map readUnitTestingLongCharStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterLongCharStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingLongCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readLongCharStringAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readTestClusterLongCharStringCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readLongCharStringAttribute", readTestClusterLongCharStringAttributeInteractionInfo);
-    Map readTestClusterEpochUsCommandParams =
+            readUnitTestingLongCharStringCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readLongCharStringAttribute", readUnitTestingLongCharStringAttributeInteractionInfo);
+    Map readUnitTestingEpochUsCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterEpochUsAttributeInteractionInfo =
+    InteractionInfo readUnitTestingEpochUsAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readEpochUsAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterEpochUsCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readEpochUsAttribute", readTestClusterEpochUsAttributeInteractionInfo);
-    Map readTestClusterEpochSCommandParams =
+            readUnitTestingEpochUsCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readEpochUsAttribute", readUnitTestingEpochUsAttributeInteractionInfo);
+    Map readUnitTestingEpochSCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterEpochSAttributeInteractionInfo =
+    InteractionInfo readUnitTestingEpochSAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readEpochSAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterEpochSCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readEpochSAttribute", readTestClusterEpochSAttributeInteractionInfo);
-    Map readTestClusterVendorIdCommandParams =
+            readUnitTestingEpochSCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readEpochSAttribute", readUnitTestingEpochSAttributeInteractionInfo);
+    Map readUnitTestingVendorIdCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterVendorIdAttributeInteractionInfo =
+    InteractionInfo readUnitTestingVendorIdAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readVendorIdAttribute(
-                      (ChipClusters.TestClusterCluster.VendorIdAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.VendorIdAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterVendorIdCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readVendorIdAttribute", readTestClusterVendorIdAttributeInteractionInfo);
-    Map readTestClusterListNullablesAndOptionalsStructCommandParams =
+            readUnitTestingVendorIdCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readVendorIdAttribute", readUnitTestingVendorIdAttributeInteractionInfo);
+    Map readUnitTestingListNullablesAndOptionalsStructCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListNullablesAndOptionalsStructAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListNullablesAndOptionalsStructAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListNullablesAndOptionalsStructAttribute(
-                      (ChipClusters.TestClusterCluster
+                      (ChipClusters.UnitTestingCluster
                               .ListNullablesAndOptionalsStructAttributeCallback)
                           callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterListNullablesAndOptionalsStructAttributeCallback(),
-            readTestClusterListNullablesAndOptionalsStructCommandParams);
-    readTestClusterInteractionInfo.put(
+                    .DelegatedUnitTestingClusterListNullablesAndOptionalsStructAttributeCallback(),
+            readUnitTestingListNullablesAndOptionalsStructCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readListNullablesAndOptionalsStructAttribute",
-        readTestClusterListNullablesAndOptionalsStructAttributeInteractionInfo);
-    Map readTestClusterEnumAttrCommandParams =
+        readUnitTestingListNullablesAndOptionalsStructAttributeInteractionInfo);
+    Map readUnitTestingEnumAttrCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterEnumAttrAttributeInteractionInfo =
+    InteractionInfo readUnitTestingEnumAttrAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readEnumAttrAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterEnumAttrCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readEnumAttrAttribute", readTestClusterEnumAttrAttributeInteractionInfo);
-    Map readTestClusterRangeRestrictedInt8uCommandParams =
+            readUnitTestingEnumAttrCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readEnumAttrAttribute", readUnitTestingEnumAttrAttributeInteractionInfo);
+    Map readUnitTestingRangeRestrictedInt8uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterRangeRestrictedInt8uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingRangeRestrictedInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readRangeRestrictedInt8uAttribute(
                       (ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterRangeRestrictedInt8uCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingRangeRestrictedInt8uCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readRangeRestrictedInt8uAttribute",
-        readTestClusterRangeRestrictedInt8uAttributeInteractionInfo);
-    Map readTestClusterRangeRestrictedInt8sCommandParams =
+        readUnitTestingRangeRestrictedInt8uAttributeInteractionInfo);
+    Map readUnitTestingRangeRestrictedInt8sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterRangeRestrictedInt8sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingRangeRestrictedInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readRangeRestrictedInt8sAttribute(
                       (ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterRangeRestrictedInt8sCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingRangeRestrictedInt8sCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readRangeRestrictedInt8sAttribute",
-        readTestClusterRangeRestrictedInt8sAttributeInteractionInfo);
-    Map readTestClusterRangeRestrictedInt16uCommandParams =
+        readUnitTestingRangeRestrictedInt8sAttributeInteractionInfo);
+    Map readUnitTestingRangeRestrictedInt16uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterRangeRestrictedInt16uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingRangeRestrictedInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readRangeRestrictedInt16uAttribute(
                       (ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterRangeRestrictedInt16uCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingRangeRestrictedInt16uCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readRangeRestrictedInt16uAttribute",
-        readTestClusterRangeRestrictedInt16uAttributeInteractionInfo);
-    Map readTestClusterRangeRestrictedInt16sCommandParams =
+        readUnitTestingRangeRestrictedInt16uAttributeInteractionInfo);
+    Map readUnitTestingRangeRestrictedInt16sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterRangeRestrictedInt16sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingRangeRestrictedInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readRangeRestrictedInt16sAttribute(
                       (ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterRangeRestrictedInt16sCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingRangeRestrictedInt16sCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readRangeRestrictedInt16sAttribute",
-        readTestClusterRangeRestrictedInt16sAttributeInteractionInfo);
-    Map readTestClusterListLongOctetStringCommandParams =
+        readUnitTestingRangeRestrictedInt16sAttributeInteractionInfo);
+    Map readUnitTestingListLongOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListLongOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListLongOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListLongOctetStringAttribute(
-                      (ChipClusters.TestClusterCluster.ListLongOctetStringAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.ListLongOctetStringAttributeCallback)
                           callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterListLongOctetStringAttributeCallback(),
-            readTestClusterListLongOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
+                    .DelegatedUnitTestingClusterListLongOctetStringAttributeCallback(),
+            readUnitTestingListLongOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readListLongOctetStringAttribute",
-        readTestClusterListLongOctetStringAttributeInteractionInfo);
-    Map readTestClusterListFabricScopedCommandParams =
+        readUnitTestingListLongOctetStringAttributeInteractionInfo);
+    Map readUnitTestingListFabricScopedCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterListFabricScopedAttributeInteractionInfo =
+    InteractionInfo readUnitTestingListFabricScopedAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readListFabricScopedAttribute(
-                      (ChipClusters.TestClusterCluster.ListFabricScopedAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.ListFabricScopedAttributeCallback) callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterListFabricScopedAttributeCallback(),
-            readTestClusterListFabricScopedCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readListFabricScopedAttribute", readTestClusterListFabricScopedAttributeInteractionInfo);
-    Map readTestClusterTimedWriteBooleanCommandParams =
+                    .DelegatedUnitTestingClusterListFabricScopedAttributeCallback(),
+            readUnitTestingListFabricScopedCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readListFabricScopedAttribute", readUnitTestingListFabricScopedAttributeInteractionInfo);
+    Map readUnitTestingTimedWriteBooleanCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterTimedWriteBooleanAttributeInteractionInfo =
+    InteractionInfo readUnitTestingTimedWriteBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readTimedWriteBooleanAttribute((ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterTimedWriteBooleanCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readTimedWriteBooleanAttribute", readTestClusterTimedWriteBooleanAttributeInteractionInfo);
-    Map readTestClusterGeneralErrorBooleanCommandParams =
+            readUnitTestingTimedWriteBooleanCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readTimedWriteBooleanAttribute", readUnitTestingTimedWriteBooleanAttributeInteractionInfo);
+    Map readUnitTestingGeneralErrorBooleanCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterGeneralErrorBooleanAttributeInteractionInfo =
+    InteractionInfo readUnitTestingGeneralErrorBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readGeneralErrorBooleanAttribute(
                       (ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterGeneralErrorBooleanCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingGeneralErrorBooleanCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readGeneralErrorBooleanAttribute",
-        readTestClusterGeneralErrorBooleanAttributeInteractionInfo);
-    Map readTestClusterClusterErrorBooleanCommandParams =
+        readUnitTestingGeneralErrorBooleanAttributeInteractionInfo);
+    Map readUnitTestingClusterErrorBooleanCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterClusterErrorBooleanAttributeInteractionInfo =
+    InteractionInfo readUnitTestingClusterErrorBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readClusterErrorBooleanAttribute(
                       (ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterClusterErrorBooleanCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingClusterErrorBooleanCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readClusterErrorBooleanAttribute",
-        readTestClusterClusterErrorBooleanAttributeInteractionInfo);
-    Map readTestClusterUnsupportedCommandParams =
+        readUnitTestingClusterErrorBooleanAttributeInteractionInfo);
+    Map readUnitTestingUnsupportedCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterUnsupportedAttributeInteractionInfo =
+    InteractionInfo readUnitTestingUnsupportedAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readUnsupportedAttribute((ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterUnsupportedCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readUnsupportedAttribute", readTestClusterUnsupportedAttributeInteractionInfo);
-    Map readTestClusterNullableBooleanCommandParams =
+            readUnitTestingUnsupportedCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readUnsupportedAttribute", readUnitTestingUnsupportedAttributeInteractionInfo);
+    Map readUnitTestingNullableBooleanCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableBooleanAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableBooleanAttribute(
-                      (ChipClusters.TestClusterCluster.NullableBooleanAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableBooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readTestClusterNullableBooleanCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableBooleanAttribute", readTestClusterNullableBooleanAttributeInteractionInfo);
-    Map readTestClusterNullableBitmap8CommandParams =
+            readUnitTestingNullableBooleanCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableBooleanAttribute", readUnitTestingNullableBooleanAttributeInteractionInfo);
+    Map readUnitTestingNullableBitmap8CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableBitmap8AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableBitmap8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableBitmap8Attribute(
-                      (ChipClusters.TestClusterCluster.NullableBitmap8AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableBitmap8AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableBitmap8CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableBitmap8Attribute", readTestClusterNullableBitmap8AttributeInteractionInfo);
-    Map readTestClusterNullableBitmap16CommandParams =
+            readUnitTestingNullableBitmap8CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableBitmap8Attribute", readUnitTestingNullableBitmap8AttributeInteractionInfo);
+    Map readUnitTestingNullableBitmap16CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableBitmap16AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableBitmap16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableBitmap16Attribute(
-                      (ChipClusters.TestClusterCluster.NullableBitmap16AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableBitmap16AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableBitmap16CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableBitmap16Attribute", readTestClusterNullableBitmap16AttributeInteractionInfo);
-    Map readTestClusterNullableBitmap32CommandParams =
+            readUnitTestingNullableBitmap16CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableBitmap16Attribute", readUnitTestingNullableBitmap16AttributeInteractionInfo);
+    Map readUnitTestingNullableBitmap32CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableBitmap32AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableBitmap32AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableBitmap32Attribute(
-                      (ChipClusters.TestClusterCluster.NullableBitmap32AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableBitmap32AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableBitmap32CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableBitmap32Attribute", readTestClusterNullableBitmap32AttributeInteractionInfo);
-    Map readTestClusterNullableBitmap64CommandParams =
+            readUnitTestingNullableBitmap32CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableBitmap32Attribute", readUnitTestingNullableBitmap32AttributeInteractionInfo);
+    Map readUnitTestingNullableBitmap64CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableBitmap64AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableBitmap64AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableBitmap64Attribute(
-                      (ChipClusters.TestClusterCluster.NullableBitmap64AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableBitmap64AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableBitmap64CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableBitmap64Attribute", readTestClusterNullableBitmap64AttributeInteractionInfo);
-    Map readTestClusterNullableInt8uCommandParams =
+            readUnitTestingNullableBitmap64CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableBitmap64Attribute", readUnitTestingNullableBitmap64AttributeInteractionInfo);
+    Map readUnitTestingNullableInt8uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt8uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt8uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt8uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt8uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableInt8uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt8uAttribute", readTestClusterNullableInt8uAttributeInteractionInfo);
-    Map readTestClusterNullableInt16uCommandParams =
+            readUnitTestingNullableInt8uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt8uAttribute", readUnitTestingNullableInt8uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt16uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt16uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt16uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt16uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt16uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableInt16uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt16uAttribute", readTestClusterNullableInt16uAttributeInteractionInfo);
-    Map readTestClusterNullableInt24uCommandParams =
+            readUnitTestingNullableInt16uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt16uAttribute", readUnitTestingNullableInt16uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt24uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt24uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt24uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt24uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt24uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt24uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt24uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt24uAttribute", readTestClusterNullableInt24uAttributeInteractionInfo);
-    Map readTestClusterNullableInt32uCommandParams =
+            readUnitTestingNullableInt24uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt24uAttribute", readUnitTestingNullableInt24uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt32uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt32uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt32uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt32uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt32uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt32uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt32uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt32uAttribute", readTestClusterNullableInt32uAttributeInteractionInfo);
-    Map readTestClusterNullableInt40uCommandParams =
+            readUnitTestingNullableInt32uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt32uAttribute", readUnitTestingNullableInt32uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt40uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt40uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt40uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt40uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt40uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt40uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt40uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt40uAttribute", readTestClusterNullableInt40uAttributeInteractionInfo);
-    Map readTestClusterNullableInt48uCommandParams =
+            readUnitTestingNullableInt40uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt40uAttribute", readUnitTestingNullableInt40uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt48uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt48uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt48uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt48uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt48uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt48uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt48uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt48uAttribute", readTestClusterNullableInt48uAttributeInteractionInfo);
-    Map readTestClusterNullableInt56uCommandParams =
+            readUnitTestingNullableInt48uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt48uAttribute", readUnitTestingNullableInt48uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt56uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt56uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt56uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt56uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt56uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt56uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt56uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt56uAttribute", readTestClusterNullableInt56uAttributeInteractionInfo);
-    Map readTestClusterNullableInt64uCommandParams =
+            readUnitTestingNullableInt56uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt56uAttribute", readUnitTestingNullableInt56uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt64uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt64uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt64uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt64uAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt64uAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt64uAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt64uCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt64uAttribute", readTestClusterNullableInt64uAttributeInteractionInfo);
-    Map readTestClusterNullableInt8sCommandParams =
+            readUnitTestingNullableInt64uCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt64uAttribute", readUnitTestingNullableInt64uAttributeInteractionInfo);
+    Map readUnitTestingNullableInt8sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt8sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt8sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt8sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt8sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableInt8sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt8sAttribute", readTestClusterNullableInt8sAttributeInteractionInfo);
-    Map readTestClusterNullableInt16sCommandParams =
+            readUnitTestingNullableInt8sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt8sAttribute", readUnitTestingNullableInt8sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt16sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt16sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt16sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt16sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt16sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableInt16sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt16sAttribute", readTestClusterNullableInt16sAttributeInteractionInfo);
-    Map readTestClusterNullableInt24sCommandParams =
+            readUnitTestingNullableInt16sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt16sAttribute", readUnitTestingNullableInt16sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt24sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt24sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt24sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt24sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt24sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt24sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt24sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt24sAttribute", readTestClusterNullableInt24sAttributeInteractionInfo);
-    Map readTestClusterNullableInt32sCommandParams =
+            readUnitTestingNullableInt24sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt24sAttribute", readUnitTestingNullableInt24sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt32sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt32sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt32sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt32sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt32sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt32sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt32sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt32sAttribute", readTestClusterNullableInt32sAttributeInteractionInfo);
-    Map readTestClusterNullableInt40sCommandParams =
+            readUnitTestingNullableInt32sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt32sAttribute", readUnitTestingNullableInt32sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt40sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt40sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt40sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt40sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt40sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt40sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt40sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt40sAttribute", readTestClusterNullableInt40sAttributeInteractionInfo);
-    Map readTestClusterNullableInt48sCommandParams =
+            readUnitTestingNullableInt40sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt40sAttribute", readUnitTestingNullableInt40sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt48sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt48sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt48sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt48sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt48sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt48sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt48sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt48sAttribute", readTestClusterNullableInt48sAttributeInteractionInfo);
-    Map readTestClusterNullableInt56sCommandParams =
+            readUnitTestingNullableInt48sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt48sAttribute", readUnitTestingNullableInt48sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt56sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt56sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt56sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt56sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt56sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt56sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt56sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt56sAttribute", readTestClusterNullableInt56sAttributeInteractionInfo);
-    Map readTestClusterNullableInt64sCommandParams =
+            readUnitTestingNullableInt56sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt56sAttribute", readUnitTestingNullableInt56sAttributeInteractionInfo);
+    Map readUnitTestingNullableInt64sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableInt64sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableInt64sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableInt64sAttribute(
-                      (ChipClusters.TestClusterCluster.NullableInt64sAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableInt64sAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterNullableInt64sCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableInt64sAttribute", readTestClusterNullableInt64sAttributeInteractionInfo);
-    Map readTestClusterNullableEnum8CommandParams =
+            readUnitTestingNullableInt64sCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableInt64sAttribute", readUnitTestingNullableInt64sAttributeInteractionInfo);
+    Map readUnitTestingNullableEnum8CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableEnum8AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableEnum8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableEnum8Attribute(
-                      (ChipClusters.TestClusterCluster.NullableEnum8AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableEnum8AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableEnum8CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableEnum8Attribute", readTestClusterNullableEnum8AttributeInteractionInfo);
-    Map readTestClusterNullableEnum16CommandParams =
+            readUnitTestingNullableEnum8CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableEnum8Attribute", readUnitTestingNullableEnum8AttributeInteractionInfo);
+    Map readUnitTestingNullableEnum16CommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableEnum16AttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableEnum16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableEnum16Attribute(
-                      (ChipClusters.TestClusterCluster.NullableEnum16AttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableEnum16AttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableEnum16CommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableEnum16Attribute", readTestClusterNullableEnum16AttributeInteractionInfo);
-    Map readTestClusterNullableFloatSingleCommandParams =
+            readUnitTestingNullableEnum16CommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableEnum16Attribute", readUnitTestingNullableEnum16AttributeInteractionInfo);
+    Map readUnitTestingNullableFloatSingleCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableFloatSingleAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableFloatSingleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableFloatSingleAttribute(
-                      (ChipClusters.TestClusterCluster.NullableFloatSingleAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.NullableFloatSingleAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedFloatAttributeCallback(),
-            readTestClusterNullableFloatSingleCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableFloatSingleCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableFloatSingleAttribute",
-        readTestClusterNullableFloatSingleAttributeInteractionInfo);
-    Map readTestClusterNullableFloatDoubleCommandParams =
+        readUnitTestingNullableFloatSingleAttributeInteractionInfo);
+    Map readUnitTestingNullableFloatDoubleCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableFloatDoubleAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableFloatDoubleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableFloatDoubleAttribute(
-                      (ChipClusters.TestClusterCluster.NullableFloatDoubleAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.NullableFloatDoubleAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedDoubleAttributeCallback(),
-            readTestClusterNullableFloatDoubleCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableFloatDoubleCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableFloatDoubleAttribute",
-        readTestClusterNullableFloatDoubleAttributeInteractionInfo);
-    Map readTestClusterNullableOctetStringCommandParams =
+        readUnitTestingNullableFloatDoubleAttributeInteractionInfo);
+    Map readUnitTestingNullableOctetStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableOctetStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableOctetStringAttribute(
-                      (ChipClusters.TestClusterCluster.NullableOctetStringAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.NullableOctetStringAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedOctetStringAttributeCallback(),
-            readTestClusterNullableOctetStringCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableOctetStringCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableOctetStringAttribute",
-        readTestClusterNullableOctetStringAttributeInteractionInfo);
-    Map readTestClusterNullableCharStringCommandParams =
+        readUnitTestingNullableOctetStringAttributeInteractionInfo);
+    Map readUnitTestingNullableCharStringCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableCharStringAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableCharStringAttribute(
-                      (ChipClusters.TestClusterCluster.NullableCharStringAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.NullableCharStringAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readTestClusterNullableCharStringCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableCharStringCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableCharStringAttribute",
-        readTestClusterNullableCharStringAttributeInteractionInfo);
-    Map readTestClusterNullableEnumAttrCommandParams =
+        readUnitTestingNullableCharStringAttributeInteractionInfo);
+    Map readUnitTestingNullableEnumAttrCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableEnumAttrAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableEnumAttrAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableEnumAttrAttribute(
-                      (ChipClusters.TestClusterCluster.NullableEnumAttrAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.NullableEnumAttrAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableEnumAttrCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readNullableEnumAttrAttribute", readTestClusterNullableEnumAttrAttributeInteractionInfo);
-    Map readTestClusterNullableRangeRestrictedInt8uCommandParams =
+            readUnitTestingNullableEnumAttrCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readNullableEnumAttrAttribute", readUnitTestingNullableEnumAttrAttributeInteractionInfo);
+    Map readUnitTestingNullableRangeRestrictedInt8uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableRangeRestrictedInt8uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableRangeRestrictedInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableRangeRestrictedInt8uAttribute(
-                      (ChipClusters.TestClusterCluster
+                      (ChipClusters.UnitTestingCluster
                               .NullableRangeRestrictedInt8uAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableRangeRestrictedInt8uCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableRangeRestrictedInt8uCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableRangeRestrictedInt8uAttribute",
-        readTestClusterNullableRangeRestrictedInt8uAttributeInteractionInfo);
-    Map readTestClusterNullableRangeRestrictedInt8sCommandParams =
+        readUnitTestingNullableRangeRestrictedInt8uAttributeInteractionInfo);
+    Map readUnitTestingNullableRangeRestrictedInt8sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableRangeRestrictedInt8sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableRangeRestrictedInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableRangeRestrictedInt8sAttribute(
-                      (ChipClusters.TestClusterCluster
+                      (ChipClusters.UnitTestingCluster
                               .NullableRangeRestrictedInt8sAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableRangeRestrictedInt8sCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableRangeRestrictedInt8sCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableRangeRestrictedInt8sAttribute",
-        readTestClusterNullableRangeRestrictedInt8sAttributeInteractionInfo);
-    Map readTestClusterNullableRangeRestrictedInt16uCommandParams =
+        readUnitTestingNullableRangeRestrictedInt8sAttributeInteractionInfo);
+    Map readUnitTestingNullableRangeRestrictedInt16uCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableRangeRestrictedInt16uAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableRangeRestrictedInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableRangeRestrictedInt16uAttribute(
-                      (ChipClusters.TestClusterCluster
+                      (ChipClusters.UnitTestingCluster
                               .NullableRangeRestrictedInt16uAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableRangeRestrictedInt16uCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableRangeRestrictedInt16uCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableRangeRestrictedInt16uAttribute",
-        readTestClusterNullableRangeRestrictedInt16uAttributeInteractionInfo);
-    Map readTestClusterNullableRangeRestrictedInt16sCommandParams =
+        readUnitTestingNullableRangeRestrictedInt16uAttributeInteractionInfo);
+    Map readUnitTestingNullableRangeRestrictedInt16sCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterNullableRangeRestrictedInt16sAttributeInteractionInfo =
+    InteractionInfo readUnitTestingNullableRangeRestrictedInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readNullableRangeRestrictedInt16sAttribute(
-                      (ChipClusters.TestClusterCluster
+                      (ChipClusters.UnitTestingCluster
                               .NullableRangeRestrictedInt16sAttributeCallback)
                           callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterNullableRangeRestrictedInt16sCommandParams);
-    readTestClusterInteractionInfo.put(
+            readUnitTestingNullableRangeRestrictedInt16sCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readNullableRangeRestrictedInt16sAttribute",
-        readTestClusterNullableRangeRestrictedInt16sAttributeInteractionInfo);
-    Map readTestClusterGeneratedCommandListCommandParams =
+        readUnitTestingNullableRangeRestrictedInt16sAttributeInteractionInfo);
+    Map readUnitTestingGeneratedCommandListCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterGeneratedCommandListAttributeInteractionInfo =
+    InteractionInfo readUnitTestingGeneratedCommandListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readGeneratedCommandListAttribute(
-                      (ChipClusters.TestClusterCluster.GeneratedCommandListAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.GeneratedCommandListAttributeCallback)
                           callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterGeneratedCommandListAttributeCallback(),
-            readTestClusterGeneratedCommandListCommandParams);
-    readTestClusterInteractionInfo.put(
+                    .DelegatedUnitTestingClusterGeneratedCommandListAttributeCallback(),
+            readUnitTestingGeneratedCommandListCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readGeneratedCommandListAttribute",
-        readTestClusterGeneratedCommandListAttributeInteractionInfo);
-    Map readTestClusterAcceptedCommandListCommandParams =
+        readUnitTestingGeneratedCommandListAttributeInteractionInfo);
+    Map readUnitTestingAcceptedCommandListCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterAcceptedCommandListAttributeInteractionInfo =
+    InteractionInfo readUnitTestingAcceptedCommandListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readAcceptedCommandListAttribute(
-                      (ChipClusters.TestClusterCluster.AcceptedCommandListAttributeCallback)
+                      (ChipClusters.UnitTestingCluster.AcceptedCommandListAttributeCallback)
                           callback);
             },
             () ->
                 new ClusterInfoMapping
-                    .DelegatedTestClusterClusterAcceptedCommandListAttributeCallback(),
-            readTestClusterAcceptedCommandListCommandParams);
-    readTestClusterInteractionInfo.put(
+                    .DelegatedUnitTestingClusterAcceptedCommandListAttributeCallback(),
+            readUnitTestingAcceptedCommandListCommandParams);
+    readUnitTestingInteractionInfo.put(
         "readAcceptedCommandListAttribute",
-        readTestClusterAcceptedCommandListAttributeInteractionInfo);
-    Map readTestClusterAttributeListCommandParams =
+        readUnitTestingAcceptedCommandListAttributeInteractionInfo);
+    Map readUnitTestingAttributeListCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterAttributeListAttributeInteractionInfo =
+    InteractionInfo readUnitTestingAttributeListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readAttributeListAttribute(
-                      (ChipClusters.TestClusterCluster.AttributeListAttributeCallback) callback);
+                      (ChipClusters.UnitTestingCluster.AttributeListAttributeCallback) callback);
             },
             () ->
-                new ClusterInfoMapping.DelegatedTestClusterClusterAttributeListAttributeCallback(),
-            readTestClusterAttributeListCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readAttributeListAttribute", readTestClusterAttributeListAttributeInteractionInfo);
-    Map readTestClusterFeatureMapCommandParams =
+                new ClusterInfoMapping.DelegatedUnitTestingClusterAttributeListAttributeCallback(),
+            readUnitTestingAttributeListCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readAttributeListAttribute", readUnitTestingAttributeListAttributeInteractionInfo);
+    Map readUnitTestingFeatureMapCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterFeatureMapAttributeInteractionInfo =
+    InteractionInfo readUnitTestingFeatureMapAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readFeatureMapAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readTestClusterFeatureMapCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readFeatureMapAttribute", readTestClusterFeatureMapAttributeInteractionInfo);
-    Map readTestClusterClusterRevisionCommandParams =
+            readUnitTestingFeatureMapCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readFeatureMapAttribute", readUnitTestingFeatureMapAttributeInteractionInfo);
+    Map readUnitTestingClusterRevisionCommandParams =
         new LinkedHashMap();
-    InteractionInfo readTestClusterClusterRevisionAttributeInteractionInfo =
+    InteractionInfo readUnitTestingClusterRevisionAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .readClusterRevisionAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readTestClusterClusterRevisionCommandParams);
-    readTestClusterInteractionInfo.put(
-        "readClusterRevisionAttribute", readTestClusterClusterRevisionAttributeInteractionInfo);
-    readAttributeMap.put("testCluster", readTestClusterInteractionInfo);
+            readUnitTestingClusterRevisionCommandParams);
+    readUnitTestingInteractionInfo.put(
+        "readClusterRevisionAttribute", readUnitTestingClusterRevisionAttributeInteractionInfo);
+    readAttributeMap.put("unitTesting", readUnitTestingInteractionInfo);
     return readAttributeMap;
   }
 }
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
index 95414b21f13d0e..25e04f75faae4e 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
@@ -1605,1238 +1605,1238 @@ public Map> getWriteAttributeMap() {
     writeAttributeMap.put("accountLogin", writeAccountLoginInteractionInfo);
     Map writeElectricalMeasurementInteractionInfo = new LinkedHashMap<>();
     writeAttributeMap.put("electricalMeasurement", writeElectricalMeasurementInteractionInfo);
-    Map writeTestClusterInteractionInfo = new LinkedHashMap<>();
-    Map writeTestClusterBooleanCommandParams =
+    Map writeUnitTestingInteractionInfo = new LinkedHashMap<>();
+    Map writeUnitTestingBooleanCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterbooleanCommandParameterInfo =
+    CommandParameterInfo unitTestingbooleanCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterBooleanCommandParams.put("value", testClusterbooleanCommandParameterInfo);
-    InteractionInfo writeTestClusterBooleanAttributeInteractionInfo =
+    writeUnitTestingBooleanCommandParams.put("value", unitTestingbooleanCommandParameterInfo);
+    InteractionInfo writeUnitTestingBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeBooleanAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterBooleanCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeBooleanAttribute", writeTestClusterBooleanAttributeInteractionInfo);
-    Map writeTestClusterBitmap8CommandParams =
+            writeUnitTestingBooleanCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeBooleanAttribute", writeUnitTestingBooleanAttributeInteractionInfo);
+    Map writeUnitTestingBitmap8CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterbitmap8CommandParameterInfo =
+    CommandParameterInfo unitTestingbitmap8CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterBitmap8CommandParams.put("value", testClusterbitmap8CommandParameterInfo);
-    InteractionInfo writeTestClusterBitmap8AttributeInteractionInfo =
+    writeUnitTestingBitmap8CommandParams.put("value", unitTestingbitmap8CommandParameterInfo);
+    InteractionInfo writeUnitTestingBitmap8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeBitmap8Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterBitmap8CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeBitmap8Attribute", writeTestClusterBitmap8AttributeInteractionInfo);
-    Map writeTestClusterBitmap16CommandParams =
+            writeUnitTestingBitmap8CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeBitmap8Attribute", writeUnitTestingBitmap8AttributeInteractionInfo);
+    Map writeUnitTestingBitmap16CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterbitmap16CommandParameterInfo =
+    CommandParameterInfo unitTestingbitmap16CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterBitmap16CommandParams.put("value", testClusterbitmap16CommandParameterInfo);
-    InteractionInfo writeTestClusterBitmap16AttributeInteractionInfo =
+    writeUnitTestingBitmap16CommandParams.put("value", unitTestingbitmap16CommandParameterInfo);
+    InteractionInfo writeUnitTestingBitmap16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeBitmap16Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterBitmap16CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeBitmap16Attribute", writeTestClusterBitmap16AttributeInteractionInfo);
-    Map writeTestClusterBitmap32CommandParams =
+            writeUnitTestingBitmap16CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeBitmap16Attribute", writeUnitTestingBitmap16AttributeInteractionInfo);
+    Map writeUnitTestingBitmap32CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterbitmap32CommandParameterInfo =
+    CommandParameterInfo unitTestingbitmap32CommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterBitmap32CommandParams.put("value", testClusterbitmap32CommandParameterInfo);
-    InteractionInfo writeTestClusterBitmap32AttributeInteractionInfo =
+    writeUnitTestingBitmap32CommandParams.put("value", unitTestingbitmap32CommandParameterInfo);
+    InteractionInfo writeUnitTestingBitmap32AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeBitmap32Attribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterBitmap32CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeBitmap32Attribute", writeTestClusterBitmap32AttributeInteractionInfo);
-    Map writeTestClusterBitmap64CommandParams =
+            writeUnitTestingBitmap32CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeBitmap32Attribute", writeUnitTestingBitmap32AttributeInteractionInfo);
+    Map writeUnitTestingBitmap64CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterbitmap64CommandParameterInfo =
+    CommandParameterInfo unitTestingbitmap64CommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterBitmap64CommandParams.put("value", testClusterbitmap64CommandParameterInfo);
-    InteractionInfo writeTestClusterBitmap64AttributeInteractionInfo =
+    writeUnitTestingBitmap64CommandParams.put("value", unitTestingbitmap64CommandParameterInfo);
+    InteractionInfo writeUnitTestingBitmap64AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeBitmap64Attribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterBitmap64CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeBitmap64Attribute", writeTestClusterBitmap64AttributeInteractionInfo);
-    Map writeTestClusterInt8uCommandParams =
+            writeUnitTestingBitmap64CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeBitmap64Attribute", writeUnitTestingBitmap64AttributeInteractionInfo);
+    Map writeUnitTestingInt8uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint8uCommandParameterInfo =
+    CommandParameterInfo unitTestingint8uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterInt8uCommandParams.put("value", testClusterint8uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt8uAttributeInteractionInfo =
+    writeUnitTestingInt8uCommandParams.put("value", unitTestingint8uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt8uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt8uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt8uAttribute", writeTestClusterInt8uAttributeInteractionInfo);
-    Map writeTestClusterInt16uCommandParams =
+            writeUnitTestingInt8uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt8uAttribute", writeUnitTestingInt8uAttributeInteractionInfo);
+    Map writeUnitTestingInt16uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint16uCommandParameterInfo =
+    CommandParameterInfo unitTestingint16uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterInt16uCommandParams.put("value", testClusterint16uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt16uAttributeInteractionInfo =
+    writeUnitTestingInt16uCommandParams.put("value", unitTestingint16uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt16uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt16uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt16uAttribute", writeTestClusterInt16uAttributeInteractionInfo);
-    Map writeTestClusterInt24uCommandParams =
+            writeUnitTestingInt16uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt16uAttribute", writeUnitTestingInt16uAttributeInteractionInfo);
+    Map writeUnitTestingInt24uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint24uCommandParameterInfo =
+    CommandParameterInfo unitTestingint24uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt24uCommandParams.put("value", testClusterint24uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt24uAttributeInteractionInfo =
+    writeUnitTestingInt24uCommandParams.put("value", unitTestingint24uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt24uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt24uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt24uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt24uAttribute", writeTestClusterInt24uAttributeInteractionInfo);
-    Map writeTestClusterInt32uCommandParams =
+            writeUnitTestingInt24uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt24uAttribute", writeUnitTestingInt24uAttributeInteractionInfo);
+    Map writeUnitTestingInt32uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint32uCommandParameterInfo =
+    CommandParameterInfo unitTestingint32uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt32uCommandParams.put("value", testClusterint32uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt32uAttributeInteractionInfo =
+    writeUnitTestingInt32uCommandParams.put("value", unitTestingint32uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt32uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt32uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt32uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt32uAttribute", writeTestClusterInt32uAttributeInteractionInfo);
-    Map writeTestClusterInt40uCommandParams =
+            writeUnitTestingInt32uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt32uAttribute", writeUnitTestingInt32uAttributeInteractionInfo);
+    Map writeUnitTestingInt40uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint40uCommandParameterInfo =
+    CommandParameterInfo unitTestingint40uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt40uCommandParams.put("value", testClusterint40uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt40uAttributeInteractionInfo =
+    writeUnitTestingInt40uCommandParams.put("value", unitTestingint40uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt40uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt40uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt40uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt40uAttribute", writeTestClusterInt40uAttributeInteractionInfo);
-    Map writeTestClusterInt48uCommandParams =
+            writeUnitTestingInt40uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt40uAttribute", writeUnitTestingInt40uAttributeInteractionInfo);
+    Map writeUnitTestingInt48uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint48uCommandParameterInfo =
+    CommandParameterInfo unitTestingint48uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt48uCommandParams.put("value", testClusterint48uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt48uAttributeInteractionInfo =
+    writeUnitTestingInt48uCommandParams.put("value", unitTestingint48uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt48uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt48uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt48uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt48uAttribute", writeTestClusterInt48uAttributeInteractionInfo);
-    Map writeTestClusterInt56uCommandParams =
+            writeUnitTestingInt48uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt48uAttribute", writeUnitTestingInt48uAttributeInteractionInfo);
+    Map writeUnitTestingInt56uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint56uCommandParameterInfo =
+    CommandParameterInfo unitTestingint56uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt56uCommandParams.put("value", testClusterint56uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt56uAttributeInteractionInfo =
+    writeUnitTestingInt56uCommandParams.put("value", unitTestingint56uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt56uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt56uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt56uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt56uAttribute", writeTestClusterInt56uAttributeInteractionInfo);
-    Map writeTestClusterInt64uCommandParams =
+            writeUnitTestingInt56uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt56uAttribute", writeUnitTestingInt56uAttributeInteractionInfo);
+    Map writeUnitTestingInt64uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint64uCommandParameterInfo =
+    CommandParameterInfo unitTestingint64uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt64uCommandParams.put("value", testClusterint64uCommandParameterInfo);
-    InteractionInfo writeTestClusterInt64uAttributeInteractionInfo =
+    writeUnitTestingInt64uCommandParams.put("value", unitTestingint64uCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt64uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt64uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt64uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt64uAttribute", writeTestClusterInt64uAttributeInteractionInfo);
-    Map writeTestClusterInt8sCommandParams =
+            writeUnitTestingInt64uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt64uAttribute", writeUnitTestingInt64uAttributeInteractionInfo);
+    Map writeUnitTestingInt8sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint8sCommandParameterInfo =
+    CommandParameterInfo unitTestingint8sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterInt8sCommandParams.put("value", testClusterint8sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt8sAttributeInteractionInfo =
+    writeUnitTestingInt8sCommandParams.put("value", unitTestingint8sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt8sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt8sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt8sAttribute", writeTestClusterInt8sAttributeInteractionInfo);
-    Map writeTestClusterInt16sCommandParams =
+            writeUnitTestingInt8sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt8sAttribute", writeUnitTestingInt8sAttributeInteractionInfo);
+    Map writeUnitTestingInt16sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint16sCommandParameterInfo =
+    CommandParameterInfo unitTestingint16sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterInt16sCommandParams.put("value", testClusterint16sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt16sAttributeInteractionInfo =
+    writeUnitTestingInt16sCommandParams.put("value", unitTestingint16sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt16sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt16sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt16sAttribute", writeTestClusterInt16sAttributeInteractionInfo);
-    Map writeTestClusterInt24sCommandParams =
+            writeUnitTestingInt16sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt16sAttribute", writeUnitTestingInt16sAttributeInteractionInfo);
+    Map writeUnitTestingInt24sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint24sCommandParameterInfo =
+    CommandParameterInfo unitTestingint24sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt24sCommandParams.put("value", testClusterint24sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt24sAttributeInteractionInfo =
+    writeUnitTestingInt24sCommandParams.put("value", unitTestingint24sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt24sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt24sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt24sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt24sAttribute", writeTestClusterInt24sAttributeInteractionInfo);
-    Map writeTestClusterInt32sCommandParams =
+            writeUnitTestingInt24sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt24sAttribute", writeUnitTestingInt24sAttributeInteractionInfo);
+    Map writeUnitTestingInt32sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint32sCommandParameterInfo =
+    CommandParameterInfo unitTestingint32sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt32sCommandParams.put("value", testClusterint32sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt32sAttributeInteractionInfo =
+    writeUnitTestingInt32sCommandParams.put("value", unitTestingint32sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt32sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt32sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt32sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt32sAttribute", writeTestClusterInt32sAttributeInteractionInfo);
-    Map writeTestClusterInt40sCommandParams =
+            writeUnitTestingInt32sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt32sAttribute", writeUnitTestingInt32sAttributeInteractionInfo);
+    Map writeUnitTestingInt40sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint40sCommandParameterInfo =
+    CommandParameterInfo unitTestingint40sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt40sCommandParams.put("value", testClusterint40sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt40sAttributeInteractionInfo =
+    writeUnitTestingInt40sCommandParams.put("value", unitTestingint40sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt40sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt40sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt40sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt40sAttribute", writeTestClusterInt40sAttributeInteractionInfo);
-    Map writeTestClusterInt48sCommandParams =
+            writeUnitTestingInt40sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt40sAttribute", writeUnitTestingInt40sAttributeInteractionInfo);
+    Map writeUnitTestingInt48sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint48sCommandParameterInfo =
+    CommandParameterInfo unitTestingint48sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt48sCommandParams.put("value", testClusterint48sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt48sAttributeInteractionInfo =
+    writeUnitTestingInt48sCommandParams.put("value", unitTestingint48sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt48sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt48sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt48sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt48sAttribute", writeTestClusterInt48sAttributeInteractionInfo);
-    Map writeTestClusterInt56sCommandParams =
+            writeUnitTestingInt48sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt48sAttribute", writeUnitTestingInt48sAttributeInteractionInfo);
+    Map writeUnitTestingInt56sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint56sCommandParameterInfo =
+    CommandParameterInfo unitTestingint56sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt56sCommandParams.put("value", testClusterint56sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt56sAttributeInteractionInfo =
+    writeUnitTestingInt56sCommandParams.put("value", unitTestingint56sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt56sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt56sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt56sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt56sAttribute", writeTestClusterInt56sAttributeInteractionInfo);
-    Map writeTestClusterInt64sCommandParams =
+            writeUnitTestingInt56sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt56sAttribute", writeUnitTestingInt56sAttributeInteractionInfo);
+    Map writeUnitTestingInt64sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterint64sCommandParameterInfo =
+    CommandParameterInfo unitTestingint64sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterInt64sCommandParams.put("value", testClusterint64sCommandParameterInfo);
-    InteractionInfo writeTestClusterInt64sAttributeInteractionInfo =
+    writeUnitTestingInt64sCommandParams.put("value", unitTestingint64sCommandParameterInfo);
+    InteractionInfo writeUnitTestingInt64sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeInt64sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterInt64sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeInt64sAttribute", writeTestClusterInt64sAttributeInteractionInfo);
-    Map writeTestClusterEnum8CommandParams =
+            writeUnitTestingInt64sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeInt64sAttribute", writeUnitTestingInt64sAttributeInteractionInfo);
+    Map writeUnitTestingEnum8CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterenum8CommandParameterInfo =
+    CommandParameterInfo unitTestingenum8CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterEnum8CommandParams.put("value", testClusterenum8CommandParameterInfo);
-    InteractionInfo writeTestClusterEnum8AttributeInteractionInfo =
+    writeUnitTestingEnum8CommandParams.put("value", unitTestingenum8CommandParameterInfo);
+    InteractionInfo writeUnitTestingEnum8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeEnum8Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterEnum8CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeEnum8Attribute", writeTestClusterEnum8AttributeInteractionInfo);
-    Map writeTestClusterEnum16CommandParams =
+            writeUnitTestingEnum8CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeEnum8Attribute", writeUnitTestingEnum8AttributeInteractionInfo);
+    Map writeUnitTestingEnum16CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterenum16CommandParameterInfo =
+    CommandParameterInfo unitTestingenum16CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterEnum16CommandParams.put("value", testClusterenum16CommandParameterInfo);
-    InteractionInfo writeTestClusterEnum16AttributeInteractionInfo =
+    writeUnitTestingEnum16CommandParams.put("value", unitTestingenum16CommandParameterInfo);
+    InteractionInfo writeUnitTestingEnum16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeEnum16Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterEnum16CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeEnum16Attribute", writeTestClusterEnum16AttributeInteractionInfo);
-    Map writeTestClusterFloatSingleCommandParams =
+            writeUnitTestingEnum16CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeEnum16Attribute", writeUnitTestingEnum16AttributeInteractionInfo);
+    Map writeUnitTestingFloatSingleCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterfloatSingleCommandParameterInfo =
+    CommandParameterInfo unitTestingfloatSingleCommandParameterInfo =
         new CommandParameterInfo("value", Float.class, Float.class);
-    writeTestClusterFloatSingleCommandParams.put(
-        "value", testClusterfloatSingleCommandParameterInfo);
-    InteractionInfo writeTestClusterFloatSingleAttributeInteractionInfo =
+    writeUnitTestingFloatSingleCommandParams.put(
+        "value", unitTestingfloatSingleCommandParameterInfo);
+    InteractionInfo writeUnitTestingFloatSingleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeFloatSingleAttribute(
                       (DefaultClusterCallback) callback, (Float) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterFloatSingleCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeFloatSingleAttribute", writeTestClusterFloatSingleAttributeInteractionInfo);
-    Map writeTestClusterFloatDoubleCommandParams =
+            writeUnitTestingFloatSingleCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeFloatSingleAttribute", writeUnitTestingFloatSingleAttributeInteractionInfo);
+    Map writeUnitTestingFloatDoubleCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterfloatDoubleCommandParameterInfo =
+    CommandParameterInfo unitTestingfloatDoubleCommandParameterInfo =
         new CommandParameterInfo("value", Double.class, Double.class);
-    writeTestClusterFloatDoubleCommandParams.put(
-        "value", testClusterfloatDoubleCommandParameterInfo);
-    InteractionInfo writeTestClusterFloatDoubleAttributeInteractionInfo =
+    writeUnitTestingFloatDoubleCommandParams.put(
+        "value", unitTestingfloatDoubleCommandParameterInfo);
+    InteractionInfo writeUnitTestingFloatDoubleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeFloatDoubleAttribute(
                       (DefaultClusterCallback) callback, (Double) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterFloatDoubleCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeFloatDoubleAttribute", writeTestClusterFloatDoubleAttributeInteractionInfo);
-    Map writeTestClusterOctetStringCommandParams =
+            writeUnitTestingFloatDoubleCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeFloatDoubleAttribute", writeUnitTestingFloatDoubleAttributeInteractionInfo);
+    Map writeUnitTestingOctetStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusteroctetStringCommandParameterInfo =
+    CommandParameterInfo unitTestingoctetStringCommandParameterInfo =
         new CommandParameterInfo("value", byte[].class, byte[].class);
-    writeTestClusterOctetStringCommandParams.put(
-        "value", testClusteroctetStringCommandParameterInfo);
-    InteractionInfo writeTestClusterOctetStringAttributeInteractionInfo =
+    writeUnitTestingOctetStringCommandParams.put(
+        "value", unitTestingoctetStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeOctetStringAttribute(
                       (DefaultClusterCallback) callback, (byte[]) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterOctetStringCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeOctetStringAttribute", writeTestClusterOctetStringAttributeInteractionInfo);
-    Map writeTestClusterLongOctetStringCommandParams =
+            writeUnitTestingOctetStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeOctetStringAttribute", writeUnitTestingOctetStringAttributeInteractionInfo);
+    Map writeUnitTestingLongOctetStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterlongOctetStringCommandParameterInfo =
+    CommandParameterInfo unitTestinglongOctetStringCommandParameterInfo =
         new CommandParameterInfo("value", byte[].class, byte[].class);
-    writeTestClusterLongOctetStringCommandParams.put(
-        "value", testClusterlongOctetStringCommandParameterInfo);
-    InteractionInfo writeTestClusterLongOctetStringAttributeInteractionInfo =
+    writeUnitTestingLongOctetStringCommandParams.put(
+        "value", unitTestinglongOctetStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingLongOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeLongOctetStringAttribute(
                       (DefaultClusterCallback) callback, (byte[]) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterLongOctetStringCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeLongOctetStringAttribute", writeTestClusterLongOctetStringAttributeInteractionInfo);
-    Map writeTestClusterCharStringCommandParams =
+            writeUnitTestingLongOctetStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeLongOctetStringAttribute", writeUnitTestingLongOctetStringAttributeInteractionInfo);
+    Map writeUnitTestingCharStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustercharStringCommandParameterInfo =
+    CommandParameterInfo unitTestingcharStringCommandParameterInfo =
         new CommandParameterInfo("value", String.class, String.class);
-    writeTestClusterCharStringCommandParams.put("value", testClustercharStringCommandParameterInfo);
-    InteractionInfo writeTestClusterCharStringAttributeInteractionInfo =
+    writeUnitTestingCharStringCommandParams.put("value", unitTestingcharStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeCharStringAttribute(
                       (DefaultClusterCallback) callback, (String) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterCharStringCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeCharStringAttribute", writeTestClusterCharStringAttributeInteractionInfo);
-    Map writeTestClusterLongCharStringCommandParams =
+            writeUnitTestingCharStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeCharStringAttribute", writeUnitTestingCharStringAttributeInteractionInfo);
+    Map writeUnitTestingLongCharStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterlongCharStringCommandParameterInfo =
+    CommandParameterInfo unitTestinglongCharStringCommandParameterInfo =
         new CommandParameterInfo("value", String.class, String.class);
-    writeTestClusterLongCharStringCommandParams.put(
-        "value", testClusterlongCharStringCommandParameterInfo);
-    InteractionInfo writeTestClusterLongCharStringAttributeInteractionInfo =
+    writeUnitTestingLongCharStringCommandParams.put(
+        "value", unitTestinglongCharStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingLongCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeLongCharStringAttribute(
                       (DefaultClusterCallback) callback, (String) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterLongCharStringCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeLongCharStringAttribute", writeTestClusterLongCharStringAttributeInteractionInfo);
-    Map writeTestClusterEpochUsCommandParams =
+            writeUnitTestingLongCharStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeLongCharStringAttribute", writeUnitTestingLongCharStringAttributeInteractionInfo);
+    Map writeUnitTestingEpochUsCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterepochUsCommandParameterInfo =
+    CommandParameterInfo unitTestingepochUsCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterEpochUsCommandParams.put("value", testClusterepochUsCommandParameterInfo);
-    InteractionInfo writeTestClusterEpochUsAttributeInteractionInfo =
+    writeUnitTestingEpochUsCommandParams.put("value", unitTestingepochUsCommandParameterInfo);
+    InteractionInfo writeUnitTestingEpochUsAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeEpochUsAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterEpochUsCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeEpochUsAttribute", writeTestClusterEpochUsAttributeInteractionInfo);
-    Map writeTestClusterEpochSCommandParams =
+            writeUnitTestingEpochUsCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeEpochUsAttribute", writeUnitTestingEpochUsAttributeInteractionInfo);
+    Map writeUnitTestingEpochSCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterepochSCommandParameterInfo =
+    CommandParameterInfo unitTestingepochSCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterEpochSCommandParams.put("value", testClusterepochSCommandParameterInfo);
-    InteractionInfo writeTestClusterEpochSAttributeInteractionInfo =
+    writeUnitTestingEpochSCommandParams.put("value", unitTestingepochSCommandParameterInfo);
+    InteractionInfo writeUnitTestingEpochSAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeEpochSAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterEpochSCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeEpochSAttribute", writeTestClusterEpochSAttributeInteractionInfo);
-    Map writeTestClusterVendorIdCommandParams =
+            writeUnitTestingEpochSCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeEpochSAttribute", writeUnitTestingEpochSAttributeInteractionInfo);
+    Map writeUnitTestingVendorIdCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustervendorIdCommandParameterInfo =
+    CommandParameterInfo unitTestingvendorIdCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterVendorIdCommandParams.put("value", testClustervendorIdCommandParameterInfo);
-    InteractionInfo writeTestClusterVendorIdAttributeInteractionInfo =
+    writeUnitTestingVendorIdCommandParams.put("value", unitTestingvendorIdCommandParameterInfo);
+    InteractionInfo writeUnitTestingVendorIdAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeVendorIdAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterVendorIdCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeVendorIdAttribute", writeTestClusterVendorIdAttributeInteractionInfo);
-    Map writeTestClusterEnumAttrCommandParams =
+            writeUnitTestingVendorIdCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeVendorIdAttribute", writeUnitTestingVendorIdAttributeInteractionInfo);
+    Map writeUnitTestingEnumAttrCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterenumAttrCommandParameterInfo =
+    CommandParameterInfo unitTestingenumAttrCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterEnumAttrCommandParams.put("value", testClusterenumAttrCommandParameterInfo);
-    InteractionInfo writeTestClusterEnumAttrAttributeInteractionInfo =
+    writeUnitTestingEnumAttrCommandParams.put("value", unitTestingenumAttrCommandParameterInfo);
+    InteractionInfo writeUnitTestingEnumAttrAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeEnumAttrAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterEnumAttrCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeEnumAttrAttribute", writeTestClusterEnumAttrAttributeInteractionInfo);
-    Map writeTestClusterRangeRestrictedInt8uCommandParams =
+            writeUnitTestingEnumAttrCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeEnumAttrAttribute", writeUnitTestingEnumAttrAttributeInteractionInfo);
+    Map writeUnitTestingRangeRestrictedInt8uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterrangeRestrictedInt8uCommandParameterInfo =
+    CommandParameterInfo unitTestingrangeRestrictedInt8uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterRangeRestrictedInt8uCommandParams.put(
-        "value", testClusterrangeRestrictedInt8uCommandParameterInfo);
-    InteractionInfo writeTestClusterRangeRestrictedInt8uAttributeInteractionInfo =
+    writeUnitTestingRangeRestrictedInt8uCommandParams.put(
+        "value", unitTestingrangeRestrictedInt8uCommandParameterInfo);
+    InteractionInfo writeUnitTestingRangeRestrictedInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeRangeRestrictedInt8uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterRangeRestrictedInt8uCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingRangeRestrictedInt8uCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeRangeRestrictedInt8uAttribute",
-        writeTestClusterRangeRestrictedInt8uAttributeInteractionInfo);
-    Map writeTestClusterRangeRestrictedInt8sCommandParams =
+        writeUnitTestingRangeRestrictedInt8uAttributeInteractionInfo);
+    Map writeUnitTestingRangeRestrictedInt8sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterrangeRestrictedInt8sCommandParameterInfo =
+    CommandParameterInfo unitTestingrangeRestrictedInt8sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterRangeRestrictedInt8sCommandParams.put(
-        "value", testClusterrangeRestrictedInt8sCommandParameterInfo);
-    InteractionInfo writeTestClusterRangeRestrictedInt8sAttributeInteractionInfo =
+    writeUnitTestingRangeRestrictedInt8sCommandParams.put(
+        "value", unitTestingrangeRestrictedInt8sCommandParameterInfo);
+    InteractionInfo writeUnitTestingRangeRestrictedInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeRangeRestrictedInt8sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterRangeRestrictedInt8sCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingRangeRestrictedInt8sCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeRangeRestrictedInt8sAttribute",
-        writeTestClusterRangeRestrictedInt8sAttributeInteractionInfo);
-    Map writeTestClusterRangeRestrictedInt16uCommandParams =
+        writeUnitTestingRangeRestrictedInt8sAttributeInteractionInfo);
+    Map writeUnitTestingRangeRestrictedInt16uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterrangeRestrictedInt16uCommandParameterInfo =
+    CommandParameterInfo unitTestingrangeRestrictedInt16uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterRangeRestrictedInt16uCommandParams.put(
-        "value", testClusterrangeRestrictedInt16uCommandParameterInfo);
-    InteractionInfo writeTestClusterRangeRestrictedInt16uAttributeInteractionInfo =
+    writeUnitTestingRangeRestrictedInt16uCommandParams.put(
+        "value", unitTestingrangeRestrictedInt16uCommandParameterInfo);
+    InteractionInfo writeUnitTestingRangeRestrictedInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeRangeRestrictedInt16uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterRangeRestrictedInt16uCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingRangeRestrictedInt16uCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeRangeRestrictedInt16uAttribute",
-        writeTestClusterRangeRestrictedInt16uAttributeInteractionInfo);
-    Map writeTestClusterRangeRestrictedInt16sCommandParams =
+        writeUnitTestingRangeRestrictedInt16uAttributeInteractionInfo);
+    Map writeUnitTestingRangeRestrictedInt16sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterrangeRestrictedInt16sCommandParameterInfo =
+    CommandParameterInfo unitTestingrangeRestrictedInt16sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterRangeRestrictedInt16sCommandParams.put(
-        "value", testClusterrangeRestrictedInt16sCommandParameterInfo);
-    InteractionInfo writeTestClusterRangeRestrictedInt16sAttributeInteractionInfo =
+    writeUnitTestingRangeRestrictedInt16sCommandParams.put(
+        "value", unitTestingrangeRestrictedInt16sCommandParameterInfo);
+    InteractionInfo writeUnitTestingRangeRestrictedInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeRangeRestrictedInt16sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterRangeRestrictedInt16sCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingRangeRestrictedInt16sCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeRangeRestrictedInt16sAttribute",
-        writeTestClusterRangeRestrictedInt16sAttributeInteractionInfo);
-    Map writeTestClusterTimedWriteBooleanCommandParams =
+        writeUnitTestingRangeRestrictedInt16sAttributeInteractionInfo);
+    Map writeUnitTestingTimedWriteBooleanCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustertimedWriteBooleanCommandParameterInfo =
+    CommandParameterInfo unitTestingtimedWriteBooleanCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterTimedWriteBooleanCommandParams.put(
-        "value", testClustertimedWriteBooleanCommandParameterInfo);
-    InteractionInfo writeTestClusterTimedWriteBooleanAttributeInteractionInfo =
+    writeUnitTestingTimedWriteBooleanCommandParams.put(
+        "value", unitTestingtimedWriteBooleanCommandParameterInfo);
+    InteractionInfo writeUnitTestingTimedWriteBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeTimedWriteBooleanAttribute(
                       (DefaultClusterCallback) callback,
                       (Boolean) commandArguments.get("value"),
                       10000);
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterTimedWriteBooleanCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingTimedWriteBooleanCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeTimedWriteBooleanAttribute",
-        writeTestClusterTimedWriteBooleanAttributeInteractionInfo);
-    Map writeTestClusterGeneralErrorBooleanCommandParams =
+        writeUnitTestingTimedWriteBooleanAttributeInteractionInfo);
+    Map writeUnitTestingGeneralErrorBooleanCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClustergeneralErrorBooleanCommandParameterInfo =
+    CommandParameterInfo unitTestinggeneralErrorBooleanCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterGeneralErrorBooleanCommandParams.put(
-        "value", testClustergeneralErrorBooleanCommandParameterInfo);
-    InteractionInfo writeTestClusterGeneralErrorBooleanAttributeInteractionInfo =
+    writeUnitTestingGeneralErrorBooleanCommandParams.put(
+        "value", unitTestinggeneralErrorBooleanCommandParameterInfo);
+    InteractionInfo writeUnitTestingGeneralErrorBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeGeneralErrorBooleanAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterGeneralErrorBooleanCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingGeneralErrorBooleanCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeGeneralErrorBooleanAttribute",
-        writeTestClusterGeneralErrorBooleanAttributeInteractionInfo);
-    Map writeTestClusterClusterErrorBooleanCommandParams =
+        writeUnitTestingGeneralErrorBooleanAttributeInteractionInfo);
+    Map writeUnitTestingClusterErrorBooleanCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterclusterErrorBooleanCommandParameterInfo =
+    CommandParameterInfo unitTestingclusterErrorBooleanCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterClusterErrorBooleanCommandParams.put(
-        "value", testClusterclusterErrorBooleanCommandParameterInfo);
-    InteractionInfo writeTestClusterClusterErrorBooleanAttributeInteractionInfo =
+    writeUnitTestingClusterErrorBooleanCommandParams.put(
+        "value", unitTestingclusterErrorBooleanCommandParameterInfo);
+    InteractionInfo writeUnitTestingClusterErrorBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeClusterErrorBooleanAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterClusterErrorBooleanCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingClusterErrorBooleanCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeClusterErrorBooleanAttribute",
-        writeTestClusterClusterErrorBooleanAttributeInteractionInfo);
-    Map writeTestClusterUnsupportedCommandParams =
+        writeUnitTestingClusterErrorBooleanAttributeInteractionInfo);
+    Map writeUnitTestingUnsupportedCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusterunsupportedCommandParameterInfo =
+    CommandParameterInfo unitTestingunsupportedCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterUnsupportedCommandParams.put(
-        "value", testClusterunsupportedCommandParameterInfo);
-    InteractionInfo writeTestClusterUnsupportedAttributeInteractionInfo =
+    writeUnitTestingUnsupportedCommandParams.put(
+        "value", unitTestingunsupportedCommandParameterInfo);
+    InteractionInfo writeUnitTestingUnsupportedAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeUnsupportedAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterUnsupportedCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeUnsupportedAttribute", writeTestClusterUnsupportedAttributeInteractionInfo);
-    Map writeTestClusterNullableBooleanCommandParams =
+            writeUnitTestingUnsupportedCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeUnsupportedAttribute", writeUnitTestingUnsupportedAttributeInteractionInfo);
+    Map writeUnitTestingNullableBooleanCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableBooleanCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableBooleanCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeTestClusterNullableBooleanCommandParams.put(
-        "value", testClusternullableBooleanCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableBooleanAttributeInteractionInfo =
+    writeUnitTestingNullableBooleanCommandParams.put(
+        "value", unitTestingnullableBooleanCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableBooleanAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableBooleanAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableBooleanCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableBooleanAttribute", writeTestClusterNullableBooleanAttributeInteractionInfo);
-    Map writeTestClusterNullableBitmap8CommandParams =
+            writeUnitTestingNullableBooleanCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableBooleanAttribute", writeUnitTestingNullableBooleanAttributeInteractionInfo);
+    Map writeUnitTestingNullableBitmap8CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableBitmap8CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableBitmap8CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableBitmap8CommandParams.put(
-        "value", testClusternullableBitmap8CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableBitmap8AttributeInteractionInfo =
+    writeUnitTestingNullableBitmap8CommandParams.put(
+        "value", unitTestingnullableBitmap8CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableBitmap8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableBitmap8Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableBitmap8CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableBitmap8Attribute", writeTestClusterNullableBitmap8AttributeInteractionInfo);
-    Map writeTestClusterNullableBitmap16CommandParams =
+            writeUnitTestingNullableBitmap8CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableBitmap8Attribute", writeUnitTestingNullableBitmap8AttributeInteractionInfo);
+    Map writeUnitTestingNullableBitmap16CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableBitmap16CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableBitmap16CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableBitmap16CommandParams.put(
-        "value", testClusternullableBitmap16CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableBitmap16AttributeInteractionInfo =
+    writeUnitTestingNullableBitmap16CommandParams.put(
+        "value", unitTestingnullableBitmap16CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableBitmap16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableBitmap16Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableBitmap16CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableBitmap16Attribute", writeTestClusterNullableBitmap16AttributeInteractionInfo);
-    Map writeTestClusterNullableBitmap32CommandParams =
+            writeUnitTestingNullableBitmap16CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableBitmap16Attribute", writeUnitTestingNullableBitmap16AttributeInteractionInfo);
+    Map writeUnitTestingNullableBitmap32CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableBitmap32CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableBitmap32CommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableBitmap32CommandParams.put(
-        "value", testClusternullableBitmap32CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableBitmap32AttributeInteractionInfo =
+    writeUnitTestingNullableBitmap32CommandParams.put(
+        "value", unitTestingnullableBitmap32CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableBitmap32AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableBitmap32Attribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableBitmap32CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableBitmap32Attribute", writeTestClusterNullableBitmap32AttributeInteractionInfo);
-    Map writeTestClusterNullableBitmap64CommandParams =
+            writeUnitTestingNullableBitmap32CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableBitmap32Attribute", writeUnitTestingNullableBitmap32AttributeInteractionInfo);
+    Map writeUnitTestingNullableBitmap64CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableBitmap64CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableBitmap64CommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableBitmap64CommandParams.put(
-        "value", testClusternullableBitmap64CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableBitmap64AttributeInteractionInfo =
+    writeUnitTestingNullableBitmap64CommandParams.put(
+        "value", unitTestingnullableBitmap64CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableBitmap64AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableBitmap64Attribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableBitmap64CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableBitmap64Attribute", writeTestClusterNullableBitmap64AttributeInteractionInfo);
-    Map writeTestClusterNullableInt8uCommandParams =
+            writeUnitTestingNullableBitmap64CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableBitmap64Attribute", writeUnitTestingNullableBitmap64AttributeInteractionInfo);
+    Map writeUnitTestingNullableInt8uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt8uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt8uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableInt8uCommandParams.put(
-        "value", testClusternullableInt8uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt8uAttributeInteractionInfo =
+    writeUnitTestingNullableInt8uCommandParams.put(
+        "value", unitTestingnullableInt8uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt8uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt8uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt8uAttribute", writeTestClusterNullableInt8uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt16uCommandParams =
+            writeUnitTestingNullableInt8uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt8uAttribute", writeUnitTestingNullableInt8uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt16uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt16uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt16uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableInt16uCommandParams.put(
-        "value", testClusternullableInt16uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt16uAttributeInteractionInfo =
+    writeUnitTestingNullableInt16uCommandParams.put(
+        "value", unitTestingnullableInt16uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt16uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt16uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt16uAttribute", writeTestClusterNullableInt16uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt24uCommandParams =
+            writeUnitTestingNullableInt16uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt16uAttribute", writeUnitTestingNullableInt16uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt24uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt24uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt24uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt24uCommandParams.put(
-        "value", testClusternullableInt24uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt24uAttributeInteractionInfo =
+    writeUnitTestingNullableInt24uCommandParams.put(
+        "value", unitTestingnullableInt24uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt24uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt24uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt24uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt24uAttribute", writeTestClusterNullableInt24uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt32uCommandParams =
+            writeUnitTestingNullableInt24uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt24uAttribute", writeUnitTestingNullableInt24uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt32uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt32uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt32uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt32uCommandParams.put(
-        "value", testClusternullableInt32uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt32uAttributeInteractionInfo =
+    writeUnitTestingNullableInt32uCommandParams.put(
+        "value", unitTestingnullableInt32uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt32uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt32uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt32uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt32uAttribute", writeTestClusterNullableInt32uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt40uCommandParams =
+            writeUnitTestingNullableInt32uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt32uAttribute", writeUnitTestingNullableInt32uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt40uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt40uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt40uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt40uCommandParams.put(
-        "value", testClusternullableInt40uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt40uAttributeInteractionInfo =
+    writeUnitTestingNullableInt40uCommandParams.put(
+        "value", unitTestingnullableInt40uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt40uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt40uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt40uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt40uAttribute", writeTestClusterNullableInt40uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt48uCommandParams =
+            writeUnitTestingNullableInt40uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt40uAttribute", writeUnitTestingNullableInt40uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt48uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt48uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt48uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt48uCommandParams.put(
-        "value", testClusternullableInt48uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt48uAttributeInteractionInfo =
+    writeUnitTestingNullableInt48uCommandParams.put(
+        "value", unitTestingnullableInt48uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt48uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt48uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt48uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt48uAttribute", writeTestClusterNullableInt48uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt56uCommandParams =
+            writeUnitTestingNullableInt48uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt48uAttribute", writeUnitTestingNullableInt48uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt56uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt56uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt56uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt56uCommandParams.put(
-        "value", testClusternullableInt56uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt56uAttributeInteractionInfo =
+    writeUnitTestingNullableInt56uCommandParams.put(
+        "value", unitTestingnullableInt56uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt56uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt56uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt56uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt56uAttribute", writeTestClusterNullableInt56uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt64uCommandParams =
+            writeUnitTestingNullableInt56uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt56uAttribute", writeUnitTestingNullableInt56uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt64uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt64uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt64uCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt64uCommandParams.put(
-        "value", testClusternullableInt64uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt64uAttributeInteractionInfo =
+    writeUnitTestingNullableInt64uCommandParams.put(
+        "value", unitTestingnullableInt64uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt64uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt64uAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt64uCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt64uAttribute", writeTestClusterNullableInt64uAttributeInteractionInfo);
-    Map writeTestClusterNullableInt8sCommandParams =
+            writeUnitTestingNullableInt64uCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt64uAttribute", writeUnitTestingNullableInt64uAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt8sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt8sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt8sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableInt8sCommandParams.put(
-        "value", testClusternullableInt8sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt8sAttributeInteractionInfo =
+    writeUnitTestingNullableInt8sCommandParams.put(
+        "value", unitTestingnullableInt8sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt8sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt8sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt8sAttribute", writeTestClusterNullableInt8sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt16sCommandParams =
+            writeUnitTestingNullableInt8sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt8sAttribute", writeUnitTestingNullableInt8sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt16sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt16sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt16sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableInt16sCommandParams.put(
-        "value", testClusternullableInt16sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt16sAttributeInteractionInfo =
+    writeUnitTestingNullableInt16sCommandParams.put(
+        "value", unitTestingnullableInt16sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt16sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt16sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt16sAttribute", writeTestClusterNullableInt16sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt24sCommandParams =
+            writeUnitTestingNullableInt16sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt16sAttribute", writeUnitTestingNullableInt16sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt24sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt24sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt24sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt24sCommandParams.put(
-        "value", testClusternullableInt24sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt24sAttributeInteractionInfo =
+    writeUnitTestingNullableInt24sCommandParams.put(
+        "value", unitTestingnullableInt24sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt24sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt24sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt24sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt24sAttribute", writeTestClusterNullableInt24sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt32sCommandParams =
+            writeUnitTestingNullableInt24sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt24sAttribute", writeUnitTestingNullableInt24sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt32sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt32sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt32sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt32sCommandParams.put(
-        "value", testClusternullableInt32sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt32sAttributeInteractionInfo =
+    writeUnitTestingNullableInt32sCommandParams.put(
+        "value", unitTestingnullableInt32sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt32sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt32sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt32sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt32sAttribute", writeTestClusterNullableInt32sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt40sCommandParams =
+            writeUnitTestingNullableInt32sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt32sAttribute", writeUnitTestingNullableInt32sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt40sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt40sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt40sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt40sCommandParams.put(
-        "value", testClusternullableInt40sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt40sAttributeInteractionInfo =
+    writeUnitTestingNullableInt40sCommandParams.put(
+        "value", unitTestingnullableInt40sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt40sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt40sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt40sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt40sAttribute", writeTestClusterNullableInt40sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt48sCommandParams =
+            writeUnitTestingNullableInt40sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt40sAttribute", writeUnitTestingNullableInt40sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt48sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt48sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt48sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt48sCommandParams.put(
-        "value", testClusternullableInt48sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt48sAttributeInteractionInfo =
+    writeUnitTestingNullableInt48sCommandParams.put(
+        "value", unitTestingnullableInt48sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt48sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt48sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt48sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt48sAttribute", writeTestClusterNullableInt48sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt56sCommandParams =
+            writeUnitTestingNullableInt48sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt48sAttribute", writeUnitTestingNullableInt48sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt56sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt56sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt56sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt56sCommandParams.put(
-        "value", testClusternullableInt56sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt56sAttributeInteractionInfo =
+    writeUnitTestingNullableInt56sCommandParams.put(
+        "value", unitTestingnullableInt56sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt56sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt56sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt56sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt56sAttribute", writeTestClusterNullableInt56sAttributeInteractionInfo);
-    Map writeTestClusterNullableInt64sCommandParams =
+            writeUnitTestingNullableInt56sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt56sAttribute", writeUnitTestingNullableInt56sAttributeInteractionInfo);
+    Map writeUnitTestingNullableInt64sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableInt64sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableInt64sCommandParameterInfo =
         new CommandParameterInfo("value", Long.class, Long.class);
-    writeTestClusterNullableInt64sCommandParams.put(
-        "value", testClusternullableInt64sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableInt64sAttributeInteractionInfo =
+    writeUnitTestingNullableInt64sCommandParams.put(
+        "value", unitTestingnullableInt64sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableInt64sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableInt64sAttribute(
                       (DefaultClusterCallback) callback, (Long) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableInt64sCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableInt64sAttribute", writeTestClusterNullableInt64sAttributeInteractionInfo);
-    Map writeTestClusterNullableEnum8CommandParams =
+            writeUnitTestingNullableInt64sCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableInt64sAttribute", writeUnitTestingNullableInt64sAttributeInteractionInfo);
+    Map writeUnitTestingNullableEnum8CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableEnum8CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableEnum8CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableEnum8CommandParams.put(
-        "value", testClusternullableEnum8CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableEnum8AttributeInteractionInfo =
+    writeUnitTestingNullableEnum8CommandParams.put(
+        "value", unitTestingnullableEnum8CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableEnum8AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableEnum8Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableEnum8CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableEnum8Attribute", writeTestClusterNullableEnum8AttributeInteractionInfo);
-    Map writeTestClusterNullableEnum16CommandParams =
+            writeUnitTestingNullableEnum8CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableEnum8Attribute", writeUnitTestingNullableEnum8AttributeInteractionInfo);
+    Map writeUnitTestingNullableEnum16CommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableEnum16CommandParameterInfo =
+    CommandParameterInfo unitTestingnullableEnum16CommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableEnum16CommandParams.put(
-        "value", testClusternullableEnum16CommandParameterInfo);
-    InteractionInfo writeTestClusterNullableEnum16AttributeInteractionInfo =
+    writeUnitTestingNullableEnum16CommandParams.put(
+        "value", unitTestingnullableEnum16CommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableEnum16AttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableEnum16Attribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableEnum16CommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableEnum16Attribute", writeTestClusterNullableEnum16AttributeInteractionInfo);
-    Map writeTestClusterNullableFloatSingleCommandParams =
+            writeUnitTestingNullableEnum16CommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableEnum16Attribute", writeUnitTestingNullableEnum16AttributeInteractionInfo);
+    Map writeUnitTestingNullableFloatSingleCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableFloatSingleCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableFloatSingleCommandParameterInfo =
         new CommandParameterInfo("value", Float.class, Float.class);
-    writeTestClusterNullableFloatSingleCommandParams.put(
-        "value", testClusternullableFloatSingleCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableFloatSingleAttributeInteractionInfo =
+    writeUnitTestingNullableFloatSingleCommandParams.put(
+        "value", unitTestingnullableFloatSingleCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableFloatSingleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableFloatSingleAttribute(
                       (DefaultClusterCallback) callback, (Float) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableFloatSingleCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableFloatSingleCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableFloatSingleAttribute",
-        writeTestClusterNullableFloatSingleAttributeInteractionInfo);
-    Map writeTestClusterNullableFloatDoubleCommandParams =
+        writeUnitTestingNullableFloatSingleAttributeInteractionInfo);
+    Map writeUnitTestingNullableFloatDoubleCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableFloatDoubleCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableFloatDoubleCommandParameterInfo =
         new CommandParameterInfo("value", Double.class, Double.class);
-    writeTestClusterNullableFloatDoubleCommandParams.put(
-        "value", testClusternullableFloatDoubleCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableFloatDoubleAttributeInteractionInfo =
+    writeUnitTestingNullableFloatDoubleCommandParams.put(
+        "value", unitTestingnullableFloatDoubleCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableFloatDoubleAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableFloatDoubleAttribute(
                       (DefaultClusterCallback) callback, (Double) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableFloatDoubleCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableFloatDoubleCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableFloatDoubleAttribute",
-        writeTestClusterNullableFloatDoubleAttributeInteractionInfo);
-    Map writeTestClusterNullableOctetStringCommandParams =
+        writeUnitTestingNullableFloatDoubleAttributeInteractionInfo);
+    Map writeUnitTestingNullableOctetStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableOctetStringCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableOctetStringCommandParameterInfo =
         new CommandParameterInfo("value", byte[].class, byte[].class);
-    writeTestClusterNullableOctetStringCommandParams.put(
-        "value", testClusternullableOctetStringCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableOctetStringAttributeInteractionInfo =
+    writeUnitTestingNullableOctetStringCommandParams.put(
+        "value", unitTestingnullableOctetStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableOctetStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableOctetStringAttribute(
                       (DefaultClusterCallback) callback, (byte[]) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableOctetStringCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableOctetStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableOctetStringAttribute",
-        writeTestClusterNullableOctetStringAttributeInteractionInfo);
-    Map writeTestClusterNullableCharStringCommandParams =
+        writeUnitTestingNullableOctetStringAttributeInteractionInfo);
+    Map writeUnitTestingNullableCharStringCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableCharStringCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableCharStringCommandParameterInfo =
         new CommandParameterInfo("value", String.class, String.class);
-    writeTestClusterNullableCharStringCommandParams.put(
-        "value", testClusternullableCharStringCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableCharStringAttributeInteractionInfo =
+    writeUnitTestingNullableCharStringCommandParams.put(
+        "value", unitTestingnullableCharStringCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableCharStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableCharStringAttribute(
                       (DefaultClusterCallback) callback, (String) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableCharStringCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableCharStringCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableCharStringAttribute",
-        writeTestClusterNullableCharStringAttributeInteractionInfo);
-    Map writeTestClusterNullableEnumAttrCommandParams =
+        writeUnitTestingNullableCharStringAttributeInteractionInfo);
+    Map writeUnitTestingNullableEnumAttrCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableEnumAttrCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableEnumAttrCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableEnumAttrCommandParams.put(
-        "value", testClusternullableEnumAttrCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableEnumAttrAttributeInteractionInfo =
+    writeUnitTestingNullableEnumAttrCommandParams.put(
+        "value", unitTestingnullableEnumAttrCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableEnumAttrAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableEnumAttrAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableEnumAttrCommandParams);
-    writeTestClusterInteractionInfo.put(
-        "writeNullableEnumAttrAttribute", writeTestClusterNullableEnumAttrAttributeInteractionInfo);
-    Map writeTestClusterNullableRangeRestrictedInt8uCommandParams =
+            writeUnitTestingNullableEnumAttrCommandParams);
+    writeUnitTestingInteractionInfo.put(
+        "writeNullableEnumAttrAttribute", writeUnitTestingNullableEnumAttrAttributeInteractionInfo);
+    Map writeUnitTestingNullableRangeRestrictedInt8uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableRangeRestrictedInt8uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableRangeRestrictedInt8uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableRangeRestrictedInt8uCommandParams.put(
-        "value", testClusternullableRangeRestrictedInt8uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableRangeRestrictedInt8uAttributeInteractionInfo =
+    writeUnitTestingNullableRangeRestrictedInt8uCommandParams.put(
+        "value", unitTestingnullableRangeRestrictedInt8uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableRangeRestrictedInt8uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableRangeRestrictedInt8uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableRangeRestrictedInt8uCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableRangeRestrictedInt8uCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableRangeRestrictedInt8uAttribute",
-        writeTestClusterNullableRangeRestrictedInt8uAttributeInteractionInfo);
-    Map writeTestClusterNullableRangeRestrictedInt8sCommandParams =
+        writeUnitTestingNullableRangeRestrictedInt8uAttributeInteractionInfo);
+    Map writeUnitTestingNullableRangeRestrictedInt8sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableRangeRestrictedInt8sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableRangeRestrictedInt8sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableRangeRestrictedInt8sCommandParams.put(
-        "value", testClusternullableRangeRestrictedInt8sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableRangeRestrictedInt8sAttributeInteractionInfo =
+    writeUnitTestingNullableRangeRestrictedInt8sCommandParams.put(
+        "value", unitTestingnullableRangeRestrictedInt8sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableRangeRestrictedInt8sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableRangeRestrictedInt8sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableRangeRestrictedInt8sCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableRangeRestrictedInt8sCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableRangeRestrictedInt8sAttribute",
-        writeTestClusterNullableRangeRestrictedInt8sAttributeInteractionInfo);
-    Map writeTestClusterNullableRangeRestrictedInt16uCommandParams =
+        writeUnitTestingNullableRangeRestrictedInt8sAttributeInteractionInfo);
+    Map writeUnitTestingNullableRangeRestrictedInt16uCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableRangeRestrictedInt16uCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableRangeRestrictedInt16uCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableRangeRestrictedInt16uCommandParams.put(
-        "value", testClusternullableRangeRestrictedInt16uCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableRangeRestrictedInt16uAttributeInteractionInfo =
+    writeUnitTestingNullableRangeRestrictedInt16uCommandParams.put(
+        "value", unitTestingnullableRangeRestrictedInt16uCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableRangeRestrictedInt16uAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableRangeRestrictedInt16uAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableRangeRestrictedInt16uCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableRangeRestrictedInt16uCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableRangeRestrictedInt16uAttribute",
-        writeTestClusterNullableRangeRestrictedInt16uAttributeInteractionInfo);
-    Map writeTestClusterNullableRangeRestrictedInt16sCommandParams =
+        writeUnitTestingNullableRangeRestrictedInt16uAttributeInteractionInfo);
+    Map writeUnitTestingNullableRangeRestrictedInt16sCommandParams =
         new LinkedHashMap();
-    CommandParameterInfo testClusternullableRangeRestrictedInt16sCommandParameterInfo =
+    CommandParameterInfo unitTestingnullableRangeRestrictedInt16sCommandParameterInfo =
         new CommandParameterInfo("value", Integer.class, Integer.class);
-    writeTestClusterNullableRangeRestrictedInt16sCommandParams.put(
-        "value", testClusternullableRangeRestrictedInt16sCommandParameterInfo);
-    InteractionInfo writeTestClusterNullableRangeRestrictedInt16sAttributeInteractionInfo =
+    writeUnitTestingNullableRangeRestrictedInt16sCommandParams.put(
+        "value", unitTestingnullableRangeRestrictedInt16sCommandParameterInfo);
+    InteractionInfo writeUnitTestingNullableRangeRestrictedInt16sAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.TestClusterCluster) cluster)
+              ((ChipClusters.UnitTestingCluster) cluster)
                   .writeNullableRangeRestrictedInt16sAttribute(
                       (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeTestClusterNullableRangeRestrictedInt16sCommandParams);
-    writeTestClusterInteractionInfo.put(
+            writeUnitTestingNullableRangeRestrictedInt16sCommandParams);
+    writeUnitTestingInteractionInfo.put(
         "writeNullableRangeRestrictedInt16sAttribute",
-        writeTestClusterNullableRangeRestrictedInt16sAttributeInteractionInfo);
-    writeAttributeMap.put("testCluster", writeTestClusterInteractionInfo);
+        writeUnitTestingNullableRangeRestrictedInt16sAttributeInteractionInfo);
+    writeAttributeMap.put("unitTesting", writeUnitTestingInteractionInfo);
     return writeAttributeMap;
   }
 }
diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py
index 9c07108acc45cb..96ccacc3a96a45 100644
--- a/src/controller/python/chip/ChipDeviceCtrl.py
+++ b/src/controller/python/chip/ChipDeviceCtrl.py
@@ -867,7 +867,7 @@ async def WriteAttribute(self, nodeid: int, attributes: typing.List[typing.Tuple
                               timeout value based on transport characteristics as well as the responsiveness of the target.
 
         E.g
-            (1, Clusters.TestCluster.Attributes.XYZAttribute('hello')) -- Write 'hello' to the XYZ attribute on the test cluster to endpoint 1
+            (1, Clusters.UnitTesting.Attributes.XYZAttribute('hello')) -- Write 'hello' to the XYZ attribute on the test cluster to endpoint 1
         '''
         self.CheckIsActive()
 
diff --git a/src/controller/python/chip/clusters/Attribute.py b/src/controller/python/chip/clusters/Attribute.py
index d7608f8d3c53a9..795f9bac9c9630 100644
--- a/src/controller/python/chip/clusters/Attribute.py
+++ b/src/controller/python/chip/clusters/Attribute.py
@@ -347,8 +347,8 @@ class AttributeCache:
         cluster and attribute IDs, but instead by the cluster object descriptor types for each of those generated
         cluster objects.
 
-            E.g Clusters.TestCluster is the literal key for indexing the test cluster.
-                Clusters.TestCluster.Attributes.Int16u is the listeral key for indexing an attribute in the test cluster.
+            E.g Clusters.UnitTesting.is the literal key for indexing the test cluster.
+                Clusters.UnitTesting.Attributes.Int16u is the listeral key for indexing an attribute in the test cluster.
 
         This strongly typed keys permit a more natural and safer form of indexing.
     '''
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 7cea4b185e41b4..85c7d91f206a3d 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -6737,8 +6737,8 @@ class ChipClusters:
                 },
             },
     }
-    _TEST_CLUSTER_CLUSTER_INFO = {
-            "clusterName": "TestCluster",
+    _UNIT_TESTING_CLUSTER_INFO = {
+            "clusterName": "UnitTesting",
             "clusterId": 0xFFF1FC05,
             "commands": {
             0x00000000: {
@@ -7568,7 +7568,7 @@ class ChipClusters:
     0x0000050D: _APPLICATION_BASIC_CLUSTER_INFO,
     0x0000050E: _ACCOUNT_LOGIN_CLUSTER_INFO,
     0x00000B04: _ELECTRICAL_MEASUREMENT_CLUSTER_INFO,
-    0xFFF1FC05: _TEST_CLUSTER_CLUSTER_INFO,
+    0xFFF1FC05: _UNIT_TESTING_CLUSTER_INFO,
     }
 
     _CLUSTER_NAME_DICT = {
@@ -7636,7 +7636,7 @@ class ChipClusters:
         "ApplicationBasic": _APPLICATION_BASIC_CLUSTER_INFO,
         "AccountLogin": _ACCOUNT_LOGIN_CLUSTER_INFO,
         "ElectricalMeasurement": _ELECTRICAL_MEASUREMENT_CLUSTER_INFO,
-        "TestCluster": _TEST_CLUSTER_CLUSTER_INFO,
+        "UnitTesting": _UNIT_TESTING_CLUSTER_INFO,
     }
 
     def __init__(self, chipstack):
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 476925f68e71fb..ebe66dee75d117 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -26806,7 +26806,7 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
 
 
 @dataclass
-class TestCluster(Cluster):
+class UnitTesting(Cluster):
     id: typing.ClassVar[int] = 0xFFF1FC05
 
     @ChipUtility.classproperty
@@ -26841,22 +26841,22 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 ClusterObjectFieldDescriptor(Label="octetString", Tag=0x00000019, Type=bytes),
                 ClusterObjectFieldDescriptor(Label="listInt8u", Tag=0x0000001A, Type=typing.List[uint]),
                 ClusterObjectFieldDescriptor(Label="listOctetString", Tag=0x0000001B, Type=typing.List[bytes]),
-                ClusterObjectFieldDescriptor(Label="listStructOctetString", Tag=0x0000001C, Type=typing.List[TestCluster.Structs.TestListStructOctet]),
+                ClusterObjectFieldDescriptor(Label="listStructOctetString", Tag=0x0000001C, Type=typing.List[UnitTesting.Structs.TestListStructOctet]),
                 ClusterObjectFieldDescriptor(Label="longOctetString", Tag=0x0000001D, Type=bytes),
                 ClusterObjectFieldDescriptor(Label="charString", Tag=0x0000001E, Type=str),
                 ClusterObjectFieldDescriptor(Label="longCharString", Tag=0x0000001F, Type=str),
                 ClusterObjectFieldDescriptor(Label="epochUs", Tag=0x00000020, Type=uint),
                 ClusterObjectFieldDescriptor(Label="epochS", Tag=0x00000021, Type=uint),
                 ClusterObjectFieldDescriptor(Label="vendorId", Tag=0x00000022, Type=uint),
-                ClusterObjectFieldDescriptor(Label="listNullablesAndOptionalsStruct", Tag=0x00000023, Type=typing.List[TestCluster.Structs.NullablesAndOptionalsStruct]),
-                ClusterObjectFieldDescriptor(Label="enumAttr", Tag=0x00000024, Type=TestCluster.Enums.SimpleEnum),
-                ClusterObjectFieldDescriptor(Label="structAttr", Tag=0x00000025, Type=TestCluster.Structs.SimpleStruct),
+                ClusterObjectFieldDescriptor(Label="listNullablesAndOptionalsStruct", Tag=0x00000023, Type=typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]),
+                ClusterObjectFieldDescriptor(Label="enumAttr", Tag=0x00000024, Type=UnitTesting.Enums.SimpleEnum),
+                ClusterObjectFieldDescriptor(Label="structAttr", Tag=0x00000025, Type=UnitTesting.Structs.SimpleStruct),
                 ClusterObjectFieldDescriptor(Label="rangeRestrictedInt8u", Tag=0x00000026, Type=uint),
                 ClusterObjectFieldDescriptor(Label="rangeRestrictedInt8s", Tag=0x00000027, Type=int),
                 ClusterObjectFieldDescriptor(Label="rangeRestrictedInt16u", Tag=0x00000028, Type=uint),
                 ClusterObjectFieldDescriptor(Label="rangeRestrictedInt16s", Tag=0x00000029, Type=int),
                 ClusterObjectFieldDescriptor(Label="listLongOctetString", Tag=0x0000002A, Type=typing.List[bytes]),
-                ClusterObjectFieldDescriptor(Label="listFabricScoped", Tag=0x0000002B, Type=typing.List[TestCluster.Structs.TestFabricScoped]),
+                ClusterObjectFieldDescriptor(Label="listFabricScoped", Tag=0x0000002B, Type=typing.List[UnitTesting.Structs.TestFabricScoped]),
                 ClusterObjectFieldDescriptor(Label="timedWriteBoolean", Tag=0x00000030, Type=bool),
                 ClusterObjectFieldDescriptor(Label="generalErrorBoolean", Tag=0x00000031, Type=bool),
                 ClusterObjectFieldDescriptor(Label="clusterErrorBoolean", Tag=0x00000032, Type=bool),
@@ -26888,8 +26888,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 ClusterObjectFieldDescriptor(Label="nullableFloatDouble", Tag=0x00004018, Type=typing.Union[Nullable, float]),
                 ClusterObjectFieldDescriptor(Label="nullableOctetString", Tag=0x00004019, Type=typing.Union[Nullable, bytes]),
                 ClusterObjectFieldDescriptor(Label="nullableCharString", Tag=0x0000401E, Type=typing.Union[Nullable, str]),
-                ClusterObjectFieldDescriptor(Label="nullableEnumAttr", Tag=0x00004024, Type=typing.Union[Nullable, TestCluster.Enums.SimpleEnum]),
-                ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=0x00004025, Type=typing.Union[Nullable, TestCluster.Structs.SimpleStruct]),
+                ClusterObjectFieldDescriptor(Label="nullableEnumAttr", Tag=0x00004024, Type=typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]),
+                ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=0x00004025, Type=typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]),
                 ClusterObjectFieldDescriptor(Label="nullableRangeRestrictedInt8u", Tag=0x00004026, Type=typing.Union[Nullable, uint]),
                 ClusterObjectFieldDescriptor(Label="nullableRangeRestrictedInt8s", Tag=0x00004027, Type=typing.Union[Nullable, int]),
                 ClusterObjectFieldDescriptor(Label="nullableRangeRestrictedInt16u", Tag=0x00004028, Type=typing.Union[Nullable, uint]),
@@ -26930,22 +26930,22 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     octetString: 'bytes' = None
     listInt8u: 'typing.List[uint]' = None
     listOctetString: 'typing.List[bytes]' = None
-    listStructOctetString: 'typing.List[TestCluster.Structs.TestListStructOctet]' = None
+    listStructOctetString: 'typing.List[UnitTesting.Structs.TestListStructOctet]' = None
     longOctetString: 'bytes' = None
     charString: 'str' = None
     longCharString: 'str' = None
     epochUs: 'uint' = None
     epochS: 'uint' = None
     vendorId: 'uint' = None
-    listNullablesAndOptionalsStruct: 'typing.List[TestCluster.Structs.NullablesAndOptionalsStruct]' = None
-    enumAttr: 'TestCluster.Enums.SimpleEnum' = None
-    structAttr: 'TestCluster.Structs.SimpleStruct' = None
+    listNullablesAndOptionalsStruct: 'typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]' = None
+    enumAttr: 'UnitTesting.Enums.SimpleEnum' = None
+    structAttr: 'UnitTesting.Structs.SimpleStruct' = None
     rangeRestrictedInt8u: 'uint' = None
     rangeRestrictedInt8s: 'int' = None
     rangeRestrictedInt16u: 'uint' = None
     rangeRestrictedInt16s: 'int' = None
     listLongOctetString: 'typing.List[bytes]' = None
-    listFabricScoped: 'typing.List[TestCluster.Structs.TestFabricScoped]' = None
+    listFabricScoped: 'typing.List[UnitTesting.Structs.TestFabricScoped]' = None
     timedWriteBoolean: 'bool' = None
     generalErrorBoolean: 'bool' = None
     clusterErrorBoolean: 'bool' = None
@@ -26977,8 +26977,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     nullableFloatDouble: 'typing.Union[Nullable, float]' = None
     nullableOctetString: 'typing.Union[Nullable, bytes]' = None
     nullableCharString: 'typing.Union[Nullable, str]' = None
-    nullableEnumAttr: 'typing.Union[Nullable, TestCluster.Enums.SimpleEnum]' = None
-    nullableStruct: 'typing.Union[Nullable, TestCluster.Structs.SimpleStruct]' = None
+    nullableEnumAttr: 'typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]' = None
+    nullableStruct: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = None
     nullableRangeRestrictedInt8u: 'typing.Union[Nullable, uint]' = None
     nullableRangeRestrictedInt8s: 'typing.Union[Nullable, int]' = None
     nullableRangeRestrictedInt16u: 'typing.Union[Nullable, uint]' = None
@@ -27007,7 +27007,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="a", Tag=0, Type=uint),
                             ClusterObjectFieldDescriptor(Label="b", Tag=1, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=UnitTesting.Enums.SimpleEnum),
                             ClusterObjectFieldDescriptor(Label="d", Tag=3, Type=bytes),
                             ClusterObjectFieldDescriptor(Label="e", Tag=4, Type=str),
                             ClusterObjectFieldDescriptor(Label="f", Tag=5, Type=uint),
@@ -27017,7 +27017,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
 
             a: 'uint' = 0
             b: 'bool' = False
-            c: 'TestCluster.Enums.SimpleEnum' = 0
+            c: 'UnitTesting.Enums.SimpleEnum' = 0
             d: 'bytes' = b""
             e: 'str' = ""
             f: 'uint' = 0
@@ -27035,7 +27035,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                             ClusterObjectFieldDescriptor(Label="nullableFabricSensitiveInt8u", Tag=3, Type=typing.Union[Nullable, uint]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalFabricSensitiveInt8u", Tag=4, Type=typing.Union[None, Nullable, uint]),
                             ClusterObjectFieldDescriptor(Label="fabricSensitiveCharString", Tag=5, Type=str),
-                            ClusterObjectFieldDescriptor(Label="fabricSensitiveStruct", Tag=6, Type=TestCluster.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="fabricSensitiveStruct", Tag=6, Type=UnitTesting.Structs.SimpleStruct),
                             ClusterObjectFieldDescriptor(Label="fabricSensitiveInt8uList", Tag=7, Type=typing.List[uint]),
                             ClusterObjectFieldDescriptor(Label="fabricIndex", Tag=254, Type=uint),
                     ])
@@ -27045,7 +27045,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
             nullableFabricSensitiveInt8u: 'typing.Union[Nullable, uint]' = NullValue
             nullableOptionalFabricSensitiveInt8u: 'typing.Union[None, Nullable, uint]' = None
             fabricSensitiveCharString: 'str' = ""
-            fabricSensitiveStruct: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            fabricSensitiveStruct: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
             fabricSensitiveInt8uList: 'typing.List[uint]' = field(default_factory=lambda: [])
             fabricIndex: 'uint' = 0
 
@@ -27061,12 +27061,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                             ClusterObjectFieldDescriptor(Label="nullableString", Tag=3, Type=typing.Union[Nullable, str]),
                             ClusterObjectFieldDescriptor(Label="optionalString", Tag=4, Type=typing.Optional[str]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalString", Tag=5, Type=typing.Union[None, Nullable, str]),
-                            ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=6, Type=typing.Union[Nullable, TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="optionalStruct", Tag=7, Type=typing.Optional[TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalStruct", Tag=8, Type=typing.Union[None, Nullable, TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="nullableList", Tag=9, Type=typing.Union[Nullable, typing.List[TestCluster.Enums.SimpleEnum]]),
-                            ClusterObjectFieldDescriptor(Label="optionalList", Tag=10, Type=typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalList", Tag=11, Type=typing.Union[None, Nullable, typing.List[TestCluster.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=6, Type=typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="optionalStruct", Tag=7, Type=typing.Optional[UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalStruct", Tag=8, Type=typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableList", Tag=9, Type=typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="optionalList", Tag=10, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalList", Tag=11, Type=typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]),
                     ])
 
             nullableInt: 'typing.Union[Nullable, uint]' = NullValue
@@ -27075,12 +27075,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
             nullableString: 'typing.Union[Nullable, str]' = NullValue
             optionalString: 'typing.Optional[str]' = None
             nullableOptionalString: 'typing.Union[None, Nullable, str]' = None
-            nullableStruct: 'typing.Union[Nullable, TestCluster.Structs.SimpleStruct]' = NullValue
-            optionalStruct: 'typing.Optional[TestCluster.Structs.SimpleStruct]' = None
-            nullableOptionalStruct: 'typing.Union[None, Nullable, TestCluster.Structs.SimpleStruct]' = None
-            nullableList: 'typing.Union[Nullable, typing.List[TestCluster.Enums.SimpleEnum]]' = NullValue
-            optionalList: 'typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]' = None
-            nullableOptionalList: 'typing.Union[None, Nullable, typing.List[TestCluster.Enums.SimpleEnum]]' = None
+            nullableStruct: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = NullValue
+            optionalStruct: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None
+            nullableOptionalStruct: 'typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct]' = None
+            nullableList: 'typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = NullValue
+            optionalList: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None
+            nullableOptionalList: 'typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = None
 
         @dataclass
         class NestedStruct(ClusterObject):
@@ -27090,12 +27090,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="a", Tag=0, Type=uint),
                             ClusterObjectFieldDescriptor(Label="b", Tag=1, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=TestCluster.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=UnitTesting.Structs.SimpleStruct),
                     ])
 
             a: 'uint' = 0
             b: 'bool' = False
-            c: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            c: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
 
         @dataclass
         class NestedStructList(ClusterObject):
@@ -27105,8 +27105,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="a", Tag=0, Type=uint),
                             ClusterObjectFieldDescriptor(Label="b", Tag=1, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=TestCluster.Structs.SimpleStruct),
-                            ClusterObjectFieldDescriptor(Label="d", Tag=3, Type=typing.List[TestCluster.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="c", Tag=2, Type=UnitTesting.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="d", Tag=3, Type=typing.List[UnitTesting.Structs.SimpleStruct]),
                             ClusterObjectFieldDescriptor(Label="e", Tag=4, Type=typing.List[uint]),
                             ClusterObjectFieldDescriptor(Label="f", Tag=5, Type=typing.List[bytes]),
                             ClusterObjectFieldDescriptor(Label="g", Tag=6, Type=typing.List[uint]),
@@ -27114,8 +27114,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
 
             a: 'uint' = 0
             b: 'bool' = False
-            c: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
-            d: 'typing.List[TestCluster.Structs.SimpleStruct]' = field(default_factory=lambda: [])
+            c: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
+            d: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: [])
             e: 'typing.List[uint]' = field(default_factory=lambda: [])
             f: 'typing.List[bytes]' = field(default_factory=lambda: [])
             g: 'typing.List[uint]' = field(default_factory=lambda: [])
@@ -27126,10 +27126,10 @@ class DoubleNestedStructList(ClusterObject):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="a", Tag=0, Type=typing.List[TestCluster.Structs.NestedStructList]),
+                            ClusterObjectFieldDescriptor(Label="a", Tag=0, Type=typing.List[UnitTesting.Structs.NestedStructList]),
                     ])
 
-            a: 'typing.List[TestCluster.Structs.NestedStructList]' = field(default_factory=lambda: [])
+            a: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: [])
 
         @dataclass
         class TestListStructOctet(ClusterObject):
@@ -27262,19 +27262,19 @@ class TestStructArrayArgumentResponse(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[TestCluster.Structs.NestedStructList]),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=typing.List[TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=typing.List[TestCluster.Enums.SimpleEnum]),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.NestedStructList]),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=typing.List[UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=typing.List[UnitTesting.Enums.SimpleEnum]),
                             ClusterObjectFieldDescriptor(Label="arg4", Tag=3, Type=typing.List[bool]),
-                            ClusterObjectFieldDescriptor(Label="arg5", Tag=4, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg5", Tag=4, Type=UnitTesting.Enums.SimpleEnum),
                             ClusterObjectFieldDescriptor(Label="arg6", Tag=5, Type=bool),
                     ])
 
-            arg1: 'typing.List[TestCluster.Structs.NestedStructList]' = field(default_factory=lambda: [])
-            arg2: 'typing.List[TestCluster.Structs.SimpleStruct]' = field(default_factory=lambda: [])
-            arg3: 'typing.List[TestCluster.Enums.SimpleEnum]' = field(default_factory=lambda: [])
+            arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: [])
+            arg2: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: [])
+            arg3: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: [])
             arg4: 'typing.List[bool]' = field(default_factory=lambda: [])
-            arg5: 'TestCluster.Enums.SimpleEnum' = 0
+            arg5: 'UnitTesting.Enums.SimpleEnum' = 0
             arg6: 'bool' = False
 
         @dataclass
@@ -27339,11 +27339,11 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=uint),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=UnitTesting.Enums.SimpleEnum),
                     ])
 
             arg1: 'uint' = 0
-            arg2: 'TestCluster.Enums.SimpleEnum' = 0
+            arg2: 'UnitTesting.Enums.SimpleEnum' = 0
 
         @dataclass
         class TestStructArrayArgumentRequest(ClusterCommand):
@@ -27356,19 +27356,19 @@ class TestStructArrayArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[TestCluster.Structs.NestedStructList]),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=typing.List[TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=typing.List[TestCluster.Enums.SimpleEnum]),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.NestedStructList]),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=typing.List[UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=typing.List[UnitTesting.Enums.SimpleEnum]),
                             ClusterObjectFieldDescriptor(Label="arg4", Tag=3, Type=typing.List[bool]),
-                            ClusterObjectFieldDescriptor(Label="arg5", Tag=4, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg5", Tag=4, Type=UnitTesting.Enums.SimpleEnum),
                             ClusterObjectFieldDescriptor(Label="arg6", Tag=5, Type=bool),
                     ])
 
-            arg1: 'typing.List[TestCluster.Structs.NestedStructList]' = field(default_factory=lambda: [])
-            arg2: 'typing.List[TestCluster.Structs.SimpleStruct]' = field(default_factory=lambda: [])
-            arg3: 'typing.List[TestCluster.Enums.SimpleEnum]' = field(default_factory=lambda: [])
+            arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: [])
+            arg2: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: [])
+            arg3: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: [])
             arg4: 'typing.List[bool]' = field(default_factory=lambda: [])
-            arg5: 'TestCluster.Enums.SimpleEnum' = 0
+            arg5: 'UnitTesting.Enums.SimpleEnum' = 0
             arg6: 'bool' = False
 
         @dataclass
@@ -27404,10 +27404,10 @@ class TestStructArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=TestCluster.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct),
                     ])
 
-            arg1: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
 
         @dataclass
         class TestComplexNullableOptionalResponse(ClusterCommand):
@@ -27435,19 +27435,19 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                             ClusterObjectFieldDescriptor(Label="nullableOptionalStringWasNull", Tag=12, Type=typing.Optional[bool]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalStringValue", Tag=13, Type=typing.Optional[str]),
                             ClusterObjectFieldDescriptor(Label="nullableStructWasNull", Tag=14, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="nullableStructValue", Tag=15, Type=typing.Optional[TestCluster.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableStructValue", Tag=15, Type=typing.Optional[UnitTesting.Structs.SimpleStruct]),
                             ClusterObjectFieldDescriptor(Label="optionalStructWasPresent", Tag=16, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="optionalStructValue", Tag=17, Type=typing.Optional[TestCluster.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="optionalStructValue", Tag=17, Type=typing.Optional[UnitTesting.Structs.SimpleStruct]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalStructWasPresent", Tag=18, Type=bool),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalStructWasNull", Tag=19, Type=typing.Optional[bool]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalStructValue", Tag=20, Type=typing.Optional[TestCluster.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalStructValue", Tag=20, Type=typing.Optional[UnitTesting.Structs.SimpleStruct]),
                             ClusterObjectFieldDescriptor(Label="nullableListWasNull", Tag=21, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="nullableListValue", Tag=22, Type=typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableListValue", Tag=22, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]),
                             ClusterObjectFieldDescriptor(Label="optionalListWasPresent", Tag=23, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="optionalListValue", Tag=24, Type=typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="optionalListValue", Tag=24, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalListWasPresent", Tag=25, Type=bool),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalListWasNull", Tag=26, Type=typing.Optional[bool]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalListValue", Tag=27, Type=typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalListValue", Tag=27, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]),
                     ])
 
             nullableIntWasNull: 'bool' = False
@@ -27465,19 +27465,19 @@ def descriptor(cls) -> ClusterObjectDescriptor:
             nullableOptionalStringWasNull: 'typing.Optional[bool]' = None
             nullableOptionalStringValue: 'typing.Optional[str]' = None
             nullableStructWasNull: 'bool' = False
-            nullableStructValue: 'typing.Optional[TestCluster.Structs.SimpleStruct]' = None
+            nullableStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None
             optionalStructWasPresent: 'bool' = False
-            optionalStructValue: 'typing.Optional[TestCluster.Structs.SimpleStruct]' = None
+            optionalStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None
             nullableOptionalStructWasPresent: 'bool' = False
             nullableOptionalStructWasNull: 'typing.Optional[bool]' = None
-            nullableOptionalStructValue: 'typing.Optional[TestCluster.Structs.SimpleStruct]' = None
+            nullableOptionalStructValue: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None
             nullableListWasNull: 'bool' = False
-            nullableListValue: 'typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]' = None
+            nullableListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None
             optionalListWasPresent: 'bool' = False
-            optionalListValue: 'typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]' = None
+            optionalListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None
             nullableOptionalListWasPresent: 'bool' = False
             nullableOptionalListWasNull: 'typing.Optional[bool]' = None
-            nullableOptionalListValue: 'typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]' = None
+            nullableOptionalListValue: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None
 
         @dataclass
         class TestNestedStructArgumentRequest(ClusterCommand):
@@ -27490,10 +27490,10 @@ class TestNestedStructArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=TestCluster.Structs.NestedStruct),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.NestedStruct),
                     ])
 
-            arg1: 'TestCluster.Structs.NestedStruct' = field(default_factory=lambda: TestCluster.Structs.NestedStruct())
+            arg1: 'UnitTesting.Structs.NestedStruct' = field(default_factory=lambda: UnitTesting.Structs.NestedStruct())
 
         @dataclass
         class BooleanResponse(ClusterCommand):
@@ -27522,10 +27522,10 @@ class TestListStructArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[TestCluster.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.SimpleStruct]),
                     ])
 
-            arg1: 'typing.List[TestCluster.Structs.SimpleStruct]' = field(default_factory=lambda: [])
+            arg1: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: [])
 
         @dataclass
         class SimpleStructResponse(ClusterCommand):
@@ -27538,10 +27538,10 @@ class SimpleStructResponse(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=TestCluster.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct),
                     ])
 
-            arg1: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
 
         @dataclass
         class TestListInt8UArgumentRequest(ClusterCommand):
@@ -27586,10 +27586,10 @@ class TestNestedStructListArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=TestCluster.Structs.NestedStructList),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.NestedStructList),
                     ])
 
-            arg1: 'TestCluster.Structs.NestedStructList' = field(default_factory=lambda: TestCluster.Structs.NestedStructList())
+            arg1: 'UnitTesting.Structs.NestedStructList' = field(default_factory=lambda: UnitTesting.Structs.NestedStructList())
 
         @dataclass
         class TestEmitTestFabricScopedEventResponse(ClusterCommand):
@@ -27618,10 +27618,10 @@ class TestListNestedStructListArgumentRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[TestCluster.Structs.NestedStructList]),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=typing.List[UnitTesting.Structs.NestedStructList]),
                     ])
 
-            arg1: 'typing.List[TestCluster.Structs.NestedStructList]' = field(default_factory=lambda: [])
+            arg1: 'typing.List[UnitTesting.Structs.NestedStructList]' = field(default_factory=lambda: [])
 
         @dataclass
         class TestListInt8UReverseRequest(ClusterCommand):
@@ -27651,11 +27651,11 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=uint),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=UnitTesting.Enums.SimpleEnum),
                     ])
 
             arg1: 'uint' = 0
-            arg2: 'TestCluster.Enums.SimpleEnum' = 0
+            arg2: 'UnitTesting.Enums.SimpleEnum' = 0
 
         @dataclass
         class TestNullableOptionalRequest(ClusterCommand):
@@ -27690,12 +27690,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                             ClusterObjectFieldDescriptor(Label="nullableString", Tag=3, Type=typing.Union[Nullable, str]),
                             ClusterObjectFieldDescriptor(Label="optionalString", Tag=4, Type=typing.Optional[str]),
                             ClusterObjectFieldDescriptor(Label="nullableOptionalString", Tag=5, Type=typing.Union[None, Nullable, str]),
-                            ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=6, Type=typing.Union[Nullable, TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="optionalStruct", Tag=7, Type=typing.Optional[TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalStruct", Tag=8, Type=typing.Union[None, Nullable, TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="nullableList", Tag=9, Type=typing.Union[Nullable, typing.List[TestCluster.Enums.SimpleEnum]]),
-                            ClusterObjectFieldDescriptor(Label="optionalList", Tag=10, Type=typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]),
-                            ClusterObjectFieldDescriptor(Label="nullableOptionalList", Tag=11, Type=typing.Union[None, Nullable, typing.List[TestCluster.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableStruct", Tag=6, Type=typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="optionalStruct", Tag=7, Type=typing.Optional[UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalStruct", Tag=8, Type=typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="nullableList", Tag=9, Type=typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="optionalList", Tag=10, Type=typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]),
+                            ClusterObjectFieldDescriptor(Label="nullableOptionalList", Tag=11, Type=typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]),
                     ])
 
             nullableInt: 'typing.Union[Nullable, uint]' = NullValue
@@ -27704,12 +27704,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
             nullableString: 'typing.Union[Nullable, str]' = NullValue
             optionalString: 'typing.Optional[str]' = None
             nullableOptionalString: 'typing.Union[None, Nullable, str]' = None
-            nullableStruct: 'typing.Union[Nullable, TestCluster.Structs.SimpleStruct]' = NullValue
-            optionalStruct: 'typing.Optional[TestCluster.Structs.SimpleStruct]' = None
-            nullableOptionalStruct: 'typing.Union[None, Nullable, TestCluster.Structs.SimpleStruct]' = None
-            nullableList: 'typing.Union[Nullable, typing.List[TestCluster.Enums.SimpleEnum]]' = NullValue
-            optionalList: 'typing.Optional[typing.List[TestCluster.Enums.SimpleEnum]]' = None
-            nullableOptionalList: 'typing.Union[None, Nullable, typing.List[TestCluster.Enums.SimpleEnum]]' = None
+            nullableStruct: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = NullValue
+            optionalStruct: 'typing.Optional[UnitTesting.Structs.SimpleStruct]' = None
+            nullableOptionalStruct: 'typing.Union[None, Nullable, UnitTesting.Structs.SimpleStruct]' = None
+            nullableList: 'typing.Union[Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = NullValue
+            optionalList: 'typing.Optional[typing.List[UnitTesting.Enums.SimpleEnum]]' = None
+            nullableOptionalList: 'typing.Union[None, Nullable, typing.List[UnitTesting.Enums.SimpleEnum]]' = None
 
         @dataclass
         class SimpleStructEchoRequest(ClusterCommand):
@@ -27722,10 +27722,10 @@ class SimpleStructEchoRequest(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
-                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=TestCluster.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=UnitTesting.Structs.SimpleStruct),
                     ])
 
-            arg1: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            arg1: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
 
         @dataclass
         class TimedInvokeRequest(ClusterCommand):
@@ -27773,12 +27773,12 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="arg1", Tag=0, Type=uint),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=1, Type=UnitTesting.Enums.SimpleEnum),
                             ClusterObjectFieldDescriptor(Label="arg3", Tag=2, Type=bool),
                     ])
 
             arg1: 'uint' = 0
-            arg2: 'TestCluster.Enums.SimpleEnum' = 0
+            arg2: 'UnitTesting.Enums.SimpleEnum' = 0
             arg3: 'bool' = False
 
         @dataclass
@@ -28259,9 +28259,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.List[TestCluster.Structs.TestListStructOctet])
+                return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.TestListStructOctet])
 
-            value: 'typing.List[TestCluster.Structs.TestListStructOctet]' = field(default_factory=lambda: [])
+            value: 'typing.List[UnitTesting.Structs.TestListStructOctet]' = field(default_factory=lambda: [])
 
         @dataclass
         class LongOctetString(ClusterAttributeDescriptor):
@@ -28371,9 +28371,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.List[TestCluster.Structs.NullablesAndOptionalsStruct])
+                return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct])
 
-            value: 'typing.List[TestCluster.Structs.NullablesAndOptionalsStruct]' = field(default_factory=lambda: [])
+            value: 'typing.List[UnitTesting.Structs.NullablesAndOptionalsStruct]' = field(default_factory=lambda: [])
 
         @dataclass
         class EnumAttr(ClusterAttributeDescriptor):
@@ -28387,9 +28387,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=TestCluster.Enums.SimpleEnum)
+                return ClusterObjectFieldDescriptor(Type=UnitTesting.Enums.SimpleEnum)
 
-            value: 'TestCluster.Enums.SimpleEnum' = 0
+            value: 'UnitTesting.Enums.SimpleEnum' = 0
 
         @dataclass
         class StructAttr(ClusterAttributeDescriptor):
@@ -28403,9 +28403,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=TestCluster.Structs.SimpleStruct)
+                return ClusterObjectFieldDescriptor(Type=UnitTesting.Structs.SimpleStruct)
 
-            value: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
+            value: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
 
         @dataclass
         class RangeRestrictedInt8u(ClusterAttributeDescriptor):
@@ -28499,9 +28499,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.List[TestCluster.Structs.TestFabricScoped])
+                return ClusterObjectFieldDescriptor(Type=typing.List[UnitTesting.Structs.TestFabricScoped])
 
-            value: 'typing.List[TestCluster.Structs.TestFabricScoped]' = field(default_factory=lambda: [])
+            value: 'typing.List[UnitTesting.Structs.TestFabricScoped]' = field(default_factory=lambda: [])
 
         @dataclass
         class TimedWriteBoolean(ClusterAttributeDescriptor):
@@ -29015,9 +29015,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, TestCluster.Enums.SimpleEnum])
+                return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, UnitTesting.Enums.SimpleEnum])
 
-            value: 'typing.Union[Nullable, TestCluster.Enums.SimpleEnum]' = NullValue
+            value: 'typing.Union[Nullable, UnitTesting.Enums.SimpleEnum]' = NullValue
 
         @dataclass
         class NullableStruct(ClusterAttributeDescriptor):
@@ -29031,9 +29031,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, TestCluster.Structs.SimpleStruct])
+                return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, UnitTesting.Structs.SimpleStruct])
 
-            value: 'typing.Union[Nullable, TestCluster.Structs.SimpleStruct]' = NullValue
+            value: 'typing.Union[Nullable, UnitTesting.Structs.SimpleStruct]' = NullValue
 
         @dataclass
         class NullableRangeRestrictedInt8u(ClusterAttributeDescriptor):
@@ -29212,19 +29212,19 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields = [
                             ClusterObjectFieldDescriptor(Label="arg1", Tag=1, Type=uint),
-                            ClusterObjectFieldDescriptor(Label="arg2", Tag=2, Type=TestCluster.Enums.SimpleEnum),
+                            ClusterObjectFieldDescriptor(Label="arg2", Tag=2, Type=UnitTesting.Enums.SimpleEnum),
                             ClusterObjectFieldDescriptor(Label="arg3", Tag=3, Type=bool),
-                            ClusterObjectFieldDescriptor(Label="arg4", Tag=4, Type=TestCluster.Structs.SimpleStruct),
-                            ClusterObjectFieldDescriptor(Label="arg5", Tag=5, Type=typing.List[TestCluster.Structs.SimpleStruct]),
-                            ClusterObjectFieldDescriptor(Label="arg6", Tag=6, Type=typing.List[TestCluster.Enums.SimpleEnum]),
+                            ClusterObjectFieldDescriptor(Label="arg4", Tag=4, Type=UnitTesting.Structs.SimpleStruct),
+                            ClusterObjectFieldDescriptor(Label="arg5", Tag=5, Type=typing.List[UnitTesting.Structs.SimpleStruct]),
+                            ClusterObjectFieldDescriptor(Label="arg6", Tag=6, Type=typing.List[UnitTesting.Enums.SimpleEnum]),
                     ])
 
             arg1: 'uint' = 0
-            arg2: 'TestCluster.Enums.SimpleEnum' = 0
+            arg2: 'UnitTesting.Enums.SimpleEnum' = 0
             arg3: 'bool' = False
-            arg4: 'TestCluster.Structs.SimpleStruct' = field(default_factory=lambda: TestCluster.Structs.SimpleStruct())
-            arg5: 'typing.List[TestCluster.Structs.SimpleStruct]' = field(default_factory=lambda: [])
-            arg6: 'typing.List[TestCluster.Enums.SimpleEnum]' = field(default_factory=lambda: [])
+            arg4: 'UnitTesting.Structs.SimpleStruct' = field(default_factory=lambda: UnitTesting.Structs.SimpleStruct())
+            arg5: 'typing.List[UnitTesting.Structs.SimpleStruct]' = field(default_factory=lambda: [])
+            arg6: 'typing.List[UnitTesting.Enums.SimpleEnum]' = field(default_factory=lambda: [])
 
         @dataclass
         class TestFabricScopedEvent(ClusterEvent):
diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py
index ca4c30a4a5a93b..9d6e1e53bee1bb 100644
--- a/src/controller/python/test/test_scripts/base.py
+++ b/src/controller/python/test/test_scripts/base.py
@@ -573,12 +573,12 @@ async def TestCaseEviction(self, nodeid: int):
         def OnValueChange(path: Attribute.TypedAttributePath, transaction: Attribute.SubscriptionTransaction) -> None:
             nonlocal sawValueChange
             self.logger.info("Saw value change!")
-            if (path.AttributeType == Clusters.TestCluster.Attributes.Int8u and path.Path.EndpointId == 1):
+            if (path.AttributeType == Clusters.UnitTesting.Attributes.Int8u and path.Path.EndpointId == 1):
                 sawValueChange = True
 
         self.logger.info("Testing CASE defunct logic")
 
-        sub = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.TestCluster.Attributes.Int8u)], reportInterval=(0, 1))
+        sub = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.UnitTesting.Attributes.Int8u)], reportInterval=(0, 1))
         sub.SetAttributeUpdateCallback(OnValueChange)
 
         #
@@ -590,7 +590,7 @@ def OnValueChange(path: Attribute.TypedAttributePath, transaction: Attribute.Sub
         # Now write the attribute from fabric2, give it some time before checking if the report
         # was received.
         #
-        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.Int8u(4))])
+        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.Int8u(4))])
         time.sleep(2)
 
         sub.Shutdown()
@@ -610,7 +610,7 @@ def OnValueChange(path: Attribute.TypedAttributePath, transaction: Attribute.Sub
         self.logger.info("Testing fabric-isolated CASE eviction")
 
         sawValueChange = False
-        sub = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.TestCluster.Attributes.Int8u)], reportInterval=(0, 1))
+        sub = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.UnitTesting.Attributes.Int8u)], reportInterval=(0, 1))
         sub.SetAttributeUpdateCallback(OnValueChange)
 
         for x in range(minimumSupportedFabrics * minimumCASESessionsPerFabric * 2):
@@ -621,7 +621,7 @@ def OnValueChange(path: Attribute.TypedAttributePath, transaction: Attribute.Sub
         # Now write the attribute from fabric2, give it some time before checking if the report
         # was received.
         #
-        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.Int8u(4))])
+        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.Int8u(4))])
         time.sleep(2)
 
         sub.Shutdown()
@@ -636,14 +636,14 @@ def OnValueChange(path: Attribute.TypedAttributePath, transaction: Attribute.Sub
         self.logger.info("Testing fabric-isolated CASE eviction (reverse)")
 
         sawValueChange = False
-        sub = await self.devCtrl2.ReadAttribute(nodeid, [(Clusters.TestCluster.Attributes.Int8u)], reportInterval=(0, 1))
+        sub = await self.devCtrl2.ReadAttribute(nodeid, [(Clusters.UnitTesting.Attributes.Int8u)], reportInterval=(0, 1))
         sub.SetAttributeUpdateCallback(OnValueChange)
 
         for x in range(minimumSupportedFabrics * minimumCASESessionsPerFabric * 2):
             self.devCtrl.CloseSession(nodeid)
             await self.devCtrl.ReadAttribute(nodeid, [(Clusters.Basic.Attributes.ClusterRevision)])
 
-        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.Int8u(4))])
+        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.Int8u(4))])
         time.sleep(2)
 
         sub.Shutdown()
@@ -723,8 +723,8 @@ async def TestMultiFabric(self, ip: str, setuppin: int, nodeid: int):
 
     async def TestFabricSensitive(self, nodeid: int):
         expectedDataFabric1 = [
-            Clusters.TestCluster.Structs.TestFabricScoped(),
-            Clusters.TestCluster.Structs.TestFabricScoped()
+            Clusters.UnitTesting.Structs.TestFabricScoped(),
+            Clusters.UnitTesting.Structs.TestFabricScoped()
         ]
 
         expectedDataFabric1[0].fabricIndex = 100
@@ -747,7 +747,7 @@ async def TestFabricSensitive(self, nodeid: int):
 
         self.logger.info("Writing data from fabric1...")
 
-        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped(expectedDataFabric1))])
+        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped(expectedDataFabric1))])
 
         expectedDataFabric2 = copy.deepcopy(expectedDataFabric1)
 
@@ -768,15 +768,15 @@ async def TestFabricSensitive(self, nodeid: int):
 
         self.logger.info("Writing data from fabric2...")
 
-        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped(expectedDataFabric2))])
+        await self.devCtrl2.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped(expectedDataFabric2))])
 
         #
         # Now read the data back filtered from fabric1 and ensure it matches.
         #
         self.logger.info("Reading back data from fabric1...")
 
-        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)])
-        readListDataFabric1 = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)])
+        readListDataFabric1 = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
 
         #
         # Update the expected data's fabric index to that we just read back
@@ -791,8 +791,8 @@ async def TestFabricSensitive(self, nodeid: int):
 
         self.logger.info("Reading back data from fabric2...")
 
-        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)])
-        readListDataFabric2 = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)])
+        readListDataFabric2 = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
 
         #
         # Update the expected data's fabric index to that we just read back
@@ -832,19 +832,19 @@ def CompareUnfilteredData(accessingFabric, otherFabric, expectedData):
                     # which should automatically be initialized with defaults and compare that
                     # against what we got back.
                     #
-                    expectedDefaultData = Clusters.TestCluster.Structs.TestFabricScoped()
+                    expectedDefaultData = Clusters.UnitTesting.Structs.TestFabricScoped()
                     expectedDefaultData.fabricIndex = otherFabric
 
                     if (item != expectedDefaultData):
                         raise AssertionError("Got back mismatched data")
 
-        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)], fabricFiltered=False)
-        readListDataFabric = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)], fabricFiltered=False)
+        readListDataFabric = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
         CompareUnfilteredData(self.currentFabric1,
                               self.currentFabric2, expectedDataFabric1)
 
-        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)], fabricFiltered=False)
-        readListDataFabric = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)], fabricFiltered=False)
+        readListDataFabric = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
         CompareUnfilteredData(self.currentFabric2,
                               self.currentFabric1, expectedDataFabric2)
 
@@ -861,21 +861,21 @@ def CompareUnfilteredData(accessingFabric, otherFabric, expectedData):
 
         expectedDataFabric1.pop(1)
 
-        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped(expectedDataFabric1))])
+        await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped(expectedDataFabric1))])
 
         self.logger.info(
             "Reading back data (again) from fabric2 to ensure it hasn't changed")
 
-        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)])
-        readListDataFabric2 = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl2.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)])
+        readListDataFabric2 = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
         if (expectedDataFabric2 != readListDataFabric2):
             raise AssertionError("Got back mismatched data")
 
         self.logger.info(
             "Reading back data (again) from fabric1 to ensure it hasn't changed")
 
-        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.TestCluster.Attributes.ListFabricScoped)])
-        readListDataFabric1 = data[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]
+        data = await self.devCtrl.ReadAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.ListFabricScoped)])
+        readListDataFabric1 = data[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]
 
         self.logger.info("Comparing data on fabric1...")
         expectedDataFabric1[0].fabricIndex = self.currentFabric1
@@ -1050,7 +1050,7 @@ def TestReadBasicAttributes(self, nodeid: int, endpoint: int, group: int):
         return True
 
     def TestWriteBasicAttributes(self, nodeid: int, endpoint: int, group: int):
-        @dataclass
+        @ dataclass
         class AttributeWriteRequest:
             cluster: str
             attribute: str
@@ -1173,9 +1173,9 @@ def TestNonControllerAPIs(self):
         try:
             cluster = self.devCtrl.GetClusterHandler()
             clusterInfo = cluster.GetClusterInfoById(0xFFF1FC05)  # TestCluster
-            if clusterInfo["clusterName"] != "TestCluster":
+            if clusterInfo["clusterName"] != "UnitTesting":
                 raise Exception(
-                    f"Wrong cluster info clusterName: {clusterInfo['clusterName']} expected TestCluster")
+                    f"Wrong cluster info clusterName: {clusterInfo['clusterName']} expected 'UnitTesting'")
         except Exception as ex:
             self.logger.exception(f"Failed to finish API test: {ex}")
             return False
diff --git a/src/controller/python/test/test_scripts/cluster_objects.py b/src/controller/python/test/test_scripts/cluster_objects.py
index 2145893ddf2aea..162dae0602ebca 100644
--- a/src/controller/python/test/test_scripts/cluster_objects.py
+++ b/src/controller/python/test/test_scripts/cluster_objects.py
@@ -35,10 +35,10 @@
 
 # Ignore failures decoding these attributes (e.g. not yet implemented)
 ignoreAttributeDecodeFailureList = [
-    (1, Clusters.Objects.TestCluster,
-     Clusters.Objects.TestCluster.Attributes.GeneralErrorBoolean),
-    (1, Clusters.Objects.TestCluster,
-     Clusters.Objects.TestCluster.Attributes.ClusterErrorBoolean),
+    (1, Clusters.Objects.UnitTesting,
+     Clusters.Objects.UnitTesting.Attributes.GeneralErrorBoolean),
+    (1, Clusters.Objects.UnitTesting,
+     Clusters.Objects.UnitTesting.Attributes.ClusterErrorBoolean),
 ]
 
 
@@ -113,9 +113,9 @@ async def TestCommandRoundTripWithBadEndpoint(cls, devCtrl):
     @classmethod
     @base.test_case
     async def TestCommandWithResponse(cls, devCtrl):
-        req = Clusters.TestCluster.Commands.TestAddArguments(arg1=2, arg2=3)
+        req = Clusters.UnitTesting.Commands.TestAddArguments(arg1=2, arg2=3)
         res = await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=LIGHTING_ENDPOINT_ID, payload=req)
-        if not isinstance(res, Clusters.TestCluster.Commands.TestAddArgumentsResponse):
+        if not isinstance(res, Clusters.UnitTesting.Commands.TestAddArgumentsResponse):
             logger.error(f"Unexpected response of type {type(res)} received.")
             raise ValueError()
         logger.info(f"Received response: {res}")
@@ -126,12 +126,12 @@ async def TestCommandWithResponse(cls, devCtrl):
     @base.test_case
     async def TestReadWriteOnlyAttribute(cls, devCtrl):
         logger.info("Test wildcard read of attributes containing write-only attribute")
-        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(Clusters.TestCluster)])
-        if Clusters.TestCluster.Attributes.WriteOnlyInt8u in res[1][Clusters.TestCluster]:
+        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(Clusters.UnitTesting)])
+        if Clusters.UnitTesting.Attributes.WriteOnlyInt8u in res[1][Clusters.UnitTesting]:
             raise AssertionError("Received un-expected WriteOnlyInt8u attribute in TestCluster")
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestWriteRequest(cls, devCtrl):
         logger.info("1: Trivial writes (multiple attributes)")
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
@@ -158,10 +158,10 @@ async def TestWriteRequest(cls, devCtrl):
 
         logger.info("2: Write chunked list")
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
-                                           attributes=[(1, Clusters.TestCluster.Attributes.ListLongOctetString([b"0123456789abcdef" * 32] * 5))])
+                                           attributes=[(1, Clusters.UnitTesting.Attributes.ListLongOctetString([b"0123456789abcdef" * 32] * 5))])
         expectedRes = [
             AttributeStatus(Path=AttributePath(
-                EndpointId=1, Attribute=Clusters.TestCluster.Attributes.ListLongOctetString), Status=chip.interaction_model.Status.Success),
+                EndpointId=1, Attribute=Clusters.UnitTesting.Attributes.ListLongOctetString), Status=chip.interaction_model.Status.Success),
         ]
 
         logger.info(f"Received WriteResponse: {res}")
@@ -169,8 +169,8 @@ async def TestWriteRequest(cls, devCtrl):
             logger.error(f"Expect {expectedRes} got {res}")
             raise AssertionError("Write returned unexpected result.")
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestSubscribeAttribute(cls, devCtrl):
         logger.info("Test Subscription")
         sub = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.OnOff.Attributes.OnOff)], reportInterval=(3, 10))
@@ -195,8 +195,8 @@ def subUpdate(path: TypedAttributePath, transaction: SubscriptionTransaction):
 
         sub.Shutdown()
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestSubscribeZeroMinInterval(cls, devCtrl):
         '''
         This validates receiving subscription reports for two attributes at a time in quick succession after issuing a command that results in attribute side-effects.
@@ -230,8 +230,8 @@ async def TestSubscribeZeroMinInterval(cls, devCtrl):
 
         sub.Shutdown()
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestReadAttributeRequests(cls, devCtrl):
         '''
         Tests out various permutations of endpoint, cluster and attribute ID (with wildcards) to validate
@@ -290,12 +290,12 @@ async def TestReadAttributeRequests(cls, devCtrl):
         # TestCluster will be ValueDecodeError here, so we comment out the log below.
         # Values are not expected to be ValueDecodeError for real clusters.
         # logger.info(
-        #    f"Test Cluster - Struct: {res[1][Clusters.TestCluster].structAttr}")
-        logger.info(f"Test Cluster: {res[1][Clusters.TestCluster]}")
+        #    f"Test Cluster - Struct: {res[1][Clusters.UnitTesting].structAttr}")
+        logger.info(f"Test Cluster: {res[1][Clusters.UnitTesting]}")
 
         logger.info("7: Reading Chunked List")
-        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.TestCluster.Attributes.ListLongOctetString)])
-        if res[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListLongOctetString] != [b'0123456789abcdef' * 32] * 4:
+        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.UnitTesting.Attributes.ListLongOctetString)])
+        if res[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListLongOctetString] != [b'0123456789abcdef' * 32] * 4:
             raise AssertionError("Unexpected read result")
 
         logger.info("*: Getting current fabric index")
@@ -304,25 +304,25 @@ async def TestReadAttributeRequests(cls, devCtrl):
 
         # Note: ListFabricScoped is an empty list for now. We should re-enable this test after we make it return expected data.
         # logger.info("8: Read without fabric filter")
-        # res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.TestCluster.Attributes.ListFabricScoped)], fabricFiltered=False)
-        # if len(res[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]) == 1:
+        # res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.UnitTesting.Attributes.ListFabricScoped)], fabricFiltered=False)
+        # if len(res[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]) == 1:
         #     raise AssertionError("Expect more elements in the response")
         # logger.info("9: Read with fabric filter")
-        # res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.TestCluster.Attributes.ListFabricScoped)], fabricFiltered=True)
-        # if len(res[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped]) != 1:
+        # res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=[(1, Clusters.UnitTesting.Attributes.ListFabricScoped)], fabricFiltered=True)
+        # if len(res[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped]) != 1:
         #     raise AssertionError("Expect exact one element in the response")
-        # if res[1][Clusters.TestCluster][Clusters.TestCluster.Attributes.ListFabricScoped][0].fabricIndex != fabricIndex:
+        # if res[1][Clusters.UnitTesting][Clusters.UnitTesting.Attributes.ListFabricScoped][0].fabricIndex != fabricIndex:
         #     raise AssertionError(
         #         "Expect the fabric index matches the one current reading")
 
-    @classmethod
+    @ classmethod
     async def _TriggerEvent(cls, devCtrl):
         # We trigger sending an event a couple of times just to be safe.
-        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest())
-        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest())
-        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest())
+        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.UnitTesting.Commands.TestEmitTestEventRequest())
+        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.UnitTesting.Commands.TestEmitTestEventRequest())
+        await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.UnitTesting.Commands.TestEmitTestEventRequest())
 
-    @classmethod
+    @ classmethod
     async def _RetryForContent(cls, request, until, retryCount=10, intervalSeconds=1):
         for i in range(retryCount):
             logger.info(f"Attempt {i + 1}/{retryCount}")
@@ -332,22 +332,22 @@ async def _RetryForContent(cls, request, until, retryCount=10, intervalSeconds=1
             asyncio.sleep(1)
         raise AssertionError("condition is not met")
 
-    @classmethod
+    @ classmethod
     async def TriggerAndWaitForEvents(cls, devCtrl, req):
         await cls._TriggerEvent(devCtrl)
         await cls._RetryForContent(request=lambda: devCtrl.ReadEvent(nodeid=NODE_ID, events=req), until=lambda res: res != 0)
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestGenerateUndefinedFabricScopedEventRequests(cls, devCtrl):
         logger.info("Running TestGenerateUndefinedFabricScopedEventRequests")
         try:
-            res = await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0))
+            res = await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.UnitTesting.Commands.TestEmitTestFabricScopedEventRequest(arg1=0))
             raise ValueError(f"Unexpected Failure")
         except chip.interaction_model.InteractionModelError as ex:
             logger.info(f"Recevied {ex} from server.")
         res = await devCtrl.ReadEvent(nodeid=NODE_ID, events=[
-            (1, Clusters.TestCluster.Events.TestFabricScopedEvent, 0),
+            (1, Clusters.UnitTesting.Events.TestFabricScopedEvent, 0),
         ])
         logger.info(f"return result is {res}")
         if len(res) != 0:
@@ -355,19 +355,19 @@ async def TestGenerateUndefinedFabricScopedEventRequests(cls, devCtrl):
         else:
             logger.info("TestGenerateUndefinedFabricScopedEventRequests: Success")
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestReadEventRequests(cls, devCtrl, expectEventsNum):
         logger.info("1: Reading Ex Cx Ex")
         req = [
-            (1, Clusters.TestCluster.Events.TestEvent, 0),
+            (1, Clusters.UnitTesting.Events.TestEvent, 0),
         ]
 
         await cls.TriggerAndWaitForEvents(devCtrl, req)
 
         logger.info("2: Reading Ex Cx E*")
         req = [
-            (1, Clusters.TestCluster, 0),
+            (1, Clusters.UnitTesting, 0),
         ]
 
         await cls.TriggerAndWaitForEvents(devCtrl, req)
@@ -388,24 +388,24 @@ async def TestReadEventRequests(cls, devCtrl, expectEventsNum):
 
         logger.info("5: Reading Ex Cx E* Urgency")
         req = [
-            (1, Clusters.TestCluster, 1),
+            (1, Clusters.UnitTesting, 1),
         ]
 
         await cls.TriggerAndWaitForEvents(devCtrl, req)
 
         # TODO: Add more wildcard test for IM events.
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestTimedRequest(cls, devCtrl):
         logger.info("1: Send Timed Command Request")
-        req = Clusters.TestCluster.Commands.TimedInvokeRequest()
+        req = Clusters.UnitTesting.Commands.TimedInvokeRequest()
         await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=req, timedRequestTimeoutMs=1000)
 
         logger.info("2: Send Timed Write Request")
         await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                      attributes=[
-                                         (1, Clusters.TestCluster.Attributes.TimedWriteBoolean(
+                                         (1, Clusters.UnitTesting.Attributes.TimedWriteBoolean(
                                              True)),
                                      ],
                                      timedRequestTimeoutMs=1000)
@@ -413,7 +413,7 @@ async def TestTimedRequest(cls, devCtrl):
         logger.info(
             "3: Sending TestCluster-TimedInvokeRequest without timedRequestTimeoutMs should be rejected")
         try:
-            req = Clusters.TestCluster.Commands.TimedInvokeRequest()
+            req = Clusters.UnitTesting.Commands.TimedInvokeRequest()
             await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=req)
             raise AssertionError("The command invoke should be rejected.")
         except ValueError:
@@ -424,19 +424,19 @@ async def TestTimedRequest(cls, devCtrl):
         try:
             await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                          attributes=[
-                                             (1, Clusters.TestCluster.Attributes.TimedWriteBoolean(
+                                             (1, Clusters.UnitTesting.Attributes.TimedWriteBoolean(
                                                  True)),
                                          ])
             raise AssertionError("The write request should be rejected.")
         except ValueError:
             pass
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestTimedRequestTimeout(cls, devCtrl):
         logger.info("1: Send Timed Command Request -- Timeout")
         try:
-            req = Clusters.TestCluster.Commands.TimedInvokeRequest()
+            req = Clusters.UnitTesting.Commands.TimedInvokeRequest()
             # 10ms is a pretty short timeout, RTT is 400ms in simulated network on CI, so this test should fail.
             await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=req, timedRequestTimeoutMs=1)
             raise AssertionError("Timeout expected!")
@@ -447,7 +447,7 @@ async def TestTimedRequestTimeout(cls, devCtrl):
         try:
             await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                          attributes=[
-                                             (1, Clusters.TestCluster.Attributes.TimedWriteBoolean(
+                                             (1, Clusters.UnitTesting.Attributes.TimedWriteBoolean(
                                                  True)),
                                          ],
                                          timedRequestTimeoutMs=1)
@@ -455,8 +455,8 @@ async def TestTimedRequestTimeout(cls, devCtrl):
         except chip.exceptions.ChipStackException:
             pass
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestReadWriteAttributeRequestsWithVersion(cls, devCtrl):
         logger.info("TestReadWriteAttributeRequestsWithVersion")
         req = [
@@ -534,8 +534,8 @@ async def TestReadWriteAttributeRequestsWithVersion(cls, devCtrl):
                         f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}")
             raise AssertionError("Write returned unexpected result.")
 
-    @classmethod
-    @base.test_case
+    @ classmethod
+    @ base.test_case
     async def TestMixedReadAttributeAndEvents(cls, devCtrl):
         def attributePathPossibilities():
             yield ('Ex Cx Ax', [
@@ -548,11 +548,11 @@ def attributePathPossibilities():
             yield ('E* A* A*', ['*'])
 
         def eventPathPossibilities():
-            yield ('Ex Cx Ex', [(1, Clusters.TestCluster.Events.TestEvent, 0)])
-            yield ('Ex Cx E*', [(1, Clusters.TestCluster, 0)])
+            yield ('Ex Cx Ex', [(1, Clusters.UnitTesting.Events.TestEvent, 0)])
+            yield ('Ex Cx E*', [(1, Clusters.UnitTesting, 0)])
             yield ('Ex C* E*', [1])
             yield ('E* C* E*', ['*'])
-            yield ('Ex Cx E* Urgent', [(1, Clusters.TestCluster, 1)])
+            yield ('Ex Cx E* Urgent', [(1, Clusters.UnitTesting, 1)])
 
         testCount = 0
 
@@ -564,7 +564,7 @@ def eventPathPossibilities():
                 res = await cls._RetryForContent(request=lambda: devCtrl.Read(nodeid=NODE_ID, attributes=attributes[1], events=events[1]), until=lambda res: res != 0)
                 VerifyDecodeSuccess(res.attributes)
 
-    @classmethod
+    @ classmethod
     async def RunTest(cls, devCtrl):
         try:
             cls.TestAPI()
diff --git a/src/controller/python/test/unit_tests/test_generated_clusterobjects.py b/src/controller/python/test/unit_tests/test_generated_clusterobjects.py
index c6072598ff65b2..2c415345436254 100644
--- a/src/controller/python/test/unit_tests/test_generated_clusterobjects.py
+++ b/src/controller/python/test/unit_tests/test_generated_clusterobjects.py
@@ -29,10 +29,10 @@ def CheckData(self, expected):
         self.assertEqual(actual, expected)
 
     def test_simple_struct(self):
-        data = Clusters.TestCluster.Structs.SimpleStruct()
+        data = Clusters.UnitTesting.Structs.SimpleStruct()
         data.a = 23
         data.b = True
-        data.c = Clusters.TestCluster.Enums.SimpleEnum.kValueA
+        data.c = Clusters.UnitTesting.Enums.SimpleEnum.kValueA
         data.d = b'1234'
         data.e = 'hello'
         data.f = 1
@@ -42,17 +42,17 @@ def test_simple_struct(self):
         self.CheckData(data)
 
     def test_double_nested_struct_list(self):
-        simpleStruct = Clusters.TestCluster.Structs.SimpleStruct()
+        simpleStruct = Clusters.UnitTesting.Structs.SimpleStruct()
         simpleStruct.a = 23
         simpleStruct.b = True
-        simpleStruct.c = Clusters.TestCluster.Enums.SimpleEnum.kValueA
+        simpleStruct.c = Clusters.UnitTesting.Enums.SimpleEnum.kValueA
         simpleStruct.d = b'1234'
         simpleStruct.e = 'hello'
         simpleStruct.f = 1
         simpleStruct.g = 0
         simpleStruct.h = 0
 
-        data = Clusters.TestCluster.Structs.NestedStructList()
+        data = Clusters.UnitTesting.Structs.NestedStructList()
         data.a = 23
         data.b = True
         data.c = simpleStruct
@@ -67,7 +67,7 @@ def test_double_nested_struct_list(self):
         self.CheckData(data)
 
     def test_nullable_optional_struct(self):
-        data = Clusters.TestCluster.Structs.NullablesAndOptionalsStruct()
+        data = Clusters.UnitTesting.Structs.NullablesAndOptionalsStruct()
 
         data.nullableInt = 2
         data.optionalInt = 3
@@ -75,17 +75,17 @@ def test_nullable_optional_struct(self):
         data.nullableString = 'hello1'
         data.optionalString = 'hello2'
         data.nullableOptionalString = 'hello3'
-        data.nullableStruct = Clusters.TestCluster.Structs.SimpleStruct(
-            23, True, Clusters.TestCluster.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
-        data.optionalStruct = Clusters.TestCluster.Structs.SimpleStruct(
-            24, True, Clusters.TestCluster.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
-        data.nullableOptionalStruct = Clusters.TestCluster.Structs.SimpleStruct(
-            25, True, Clusters.TestCluster.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
-
-        data.nullableList = [Clusters.TestCluster.Enums.SimpleEnum.kValueA]
-        data.optionalList = [Clusters.TestCluster.Enums.SimpleEnum.kValueA]
+        data.nullableStruct = Clusters.UnitTesting.Structs.SimpleStruct(
+            23, True, Clusters.UnitTesting.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
+        data.optionalStruct = Clusters.UnitTesting.Structs.SimpleStruct(
+            24, True, Clusters.UnitTesting.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
+        data.nullableOptionalStruct = Clusters.UnitTesting.Structs.SimpleStruct(
+            25, True, Clusters.UnitTesting.Enums.SimpleEnum.kValueA, b'1234', 'hello', 1, 0, 0)
+
+        data.nullableList = [Clusters.UnitTesting.Enums.SimpleEnum.kValueA]
+        data.optionalList = [Clusters.UnitTesting.Enums.SimpleEnum.kValueA]
         data.nullableOptionalList = [
-            Clusters.TestCluster.Enums.SimpleEnum.kValueA]
+            Clusters.UnitTesting.Enums.SimpleEnum.kValueA]
 
         self.CheckData(data)
 
diff --git a/src/controller/tests/TestEventCaching.cpp b/src/controller/tests/TestEventCaching.cpp
index eaf57af6bdf8ff..8723f81a394286 100644
--- a/src/controller/tests/TestEventCaching.cpp
+++ b/src/controller/tests/TestEventCaching.cpp
@@ -43,6 +43,7 @@
 #include 
 
 using namespace chip;
+using namespace chip::app;
 using namespace chip::app::Clusters;
 
 namespace {
@@ -117,7 +118,7 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(testClusterAttrs)
 DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint, testEndpointClusters);
 
@@ -139,7 +140,7 @@ void GenerateEvents(nlTestSuite * apSuite, chip::EventNumber & firstEventNumber,
     CHIP_ERROR err                 = CHIP_NO_ERROR;
     static uint8_t generationCount = 0;
 
-    TestCluster::Events::TestEvent::Type content;
+    Clusters::UnitTesting::Events::TestEvent::Type content;
 
     for (int i = 0; i < 5; i++)
     {
@@ -183,7 +184,7 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
 
     app::EventPathParams eventPath;
     eventPath.mEndpointId = kTestEndpointId;
-    eventPath.mClusterId  = app::Clusters::TestCluster::Id;
+    eventPath.mClusterId  = app::Clusters::UnitTesting::Id;
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpEventPathParamsList    = &eventPath;
@@ -203,11 +204,11 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         uint8_t generationCount = 0;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
@@ -227,18 +228,18 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         generationCount = 0;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
                 generationCount++;
                 return CHIP_NO_ERROR;
             },
-            app::EventPathParams(kInvalidEndpointId, TestCluster::Id, kInvalidEventId));
+            app::EventPathParams(kInvalidEndpointId, Clusters::UnitTesting::Id, kInvalidEventId));
 
         NL_TEST_ASSERT(apSuite, generationCount == 5);
 
@@ -248,18 +249,18 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         generationCount = 0;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
                 generationCount++;
                 return CHIP_NO_ERROR;
             },
-            app::EventPathParams(kInvalidEndpointId, TestCluster::Id, TestCluster::Events::TestEvent::Id));
+            app::EventPathParams(kInvalidEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Events::TestEvent::Id));
 
         NL_TEST_ASSERT(apSuite, generationCount == 5);
 
@@ -269,11 +270,11 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         generationCount = 1;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
@@ -291,18 +292,18 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         generationCount = 1;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
                 generationCount++;
                 return CHIP_NO_ERROR;
             },
-            app::EventPathParams(kInvalidEndpointId, TestCluster::Id, kInvalidEventId), 1);
+            app::EventPathParams(kInvalidEndpointId, Clusters::UnitTesting::Id, kInvalidEventId), 1);
 
         NL_TEST_ASSERT(apSuite, generationCount == 5);
     }
@@ -327,11 +328,11 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         uint8_t generationCount = 0;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
@@ -376,11 +377,11 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         uint8_t generationCount = 4;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
@@ -416,11 +417,11 @@ void TestReadEvents::TestBasicCaching(nlTestSuite * apSuite, void * apContext)
         uint8_t generationCount = 5;
         readCallback.mClusterCacheAdapter.ForEachEventData(
             [&apSuite, &readCallback, &generationCount](const app::EventHeader & header) {
-                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == TestCluster::Id);
-                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == TestCluster::Events::TestEvent::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mClusterId == Clusters::UnitTesting::Id);
+                NL_TEST_ASSERT(apSuite, header.mPath.mEventId == Clusters::UnitTesting::Events::TestEvent::Id);
                 NL_TEST_ASSERT(apSuite, header.mPath.mEndpointId == kTestEndpointId);
 
-                TestCluster::Events::TestEvent::DecodableType eventData;
+                Clusters::UnitTesting::Events::TestEvent::DecodableType eventData;
                 NL_TEST_ASSERT(apSuite, readCallback.mClusterCacheAdapter.Get(header.mEventNumber, eventData) == CHIP_NO_ERROR);
 
                 NL_TEST_ASSERT(apSuite, eventData.arg1 == generationCount);
diff --git a/src/controller/tests/TestEventChunking.cpp b/src/controller/tests/TestEventChunking.cpp
index d0132301360844..b4add711200485 100644
--- a/src/controller/tests/TestEventChunking.cpp
+++ b/src/controller/tests/TestEventChunking.cpp
@@ -43,6 +43,7 @@
 #include 
 
 using namespace chip;
+using namespace chip::app;
 using namespace chip::app::Clusters;
 
 namespace {
@@ -126,7 +127,7 @@ DECLARE_DYNAMIC_ATTRIBUTE(0x00000001, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE(0x
     DECLARE_DYNAMIC_ATTRIBUTE(0x00000005, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint, testEndpointClusters);
 
@@ -134,7 +135,7 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(testClusterAttrsOnEndpoint4)
 DECLARE_DYNAMIC_ATTRIBUTE(kTestListLargeAttribute, ARRAY, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpoint4Clusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrsOnEndpoint4, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrsOnEndpoint4, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint4, testEndpoint4Clusters);
 
@@ -229,7 +230,7 @@ class TestAttrAccess : public app::AttributeAccessInterface
 {
 public:
     // Register for the Test Cluster cluster on all endpoints.
-    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), TestCluster::Id)
+    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), Clusters::UnitTesting::Id)
     {
         registerAttributeAccessOverride(this);
     }
@@ -270,7 +271,7 @@ void GenerateEvents(nlTestSuite * apSuite, chip::EventNumber & firstEventNumber,
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
 
-    TestCluster::Events::TestEvent::Type content;
+    Clusters::UnitTesting::Events::TestEvent::Type content;
     content.arg1 = static_cast(gIterationCount);
 
     for (int i = 0; i < 5; i++)
@@ -322,7 +323,7 @@ void TestReadEvents::TestEventChunking(nlTestSuite * apSuite, void * apContext)
 
     app::EventPathParams eventPath;
     eventPath.mEndpointId = kTestEndpointId;
-    eventPath.mClusterId  = app::Clusters::TestCluster::Id;
+    eventPath.mClusterId  = app::Clusters::UnitTesting::Id;
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpEventPathParamsList    = &eventPath;
@@ -389,9 +390,9 @@ void TestReadEvents::TestMixedEventsAndAttributesChunking(nlTestSuite * apSuite,
     GenerateEvents(apSuite, firstEventNumber, lastEventNumber);
 
     app::EventPathParams eventPath;
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id);
     eventPath.mEndpointId = kTestEndpointId;
-    eventPath.mClusterId  = app::Clusters::TestCluster::Id;
+    eventPath.mClusterId  = app::Clusters::UnitTesting::Id;
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpAttributePathParamsList    = &attributePath;
@@ -468,9 +469,9 @@ void TestReadEvents::TestMixedEventsAndLargeAttributesChunking(nlTestSuite * apS
     GenerateEvents(apSuite, firstEventNumber, lastEventNumber);
 
     app::EventPathParams eventPath;
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListLargeAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListLargeAttribute);
     eventPath.mEndpointId = kTestEndpointId;
-    eventPath.mClusterId  = app::Clusters::TestCluster::Id;
+    eventPath.mClusterId  = app::Clusters::UnitTesting::Id;
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpAttributePathParamsList    = &attributePath;
diff --git a/src/controller/tests/TestReadChunking.cpp b/src/controller/tests/TestReadChunking.cpp
index 1e1f0c41fd6e7d..22937fd77080c8 100644
--- a/src/controller/tests/TestReadChunking.cpp
+++ b/src/controller/tests/TestReadChunking.cpp
@@ -45,6 +45,7 @@
 
 using TestContext = chip::Test::AppContext;
 using namespace chip;
+using namespace chip::app;
 using namespace chip::app::Clusters;
 
 namespace {
@@ -88,7 +89,7 @@ DECLARE_DYNAMIC_ATTRIBUTE(0x00000001, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE(0x
     DECLARE_DYNAMIC_ATTRIBUTE(0x00000005, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrs, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint, testEndpointClusters);
 
@@ -97,7 +98,7 @@ DECLARE_DYNAMIC_ATTRIBUTE(kTestListAttribute, ARRAY, 1, 0), DECLARE_DYNAMIC_ATTR
     DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpoint3Clusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrsOnEndpoint3, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrsOnEndpoint3, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint3, testEndpoint3Clusters);
 
@@ -105,7 +106,7 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(testClusterAttrsOnEndpoint4)
 DECLARE_DYNAMIC_ATTRIBUTE(0x00000001, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpoint4Clusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrsOnEndpoint4, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrsOnEndpoint4, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint4, testEndpoint4Clusters);
 
@@ -115,7 +116,7 @@ DECLARE_DYNAMIC_ATTRIBUTE(0x00000001, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE(0x
     DECLARE_DYNAMIC_ATTRIBUTE(0x00000003, INT8U, 1, 0), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpoint5Clusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrsOnEndpoint5, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrsOnEndpoint5, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint5, testEndpoint5Clusters);
 
@@ -211,7 +212,7 @@ class TestMutableAttrAccess
     {
         app::AttributePathParams path;
         path.mEndpointId  = kTestEndpointId5;
-        path.mClusterId   = TestCluster::Id;
+        path.mClusterId   = Clusters::UnitTesting::Id;
         path.mAttributeId = attr;
         app::InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path);
     }
@@ -245,7 +246,7 @@ class TestAttrAccess : public app::AttributeAccessInterface
 {
 public:
     // Register for the Test Cluster cluster on all endpoints.
-    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), TestCluster::Id)
+    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), Clusters::UnitTesting::Id)
     {
         registerAttributeAccessOverride(this);
     }
@@ -319,7 +320,7 @@ void TestMutableReadCallback::OnAttributeData(const app::ConcreteDataAttributePa
                                               const app::StatusIB & aStatus)
 {
     VerifyOrReturn(apData != nullptr);
-    NL_TEST_ASSERT(gSuite, aPath.mClusterId == TestCluster::Id);
+    NL_TEST_ASSERT(gSuite, aPath.mClusterId == Clusters::UnitTesting::Id);
 
     mAttributeCount++;
     if (aPath.mAttributeId <= 5)
@@ -372,7 +373,7 @@ void TestReadChunking::TestChunking(nlTestSuite * apSuite, void * apContext)
     DataVersion dataVersionStorage[ArraySize(testEndpointClusters)];
     emberAfSetDynamicEndpoint(0, kTestEndpointId, &testEndpoint, Span(dataVersionStorage));
 
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id);
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpAttributePathParamsList    = &attributePath;
@@ -437,7 +438,7 @@ void TestReadChunking::TestListChunking(nlTestSuite * apSuite, void * apContext)
     DataVersion dataVersionStorage[ArraySize(testEndpoint3Clusters)];
     emberAfSetDynamicEndpoint(0, kTestEndpointId3, &testEndpoint3, Span(dataVersionStorage));
 
-    app::AttributePathParams attributePath(kTestEndpointId3, app::Clusters::TestCluster::Id, kTestListAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId3, app::Clusters::UnitTesting::Id, kTestListAttribute);
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpAttributePathParamsList    = &attributePath;
@@ -503,7 +504,7 @@ void TestReadChunking::TestBadChunking(nlTestSuite * apSuite, void * apContext)
     DataVersion dataVersionStorage[ArraySize(testEndpoint3Clusters)];
     emberAfSetDynamicEndpoint(0, kTestEndpointId3, &testEndpoint3, Span(dataVersionStorage));
 
-    app::AttributePathParams attributePath(kTestEndpointId3, app::Clusters::TestCluster::Id, kTestBadAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId3, app::Clusters::UnitTesting::Id, kTestBadAttribute);
     app::ReadPrepareParams readParams(sessionHandle);
 
     readParams.mpAttributePathParamsList    = &attributePath;
@@ -648,7 +649,7 @@ auto TouchAttrOp(AttributeIdWithEndpointId attr)
     return [=]() {
         app::AttributePathParams path;
         path.mEndpointId  = attr.first;
-        path.mClusterId   = TestCluster::Id;
+        path.mClusterId   = Clusters::UnitTesting::Id;
         path.mAttributeId = attr.second;
         gIterationCount++;
         app::InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path);
@@ -842,9 +843,9 @@ void TestReadChunking::TestSetDirtyBetweenChunks(nlTestSuite * apSuite, void * a
         app::AttributePathParams attributePath[3];
         app::ReadPrepareParams readParams(sessionHandle);
 
-        attributePath[0] = app::AttributePathParams(kTestEndpointId5, TestCluster::Id, Attr1);
-        attributePath[1] = app::AttributePathParams(kTestEndpointId5, TestCluster::Id, Attr2);
-        attributePath[2] = app::AttributePathParams(kTestEndpointId5, TestCluster::Id, Attr3);
+        attributePath[0] = app::AttributePathParams(kTestEndpointId5, Clusters::UnitTesting::Id, Attr1);
+        attributePath[1] = app::AttributePathParams(kTestEndpointId5, Clusters::UnitTesting::Id, Attr2);
+        attributePath[2] = app::AttributePathParams(kTestEndpointId5, Clusters::UnitTesting::Id, Attr3);
 
         readParams.mpAttributePathParamsList    = attributePath;
         readParams.mAttributePathParamsListSize = 3;
diff --git a/src/controller/tests/TestServerCommandDispatch.cpp b/src/controller/tests/TestServerCommandDispatch.cpp
index 1e820e958a7fac..4754f754a28566 100644
--- a/src/controller/tests/TestServerCommandDispatch.cpp
+++ b/src/controller/tests/TestServerCommandDispatch.cpp
@@ -63,7 +63,7 @@ ResponseDirective responseDirective;
 class TestClusterCommandHandler : public chip::app::CommandHandlerInterface
 {
 public:
-    TestClusterCommandHandler() : chip::app::CommandHandlerInterface(Optional::Missing(), TestCluster::Id)
+    TestClusterCommandHandler() : chip::app::CommandHandlerInterface(Optional::Missing(), Clusters::UnitTesting::Id)
     {
         chip::app::InteractionModelEngine::GetInstance()->RegisterCommandHandler(this);
     }
@@ -83,12 +83,12 @@ class TestClusterCommandHandler : public chip::app::CommandHandlerInterface
 
 void TestClusterCommandHandler::InvokeCommand(chip::app::CommandHandlerInterface::HandlerContext & handlerContext)
 {
-    HandleCommand(
+    HandleCommand(
         handlerContext, [](chip::app::CommandHandlerInterface::HandlerContext & ctx, const auto & requestPayload) {
             if (responseDirective == kSendDataResponse)
             {
-                TestCluster::Commands::TestStructArrayArgumentResponse::Type dataResponse;
-                TestCluster::Structs::NestedStructList::Type nestedStructList[4];
+                Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::Type dataResponse;
+                Clusters::UnitTesting::Structs::NestedStructList::Type nestedStructList[4];
 
                 uint8_t i = 0;
                 for (auto & item : nestedStructList)
@@ -124,7 +124,7 @@ CHIP_ERROR TestClusterCommandHandler::EnumerateAcceptedCommands(const ConcreteCl
     }
 
     // We just have one command id.
-    callback(TestCluster::Commands::TestSimpleArgumentRequest::Id, context);
+    callback(Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Id, context);
     return CHIP_NO_ERROR;
 }
 
@@ -152,9 +152,9 @@ class TestCommandInteraction
 // We want to send a TestSimpleArgumentRequest::Type, but get a
 // TestStructArrayArgumentResponse in return, so need to shadow the actual
 // ResponseType that TestSimpleArgumentRequest has.
-struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
 {
-    using ResponseType = TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType;
 };
 
 void TestCommandInteraction::TestNoHandler(nlTestSuite * apSuite, void * apContext)
@@ -211,11 +211,11 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(testClusterAttrs)
 DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 constexpr CommandId testClusterCommands1[] = {
-    TestCluster::Commands::TestSimpleArgumentRequest::Id,
+    Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Id,
     kInvalidCommandId,
 };
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters1)
-DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::TestCluster::Id, testClusterAttrs, testClusterCommands1, nullptr),
+DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::UnitTesting::Id, testClusterAttrs, testClusterCommands1, nullptr),
     DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::Descriptor::Id, descriptorAttrs, nullptr, nullptr),
     DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
@@ -225,14 +225,14 @@ constexpr CommandId testClusterCommands2[] = {
     kInvalidCommandId,
 };
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters2)
-DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::TestCluster::Id, testClusterAttrs, testClusterCommands2, nullptr),
+DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::UnitTesting::Id, testClusterAttrs, testClusterCommands2, nullptr),
     DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::Descriptor::Id, descriptorAttrs, nullptr, nullptr),
     DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint2, testEndpointClusters2);
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters3)
-DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::TestCluster::Id, testClusterAttrs, nullptr, nullptr),
+DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::UnitTesting::Id, testClusterAttrs, nullptr, nullptr),
     DECLARE_DYNAMIC_CLUSTER(chip::app::Clusters::Descriptor::Id, descriptorAttrs, nullptr, nullptr),
     DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
@@ -308,7 +308,7 @@ void TestCommandInteraction::TestDataResponseHelper(nlTestSuite * apSuite, void
         {
             // We only expect 0 or 1 command ids here.
             NL_TEST_ASSERT(apSuite, count == 0);
-            NL_TEST_ASSERT(apSuite, iter.GetValue() == TestCluster::Commands::TestSimpleArgumentRequest::Id);
+            NL_TEST_ASSERT(apSuite, iter.GetValue() == Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Id);
             ++count;
         }
         NL_TEST_ASSERT(apSuite, iter.GetStatus() == CHIP_NO_ERROR);
@@ -327,7 +327,7 @@ void TestCommandInteraction::TestDataResponseHelper(nlTestSuite * apSuite, void
         ChipLogError(NotSpecified, "TEST FAILURE: %" CHIP_ERROR_FORMAT, aError.Format());
     };
 
-    chip::Controller::ReadAttribute(
+    chip::Controller::ReadAttribute(
         &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, readSuccessCb, readFailureCb);
 
     ctx.DrainAndServiceIO();
diff --git a/src/controller/tests/TestWriteChunking.cpp b/src/controller/tests/TestWriteChunking.cpp
index 726e73fe33eb19..80141c56e68cdd 100644
--- a/src/controller/tests/TestWriteChunking.cpp
+++ b/src/controller/tests/TestWriteChunking.cpp
@@ -83,7 +83,7 @@ DECLARE_DYNAMIC_ATTRIBUTE(kTestListAttribute, ARRAY, 1, ATTRIBUTE_MASK_WRITABLE)
     DECLARE_DYNAMIC_ATTRIBUTE(kTestListAttribute2, ARRAY, 1, ATTRIBUTE_MASK_WRITABLE), DECLARE_DYNAMIC_ATTRIBUTE_LIST_END();
 
 DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN(testEndpointClusters)
-DECLARE_DYNAMIC_CLUSTER(TestCluster::Id, testClusterAttrsOnEndpoint, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
+DECLARE_DYNAMIC_CLUSTER(Clusters::UnitTesting::Id, testClusterAttrsOnEndpoint, nullptr, nullptr), DECLARE_DYNAMIC_CLUSTER_LIST_END;
 
 DECLARE_DYNAMIC_ENDPOINT(testEndpoint, testEndpointClusters);
 
@@ -126,7 +126,7 @@ class TestAttrAccess : public app::AttributeAccessInterface
 {
 public:
     // Register for the Test Cluster cluster on all endpoints.
-    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), TestCluster::Id) {}
+    TestAttrAccess() : AttributeAccessInterface(Optional::Missing(), Clusters::UnitTesting::Id) {}
 
     CHIP_ERROR Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) override;
     CHIP_ERROR Write(const app::ConcreteDataAttributePath & aPath, app::AttributeValueDecoder & aDecoder) override;
@@ -201,7 +201,7 @@ void TestWriteChunking::TestListChunking(nlTestSuite * apSuite, void * apContext
     // Register our fake attribute access interface.
     registerAttributeAccessOverride(&testServer);
 
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListAttribute);
     //
     // We've empirically determined that by reserving 950 bytes in the packet buffer, we can fit 2
     // AttributeDataIBs into the packet. ~30-40 bytes covers a single write chunk, but let's 2-3x that
@@ -275,7 +275,7 @@ void TestWriteChunking::TestBadChunking(nlTestSuite * apSuite, void * apContext)
     // Register our fake attribute access interface.
     registerAttributeAccessOverride(&testServer);
 
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListAttribute);
 
     for (int i = 850; i < static_cast(chip::app::kMaxSecureSduLengthBytes); i++)
     {
@@ -356,7 +356,7 @@ void TestWriteChunking::TestConflictWrite(nlTestSuite * apSuite, void * apContex
     // Register our fake attribute access interface.
     registerAttributeAccessOverride(&testServer);
 
-    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListAttribute);
+    app::AttributePathParams attributePath(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListAttribute);
 
     TestWriteCallback writeCallback1;
     app::WriteClient writeClient1(
@@ -432,8 +432,8 @@ void TestWriteChunking::TestNonConflictWrite(nlTestSuite * apSuite, void * apCon
     // Register our fake attribute access interface.
     registerAttributeAccessOverride(&testServer);
 
-    app::AttributePathParams attributePath1(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListAttribute);
-    app::AttributePathParams attributePath2(kTestEndpointId, app::Clusters::TestCluster::Id, kTestListAttribute2);
+    app::AttributePathParams attributePath1(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListAttribute);
+    app::AttributePathParams attributePath2(kTestEndpointId, app::Clusters::UnitTesting::Id, kTestListAttribute2);
 
     TestWriteCallback writeCallback1;
     app::WriteClient writeClient1(
@@ -617,7 +617,7 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
     ChipLogProgress(Zcl, "Test 1: we should receive transaction notifications");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .expectedStatus = { true },
             });
 
@@ -625,7 +625,7 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
     RunTest(
         apSuite, ctx,
         Instructions{
-            .paths                   = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+            .paths                   = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
             .onListWriteBeginActions = [&](const app::ConcreteAttributePath & aPath) { return Operations::kShutdownWriteClient; },
             .expectedStatus          = { false },
         });
@@ -633,16 +633,16 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
     ChipLogProgress(Zcl, "Test 3: we should receive transaction notifications for every list in the transaction");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute2) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute2) },
                 .expectedStatus = { true, true },
             });
 
     ChipLogProgress(Zcl, "Test 4: we should receive transaction notifications with the status of each list");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute2) },
+                .paths = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute2) },
                 .onListWriteBeginActions =
                     [&](const app::ConcreteAttributePath & aPath) {
                         if (aPath.mAttributeId == kTestListAttribute2)
@@ -659,8 +659,8 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
                     "null value before non null values");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .data           = { ListData::kNull, ListData::kList },
                 .expectedStatus = { true },
             });
@@ -670,8 +670,8 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
                     "null value after non null values");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .data           = { ListData::kList, ListData::kNull },
                 .expectedStatus = { true },
             });
@@ -681,9 +681,9 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
                     "null value between non null values");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute),
-                           ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute),
+                           ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .data           = { ListData::kList, ListData::kNull, ListData::kList },
                 .expectedStatus = { true },
             });
@@ -691,7 +691,7 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
     ChipLogProgress(Zcl, "Test 8: transactional list callbacks will be called for nullable lists");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .data           = { ListData::kNull },
                 .expectedStatus = { true },
             });
@@ -701,7 +701,7 @@ void TestWriteChunking::TestTransactionalList(nlTestSuite * apSuite, void * apCo
                     "during processing the requests");
     RunTest(apSuite, ctx,
             Instructions{
-                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::TestCluster::Id, kTestListAttribute) },
+                .paths          = { ConcreteAttributePath(kTestEndpointId, Clusters::UnitTesting::Id, kTestListAttribute) },
                 .data           = { ListData::kBadValue },
                 .expectedStatus = { false },
             });
diff --git a/src/controller/tests/data_model/TestCommands.cpp b/src/controller/tests/data_model/TestCommands.cpp
index 360425e031604b..9ecac05df1f161 100644
--- a/src/controller/tests/data_model/TestCommands.cpp
+++ b/src/controller/tests/data_model/TestCommands.cpp
@@ -78,10 +78,10 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, chip
     ChipLogDetail(Controller, "Received Cluster Command: Endpoint=%x Cluster=" ChipLogFormatMEI " Command=" ChipLogFormatMEI,
                   aCommandPath.mEndpointId, ChipLogValueMEI(aCommandPath.mClusterId), ChipLogValueMEI(aCommandPath.mCommandId));
 
-    if (aCommandPath.mClusterId == TestCluster::Id &&
-        aCommandPath.mCommandId == TestCluster::Commands::TestSimpleArgumentRequest::Type::GetCommandId())
+    if (aCommandPath.mClusterId == Clusters::UnitTesting::Id &&
+        aCommandPath.mCommandId == Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type::GetCommandId())
     {
-        TestCluster::Commands::TestSimpleArgumentRequest::DecodableType dataRequest;
+        Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::DecodableType dataRequest;
 
         if (DataModel::Decode(aReader, dataRequest) != CHIP_NO_ERROR)
         {
@@ -92,8 +92,8 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, chip
 
         if (responseDirective == kSendDataResponse)
         {
-            TestCluster::Commands::TestStructArrayArgumentResponse::Type dataResponse;
-            TestCluster::Structs::NestedStructList::Type nestedStructList[4];
+            Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::Type dataResponse;
+            Clusters::UnitTesting::Structs::NestedStructList::Type nestedStructList[4];
 
             uint8_t i = 0;
             for (auto & item : nestedStructList)
@@ -163,7 +163,7 @@ InteractionModel::Status ServerClusterCommandExists(const ConcreteCommandPath &
         return Status::UnsupportedEndpoint;
     }
 
-    if (aCommandPath.mClusterId != TestCluster::Id)
+    if (aCommandPath.mClusterId != Clusters::UnitTesting::Id)
     {
         return Status::UnsupportedCluster;
     }
@@ -197,9 +197,9 @@ void TestCommandInteraction::TestDataResponse(nlTestSuite * apSuite, void * apCo
     // We want to send a TestSimpleArgumentRequest::Type, but get a
     // TestStructArrayArgumentResponse in return, so need to shadow the actual
     // ResponseType that TestSimpleArgumentRequest has.
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
-        using ResponseType = TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType;
+        using ResponseType = Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType;
     };
 
     FakeRequest request;
@@ -250,7 +250,7 @@ void TestCommandInteraction::TestDataResponse(nlTestSuite * apSuite, void * apCo
 
 void TestCommandInteraction::TestSuccessNoDataResponse(nlTestSuite * apSuite, void * apContext)
 {
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
         using ResponseType = DataModel::NullObjectType;
     };
@@ -289,7 +289,7 @@ void TestCommandInteraction::TestSuccessNoDataResponse(nlTestSuite * apSuite, vo
 
 void TestCommandInteraction::TestMultipleSuccessNoDataResponses(nlTestSuite * apSuite, void * apContext)
 {
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
         using ResponseType = DataModel::NullObjectType;
     };
@@ -328,7 +328,7 @@ void TestCommandInteraction::TestMultipleSuccessNoDataResponses(nlTestSuite * ap
 
 void TestCommandInteraction::TestAsyncResponse(nlTestSuite * apSuite, void * apContext)
 {
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
         using ResponseType = DataModel::NullObjectType;
     };
@@ -385,7 +385,7 @@ void TestCommandInteraction::TestAsyncResponse(nlTestSuite * apSuite, void * apC
 void TestCommandInteraction::TestFailure(nlTestSuite * apSuite, void * apContext)
 {
     TestContext & ctx = *static_cast(apContext);
-    TestCluster::Commands::TestSimpleArgumentRequest::Type request;
+    Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type request;
     auto sessionHandle = ctx.GetSessionBobToAlice();
 
     bool onSuccessWasCalled = false;
@@ -418,7 +418,7 @@ void TestCommandInteraction::TestFailure(nlTestSuite * apSuite, void * apContext
 
 void TestCommandInteraction::TestMultipleFailures(nlTestSuite * apSuite, void * apContext)
 {
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
         using ResponseType = DataModel::NullObjectType;
     };
@@ -457,7 +457,7 @@ void TestCommandInteraction::TestMultipleFailures(nlTestSuite * apSuite, void *
 
 void TestCommandInteraction::TestSuccessNoDataResponseWithClusterStatus(nlTestSuite * apSuite, void * apContext)
 {
-    struct FakeRequest : public TestCluster::Commands::TestSimpleArgumentRequest::Type
+    struct FakeRequest : public Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type
     {
         using ResponseType = DataModel::NullObjectType;
     };
@@ -498,7 +498,7 @@ void TestCommandInteraction::TestSuccessNoDataResponseWithClusterStatus(nlTestSu
 void TestCommandInteraction::TestFailureWithClusterStatus(nlTestSuite * apSuite, void * apContext)
 {
     TestContext & ctx = *static_cast(apContext);
-    TestCluster::Commands::TestSimpleArgumentRequest::Type request;
+    Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type request;
     auto sessionHandle = ctx.GetSessionBobToAlice();
 
     bool onSuccessWasCalled = false;
diff --git a/src/controller/tests/data_model/TestRead.cpp b/src/controller/tests/data_model/TestRead.cpp
index 5c1677a50b8cc4..ddc3b7219b2834 100644
--- a/src/controller/tests/data_model/TestRead.cpp
+++ b/src/controller/tests/data_model/TestRead.cpp
@@ -36,6 +36,7 @@
 using TestContext = chip::Test::AppContext;
 
 using namespace chip;
+using namespace chip::app;
 using namespace chip::app::Clusters;
 using namespace chip::Protocols;
 
@@ -43,8 +44,8 @@ namespace {
 
 constexpr EndpointId kTestEndpointId        = 1;
 constexpr DataVersion kDataVersion          = 5;
-constexpr AttributeId kPerpetualAttributeid = Test::MockAttributeId(1);
-constexpr ClusterId kPerpetualClusterId     = Test::MockClusterId(2);
+constexpr AttributeId kPerpetualAttributeid = chip::Test::MockAttributeId(1);
+constexpr ClusterId kPerpetualClusterId     = chip::Test::MockClusterId(2);
 bool expectedAttribute1                     = true;
 int16_t expectedAttribute2                  = 42;
 uint64_t expectedAttribute3                 = 0xdeadbeef0000cafe;
@@ -74,7 +75,7 @@ enum ResponseDirective
 
 ResponseDirective responseDirective;
 
-// Number of reads of TestCluster::Attributes::Int16u that we have observed.
+// Number of reads of Clusters::UnitTesting::Attributes::Int16u that we have observed.
 // Every read will increment this count by 1 and return the new value.
 uint16_t totalReadCount = 0;
 
@@ -86,14 +87,14 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
                                  const ConcreteReadAttributePath & aPath, AttributeReportIBs::Builder & aAttributeReports,
                                  AttributeValueEncoder::AttributeEncodeState * apEncoderState)
 {
-    if (aPath.mEndpointId >= Test::kMockEndpointMin)
+    if (aPath.mEndpointId >= chip::Test::kMockEndpointMin)
     {
-        return Test::ReadSingleMockClusterData(aSubjectDescriptor.fabricIndex, aPath, aAttributeReports, apEncoderState);
+        return chip::Test::ReadSingleMockClusterData(aSubjectDescriptor.fabricIndex, aPath, aAttributeReports, apEncoderState);
     }
 
     if (responseDirective == kSendManyDataResponses || responseDirective == kSendManyDataResponsesWrongPath)
     {
-        if (aPath.mClusterId != Clusters::TestCluster::Id || aPath.mAttributeId != Clusters::TestCluster::Attributes::Boolean::Id)
+        if (aPath.mClusterId != Clusters::UnitTesting::Id || aPath.mAttributeId != Clusters::UnitTesting::Attributes::Boolean::Id)
         {
             return CHIP_ERROR_INCORRECT_STATE;
         }
@@ -116,8 +117,8 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
 
     if (responseDirective == kSendDataResponse)
     {
-        if (aPath.mClusterId == app::Clusters::TestCluster::Id &&
-            aPath.mAttributeId == app::Clusters::TestCluster::Attributes::ListFabricScoped::Id)
+        if (aPath.mClusterId == app::Clusters::UnitTesting::Id &&
+            aPath.mAttributeId == app::Clusters::UnitTesting::Attributes::ListFabricScoped::Id)
         {
             AttributeValueEncoder::AttributeEncodeState state =
                 (apEncoderState == nullptr ? AttributeValueEncoder::AttributeEncodeState() : *apEncoderState);
@@ -125,7 +126,7 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
                                                kDataVersion /* data version */, aIsFabricFiltered, state);
 
             return valueEncoder.EncodeList([aSubjectDescriptor](const auto & encoder) -> CHIP_ERROR {
-                app::Clusters::TestCluster::Structs::TestFabricScoped::Type val;
+                app::Clusters::UnitTesting::Structs::TestFabricScoped::Type val;
                 val.fabricIndex = aSubjectDescriptor.fabricIndex;
                 ReturnErrorOnFailure(encoder.Encode(val));
                 val.fabricIndex = (val.fabricIndex == 1) ? 2 : 1;
@@ -133,8 +134,8 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
                 return CHIP_NO_ERROR;
             });
         }
-        if (aPath.mClusterId == app::Clusters::TestCluster::Id &&
-            aPath.mAttributeId == app::Clusters::TestCluster::Attributes::Int16u::Id)
+        if (aPath.mClusterId == app::Clusters::UnitTesting::Id &&
+            aPath.mAttributeId == app::Clusters::UnitTesting::Attributes::Int16u::Id)
         {
             AttributeValueEncoder::AttributeEncodeState state =
                 (apEncoderState == nullptr ? AttributeValueEncoder::AttributeEncodeState() : *apEncoderState);
@@ -144,7 +145,7 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
             return valueEncoder.Encode(++totalReadCount);
         }
         if (aPath.mClusterId == kPerpetualClusterId ||
-            (aPath.mClusterId == app::Clusters::TestCluster::Id && aPath.mAttributeId == kPerpetualAttributeid))
+            (aPath.mClusterId == app::Clusters::UnitTesting::Id && aPath.mAttributeId == kPerpetualAttributeid))
         {
             AttributeValueEncoder::AttributeEncodeState state = AttributeValueEncoder::AttributeEncodeState();
             AttributeValueEncoder valueEncoder(aAttributeReports, aSubjectDescriptor.fabricIndex, aPath,
@@ -171,8 +172,8 @@ CHIP_ERROR ReadSingleClusterData(const Access::SubjectDescriptor & aSubjectDescr
         ReturnErrorOnFailure(aAttributeReports.GetError());
         AttributeDataIB::Builder & attributeData = attributeReport.CreateAttributeData();
         ReturnErrorOnFailure(attributeReport.GetError());
-        TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
-        TestCluster::Structs::TestListStructOctet::Type valueBuf[4];
+        Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
+        Clusters::UnitTesting::Structs::TestListStructOctet::Type valueBuf[4];
 
         value = valueBuf;
 
@@ -406,8 +407,8 @@ void TestReadInteraction::TestReadAttributeResponse(nlTestSuite * apSuite, void
         onFailureCbInvoked = true;
     };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
-                                                                                        kTestEndpointId, onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(
+        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -429,8 +430,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
     chip::app::EventPathParams eventPathParams[100];
     for (auto & eventPathParam : eventPathParams)
     {
-        eventPathParam.mEndpointId = Test::kMockEndpoint3;
-        eventPathParam.mClusterId  = Test::MockClusterId(2);
+        eventPathParam.mEndpointId = chip::Test::kMockEndpoint3;
+        eventPathParam.mClusterId  = chip::Test::MockClusterId(2);
         eventPathParam.mEventId    = 0;
     }
 
@@ -453,16 +454,16 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
-        attributePathParams1[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(1);
 
         attributePathParams1[1].mEndpointId  = kInvalidEndpointId;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(1);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(3);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams1[2].mAttributeId = kInvalidAttributeId;
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
@@ -474,7 +475,7 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 6);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version1.HasValue());
         delegate.mNumAttributeResponse = 0;
@@ -488,17 +489,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
-        attributePathParams1[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(1);
 
-        attributePathParams1[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint3;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[2].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint3;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[2].mAttributeId = chip::Test::MockAttributeId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -509,16 +510,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 3);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version1.HasValue());
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -527,7 +529,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -536,7 +539,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -557,16 +561,16 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
         attributePathParams1[0].mEndpointId  = kInvalidEndpointId;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint3;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[2].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint3;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[2].mAttributeId = chip::Test::MockAttributeId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -577,22 +581,24 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 2);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version1.HasValue());
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint1, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint1, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) != CHIP_NO_ERROR);
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -601,7 +607,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -619,13 +626,13 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams2[2];
-        attributePathParams2[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams2[0].mClusterId   = Test::MockClusterId(3);
+        attributePathParams2[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams2[0].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams2[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams2[1].mEndpointId            = Test::kMockEndpoint3;
-        attributePathParams2[1].mClusterId             = Test::MockClusterId(2);
-        attributePathParams2[1].mAttributeId           = Test::MockAttributeId(2);
+        attributePathParams2[1].mEndpointId            = chip::Test::kMockEndpoint3;
+        attributePathParams2[1].mClusterId             = chip::Test::MockClusterId(2);
+        attributePathParams2[1].mAttributeId           = chip::Test::MockAttributeId(2);
         readPrepareParams.mpAttributePathParamsList    = attributePathParams2;
         readPrepareParams.mAttributePathParamsListSize = 2;
         err                                            = readClient.SendRequest(readPrepareParams);
@@ -636,16 +643,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 6);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 0));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -654,7 +662,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -663,7 +672,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -672,7 +682,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -690,17 +701,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
-        attributePathParams1[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(1);
 
-        attributePathParams1[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint3;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[2].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint3;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[2].mAttributeId = chip::Test::MockAttributeId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -711,16 +722,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 1);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 0));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -729,7 +741,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -738,7 +751,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -756,13 +770,13 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams2[2];
-        attributePathParams2[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams2[0].mClusterId   = Test::MockClusterId(3);
+        attributePathParams2[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams2[0].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams2[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams2[1].mEndpointId            = Test::kMockEndpoint3;
-        attributePathParams2[1].mClusterId             = Test::MockClusterId(2);
-        attributePathParams2[1].mAttributeId           = Test::MockAttributeId(2);
+        attributePathParams2[1].mEndpointId            = chip::Test::kMockEndpoint3;
+        attributePathParams2[1].mClusterId             = chip::Test::MockClusterId(2);
+        attributePathParams2[1].mAttributeId           = chip::Test::MockAttributeId(2);
         readPrepareParams.mpAttributePathParamsList    = attributePathParams2;
         readPrepareParams.mAttributePathParamsListSize = 2;
         err                                            = readClient.SendRequest(readPrepareParams);
@@ -772,16 +786,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 1);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 0));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -790,7 +805,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -799,7 +815,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -808,7 +825,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -818,7 +836,7 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         delegate.mNumAttributeResponse = 0;
     }
 
-    Test::BumpVersion();
+    chip::Test::BumpVersion();
 
     // Read of E2C3A1, E2C3A2 and E3C2A2. It would use the stored data versions in the cache since our subsequent read's C1A*
     // path intersects with previous cached data version, server's version is changed. Expect E2C3A1, E2C3A2 and E3C2A2 attribute in
@@ -829,17 +847,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
-        attributePathParams1[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(1);
 
-        attributePathParams1[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint3;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[2].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint3;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[2].mAttributeId = chip::Test::MockAttributeId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -850,16 +868,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 3);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version1.HasValue());
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -868,7 +887,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -877,7 +897,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -895,17 +916,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[3];
-        attributePathParams1[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[0].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[0].mAttributeId = Test::MockAttributeId(1);
+        attributePathParams1[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[0].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[0].mAttributeId = chip::Test::MockAttributeId(1);
 
-        attributePathParams1[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams1[1].mClusterId   = Test::MockClusterId(3);
-        attributePathParams1[1].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams1[1].mClusterId   = chip::Test::MockClusterId(3);
+        attributePathParams1[1].mAttributeId = chip::Test::MockAttributeId(2);
 
-        attributePathParams1[2].mEndpointId  = Test::kMockEndpoint3;
-        attributePathParams1[2].mClusterId   = Test::MockClusterId(2);
-        attributePathParams1[2].mAttributeId = Test::MockAttributeId(2);
+        attributePathParams1[2].mEndpointId  = chip::Test::kMockEndpoint3;
+        attributePathParams1[2].mClusterId   = chip::Test::MockClusterId(2);
+        attributePathParams1[2].mAttributeId = chip::Test::MockAttributeId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -916,16 +937,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 3);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version1.HasValue());
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -934,7 +956,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -943,7 +966,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -961,13 +985,13 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams2[2];
-        attributePathParams2[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams2[0].mClusterId   = Test::MockClusterId(3);
+        attributePathParams2[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams2[0].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams2[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams2[1].mEndpointId            = Test::kMockEndpoint3;
-        attributePathParams2[1].mClusterId             = Test::MockClusterId(2);
-        attributePathParams2[1].mAttributeId           = Test::MockAttributeId(2);
+        attributePathParams2[1].mEndpointId            = chip::Test::kMockEndpoint3;
+        attributePathParams2[1].mClusterId             = chip::Test::MockClusterId(2);
+        attributePathParams2[1].mAttributeId           = chip::Test::MockAttributeId(2);
         readPrepareParams.mpAttributePathParamsList    = attributePathParams2;
         readPrepareParams.mAttributePathParamsListSize = 2;
         err                                            = readClient.SendRequest(readPrepareParams);
@@ -977,16 +1001,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 6);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 1));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -995,7 +1020,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1004,7 +1030,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -1013,7 +1040,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1032,13 +1060,13 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams2[2];
-        attributePathParams2[0].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams2[0].mClusterId   = Test::MockClusterId(3);
+        attributePathParams2[0].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams2[0].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams2[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams2[1].mEndpointId            = Test::kMockEndpoint3;
-        attributePathParams2[1].mClusterId             = Test::MockClusterId(2);
-        attributePathParams2[1].mAttributeId           = Test::MockAttributeId(2);
+        attributePathParams2[1].mEndpointId            = chip::Test::kMockEndpoint3;
+        attributePathParams2[1].mClusterId             = chip::Test::MockClusterId(2);
+        attributePathParams2[1].mAttributeId           = chip::Test::MockAttributeId(2);
         readPrepareParams.mpAttributePathParamsList    = attributePathParams2;
         readPrepareParams.mAttributePathParamsListSize = 2;
 
@@ -1052,16 +1080,17 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 6);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 1));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, !version2.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1070,7 +1099,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1079,7 +1109,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -1088,7 +1119,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1100,7 +1132,7 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         readPrepareParams.mEventPathParamsListSize = 0;
     }
 
-    Test::BumpVersion();
+    chip::Test::BumpVersion();
 
     // Read of E1C2A* and E2C3A* and E2C2A*, it would use C1 cached version to construct DataVersionFilter, but version has
     // changed in server. Expect E1C2A* and C2C3A* and E2C2A* attributes in report, and cache their versions
@@ -1111,16 +1143,16 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
 
         chip::app::AttributePathParams attributePathParams3[3];
-        attributePathParams3[0].mEndpointId  = Test::kMockEndpoint1;
-        attributePathParams3[0].mClusterId   = Test::MockClusterId(2);
+        attributePathParams3[0].mEndpointId  = chip::Test::kMockEndpoint1;
+        attributePathParams3[0].mClusterId   = chip::Test::MockClusterId(2);
         attributePathParams3[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams3[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams3[1].mClusterId   = Test::MockClusterId(3);
+        attributePathParams3[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams3[1].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams3[1].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams3[2].mEndpointId            = Test::kMockEndpoint2;
-        attributePathParams3[2].mClusterId             = Test::MockClusterId(2);
+        attributePathParams3[2].mEndpointId            = chip::Test::kMockEndpoint2;
+        attributePathParams3[2].mClusterId             = chip::Test::MockClusterId(2);
         attributePathParams3[2].mAttributeId           = kInvalidAttributeId;
         readPrepareParams.mpAttributePathParamsList    = attributePathParams3;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -1133,20 +1165,21 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 12);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 2));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint2, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version2.HasValue() && (version2.Value() == 2));
         Optional version3;
-        app::ConcreteClusterPath clusterPath3(Test::kMockEndpoint1, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath3(chip::Test::kMockEndpoint1, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath3, version3) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version3.HasValue() && (version3.Value() == 2));
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint1, Test::MockClusterId(2), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint1, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1155,7 +1188,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1164,7 +1198,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1173,7 +1208,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -1182,7 +1218,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(2), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1190,7 +1227,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
             NL_TEST_ASSERT(apSuite, receivedAttribute1 == expectedAttribute1);
         }
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1212,16 +1250,16 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
 
         chip::app::AttributePathParams attributePathParams3[3];
-        attributePathParams3[0].mEndpointId  = Test::kMockEndpoint1;
-        attributePathParams3[0].mClusterId   = Test::MockClusterId(2);
+        attributePathParams3[0].mEndpointId  = chip::Test::kMockEndpoint1;
+        attributePathParams3[0].mClusterId   = chip::Test::MockClusterId(2);
         attributePathParams3[0].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams3[1].mEndpointId  = Test::kMockEndpoint2;
-        attributePathParams3[1].mClusterId   = Test::MockClusterId(3);
+        attributePathParams3[1].mEndpointId  = chip::Test::kMockEndpoint2;
+        attributePathParams3[1].mClusterId   = chip::Test::MockClusterId(3);
         attributePathParams3[1].mAttributeId = kInvalidAttributeId;
 
-        attributePathParams3[2].mEndpointId            = Test::kMockEndpoint2;
-        attributePathParams3[2].mClusterId             = Test::MockClusterId(2);
+        attributePathParams3[2].mEndpointId            = chip::Test::kMockEndpoint2;
+        attributePathParams3[2].mClusterId             = chip::Test::MockClusterId(2);
         attributePathParams3[2].mAttributeId           = kInvalidAttributeId;
         readPrepareParams.mpAttributePathParamsList    = attributePathParams3;
         readPrepareParams.mAttributePathParamsListSize = 3;
@@ -1234,20 +1272,21 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 7);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath1(Test::kMockEndpoint2, Test::MockClusterId(3));
+        app::ConcreteClusterPath clusterPath1(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath1, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue() && (version1.Value() == 2));
         Optional version2;
-        app::ConcreteClusterPath clusterPath2(Test::kMockEndpoint2, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath2(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath2, version2) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version2.HasValue() && (version2.Value() == 2));
         Optional version3;
-        app::ConcreteClusterPath clusterPath3(Test::kMockEndpoint1, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath3(chip::Test::kMockEndpoint1, chip::Test::MockClusterId(2));
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath3, version3) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version3.HasValue() && (version3.Value() == 2));
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint1, Test::MockClusterId(2), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint1, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1256,7 +1295,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1265,7 +1305,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1274,7 +1315,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(3), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(3),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -1283,7 +1325,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(2), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1292,7 +1335,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint2, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint2, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1312,8 +1356,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         app::ReadClient readClient(chip::app::InteractionModelEngine::GetInstance(), &ctx.GetExchangeManager(),
                                    cache.GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
         chip::app::AttributePathParams attributePathParams1[1];
-        attributePathParams1[0].mEndpointId = Test::kMockEndpoint3;
-        attributePathParams1[0].mClusterId  = Test::MockClusterId(2);
+        attributePathParams1[0].mEndpointId = chip::Test::kMockEndpoint3;
+        attributePathParams1[0].mClusterId  = chip::Test::MockClusterId(2);
 
         readPrepareParams.mpAttributePathParamsList    = attributePathParams1;
         readPrepareParams.mAttributePathParamsListSize = 1;
@@ -1324,13 +1368,14 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         NL_TEST_ASSERT(apSuite, delegate.mNumAttributeResponse == 6);
         NL_TEST_ASSERT(apSuite, !delegate.mReadError);
         Optional version1;
-        app::ConcreteClusterPath clusterPath(Test::kMockEndpoint3, Test::MockClusterId(2));
+        app::ConcreteClusterPath clusterPath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2));
 
         NL_TEST_ASSERT(apSuite, cache.GetVersion(clusterPath, version1) == CHIP_NO_ERROR);
         NL_TEST_ASSERT(apSuite, version1.HasValue());
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(1));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(1));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             bool receivedAttribute1;
@@ -1339,7 +1384,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(2));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(2));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             int16_t receivedAttribute2;
@@ -1348,7 +1394,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(3));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(3));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint64_t receivedAttribute3;
@@ -1357,7 +1404,8 @@ void TestReadInteraction::TestReadSubscribeAttributeResponseWithCache(nlTestSuit
         }
 
         {
-            app::ConcreteAttributePath attributePath(Test::kMockEndpoint3, Test::MockClusterId(2), Test::MockAttributeId(4));
+            app::ConcreteAttributePath attributePath(chip::Test::kMockEndpoint3, chip::Test::MockClusterId(2),
+                                                     chip::Test::MockAttributeId(4));
             TLV::TLVReader reader;
             NL_TEST_ASSERT(apSuite, cache.Get(attributePath, reader) == CHIP_NO_ERROR);
             uint8_t receivedAttribute4[256];
@@ -1393,8 +1441,8 @@ void TestReadInteraction::TestReadEventResponse(nlTestSuite * apSuite, void * ap
 
     auto onDoneCb = [&onDoneCbInvoked](app::ReadClient * apReadClient) { onDoneCbInvoked = true; };
 
-    Controller::ReadEvent(&ctx.GetExchangeManager(), sessionHandle, kTestEndpointId,
-                                                                         onSuccessCb, onFailureCb, onDoneCb);
+    Controller::ReadEvent(
+        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, onDoneCb);
 
     ctx.DrainAndServiceIO();
 
@@ -1427,8 +1475,8 @@ void TestReadInteraction::TestReadAttributeError(nlTestSuite * apSuite, void * a
         onFailureCbInvoked = true;
     };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
-                                                                                        kTestEndpointId, onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(
+        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -1459,8 +1507,8 @@ void TestReadInteraction::TestReadAttributeTimeout(nlTestSuite * apSuite, void *
         onFailureCbInvoked = true;
     };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
-                                                                                        kTestEndpointId, onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(
+        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.ExpireSessionAliceToBob();
 
@@ -1544,7 +1592,7 @@ void TestReadInteraction::TestResubscribeAttributeTimeout(nlTestSuite * apSuite,
     TestContext & ctx  = *static_cast(apContext);
     auto sessionHandle = ctx.GetSessionBobToAlice();
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kResponsive);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kResponsive);
 
     {
         TestResubscriptionCallback callback;
@@ -1560,8 +1608,8 @@ void TestReadInteraction::TestResubscribeAttributeTimeout(nlTestSuite * apSuite,
         readPrepareParams.mpAttributePathParamsList    = attributePathParams;
         readPrepareParams.mAttributePathParamsListSize = ArraySize(attributePathParams);
         attributePathParams[0].mEndpointId             = kTestEndpointId;
-        attributePathParams[0].mClusterId              = app::Clusters::TestCluster::Id;
-        attributePathParams[0].mAttributeId            = app::Clusters::TestCluster::Attributes::Boolean::Id;
+        attributePathParams[0].mClusterId              = app::Clusters::UnitTesting::Id;
+        attributePathParams[0].mAttributeId            = app::Clusters::UnitTesting::Attributes::Boolean::Id;
 
         readPrepareParams.mMaxIntervalCeilingSeconds = 1;
 
@@ -1582,7 +1630,7 @@ void TestReadInteraction::TestResubscribeAttributeTimeout(nlTestSuite * apSuite,
         //
         // 1.5s should cover the liveness timeout in the client of 1s max interval + 50ms ACK timeout.
         //
-        ctx.GetLoopback().mNumMessagesToDrop = Test::LoopbackTransport::kUnlimitedMessageCount;
+        ctx.GetLoopback().mNumMessagesToDrop = chip::Test::LoopbackTransport::kUnlimitedMessageCount;
         ctx.GetIOContext().DriveIOUntil(System::Clock::Milliseconds32(1500),
                                         [&]() { return callback.mOnResubscriptionsAttempted > 0; });
 
@@ -1606,7 +1654,7 @@ void TestReadInteraction::TestResubscribeAttributeTimeout(nlTestSuite * apSuite,
         NL_TEST_ASSERT(apSuite, callback.mOnDone == 0);
     }
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kDefault);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kDefault);
 
     app::InteractionModelEngine::GetInstance()->ShutdownActiveReads();
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
@@ -1621,7 +1669,7 @@ void TestReadInteraction::TestSubscribeAttributeTimeout(nlTestSuite * apSuite, v
     TestContext & ctx  = *static_cast(apContext);
     auto sessionHandle = ctx.GetSessionBobToAlice();
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kResponsive);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kResponsive);
 
     {
         TestResubscriptionCallback callback;
@@ -1636,8 +1684,8 @@ void TestReadInteraction::TestSubscribeAttributeTimeout(nlTestSuite * apSuite, v
         readPrepareParams.mpAttributePathParamsList    = attributePathParams;
         readPrepareParams.mAttributePathParamsListSize = ArraySize(attributePathParams);
         attributePathParams[0].mEndpointId             = kTestEndpointId;
-        attributePathParams[0].mClusterId              = app::Clusters::TestCluster::Id;
-        attributePathParams[0].mAttributeId            = app::Clusters::TestCluster::Attributes::Boolean::Id;
+        attributePathParams[0].mClusterId              = app::Clusters::UnitTesting::Id;
+        attributePathParams[0].mAttributeId            = app::Clusters::UnitTesting::Attributes::Boolean::Id;
 
         //
         // Request a max interval that's very small to reduce time to discovering a liveness failure.
@@ -1657,7 +1705,7 @@ void TestReadInteraction::TestSubscribeAttributeTimeout(nlTestSuite * apSuite, v
         //
         // Request we drop all further messages.
         //
-        ctx.GetLoopback().mNumMessagesToDrop = Test::LoopbackTransport::kUnlimitedMessageCount;
+        ctx.GetLoopback().mNumMessagesToDrop = chip::Test::LoopbackTransport::kUnlimitedMessageCount;
 
         //
         // Drive IO until we get an error on the subscription, which should be caused
@@ -1673,7 +1721,7 @@ void TestReadInteraction::TestSubscribeAttributeTimeout(nlTestSuite * apSuite, v
         NL_TEST_ASSERT(apSuite, callback.mOnResubscriptionsAttempted == 0);
     }
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kDefault);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kDefault);
 
     app::InteractionModelEngine::GetInstance()->ShutdownActiveReads();
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
@@ -1722,7 +1770,7 @@ void TestReadInteraction::TestReadHandler_MultipleSubscriptions(nlTestSuite * ap
     for (size_t i = 0; i < (app::InteractionModelEngine::kReadHandlerPoolSize + 1); i++)
     {
         NL_TEST_ASSERT(apSuite,
-                       Controller::SubscribeAttribute(
+                       Controller::SubscribeAttribute(
                            &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 20,
                            onSubscriptionEstablishedCb, nullptr, false, true) == CHIP_NO_ERROR);
     }
@@ -1744,7 +1792,7 @@ void TestReadInteraction::TestReadHandler_MultipleSubscriptions(nlTestSuite * ap
     NL_TEST_ASSERT(apSuite, gTestReadInteraction.mNumActiveSubscriptions == 0);
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kDefault);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kDefault);
     app::InteractionModelEngine::GetInstance()->UnregisterReadHandlerAppCallback();
 }
 
@@ -1786,7 +1834,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionAppRejection(nlTestSuite *
     gTestReadInteraction.mEmitSubscriptionError = true;
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                        onSubscriptionEstablishedCb, nullptr, false, true) == CHIP_NO_ERROR);
 
@@ -1859,7 +1907,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest1(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = false;
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 5, 5,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -1934,7 +1982,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest2(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = false;
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2009,7 +2057,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest3(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = true;
     gTestReadInteraction.mMaxInterval                = 3000;
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2075,7 +2123,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest4(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = true;
     gTestReadInteraction.mMaxInterval                = 3700;
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2149,7 +2197,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest5(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = false;
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 4000,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2224,7 +2272,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest6(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = true;
     gTestReadInteraction.mMaxInterval                = 3000;
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 4000,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2298,7 +2346,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest7(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = true;
     gTestReadInteraction.mMaxInterval                = 3700;
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 4000,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2363,7 +2411,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest8(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = true;
     gTestReadInteraction.mMaxInterval                = 4100;
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 4000,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_NO_ERROR);
 
@@ -2427,7 +2475,7 @@ void TestReadInteraction::TestReadHandler_SubscriptionReportingIntervalsTest9(nl
     gTestReadInteraction.mAlterSubscriptionIntervals = false;
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::SubscribeAttribute(
+                   Controller::SubscribeAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 5, 4,
                        onSubscriptionEstablishedCb, nullptr, true) == CHIP_ERROR_INVALID_ARGUMENT);
 
@@ -2532,7 +2580,7 @@ void TestReadInteraction::SubscribeThenReadHelper(nlTestSuite * apSuite, TestCon
     for (size_t i = 0; i < aSubscribeCount; ++i)
     {
         NL_TEST_ASSERT(apSuite,
-                       Controller::SubscribeAttribute(
+                       Controller::SubscribeAttribute(
                            &aCtx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                            onSubscriptionEstablishedCb, nullptr, false, true) == CHIP_NO_ERROR);
     }
@@ -2574,7 +2622,7 @@ void TestReadInteraction::MultipleReadHelperInternal(nlTestSuite * apSuite, Test
         };
 
         NL_TEST_ASSERT(apSuite,
-                       Controller::ReadAttribute(
+                       Controller::ReadAttribute(
                            &aCtx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb) == CHIP_NO_ERROR);
     }
 }
@@ -2631,7 +2679,7 @@ void TestReadInteraction::TestReadHandler_MultipleSubscriptionsWithDataVersionFi
     for (size_t i = 0; i < (app::InteractionModelEngine::kReadHandlerPoolSize + 1); i++)
     {
         NL_TEST_ASSERT(apSuite,
-                       Controller::SubscribeAttribute(
+                       Controller::SubscribeAttribute(
                            &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, 0, 10,
                            onSubscriptionEstablishedCb, nullptr, false, true, dataVersion) == CHIP_NO_ERROR);
     }
@@ -2682,7 +2730,7 @@ void TestReadInteraction::TestReadHandlerResourceExhaustion_MultipleReads(nlTest
     app::InteractionModelEngine::GetInstance()->SetForceHandlerQuota(true);
 
     NL_TEST_ASSERT(apSuite,
-                   Controller::ReadAttribute(
+                   Controller::ReadAttribute(
                        &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb) == CHIP_NO_ERROR);
 
     ctx.DrainAndServiceIO();
@@ -2733,7 +2781,7 @@ void TestReadInteraction::TestReadFabricScopedWithoutFabricFilter(nlTestSuite *
         onFailureCbInvoked = true;
     };
 
-    Controller::ReadAttribute(
+    Controller::ReadAttribute(
         &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, false /* fabric filtered */);
 
     ctx.DrainAndServiceIO();
@@ -2789,7 +2837,7 @@ void TestReadInteraction::TestReadFabricScopedWithFabricFilter(nlTestSuite * apS
         onFailureCbInvoked = true;
     };
 
-    Controller::ReadAttribute(
+    Controller::ReadAttribute(
         &ctx.GetExchangeManager(), sessionHandle, kTestEndpointId, onSuccessCb, onFailureCb, true /* fabric filtered */);
 
     ctx.DrainAndServiceIO();
@@ -2901,7 +2949,7 @@ void TestReadInteraction::TestSubscribeAttributeDeniedNotExistPath(nlTestSuite *
     TestContext & ctx  = *static_cast(apContext);
     auto sessionHandle = ctx.GetSessionBobToAlice();
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kResponsive);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kResponsive);
 
     {
         SubscriptionPathQuotaHelpers::TestReadCallback callback;
@@ -2913,8 +2961,8 @@ void TestReadInteraction::TestSubscribeAttributeDeniedNotExistPath(nlTestSuite *
         app::AttributePathParams attributePathParams[1];
         readPrepareParams.mpAttributePathParamsList    = attributePathParams;
         readPrepareParams.mAttributePathParamsListSize = ArraySize(attributePathParams);
-        attributePathParams[0].mClusterId              = app::Clusters::TestCluster::Id;
-        attributePathParams[0].mAttributeId            = app::Clusters::TestCluster::Attributes::ListStructOctetString::Id;
+        attributePathParams[0].mClusterId              = app::Clusters::UnitTesting::Id;
+        attributePathParams[0].mAttributeId            = app::Clusters::UnitTesting::Attributes::ListStructOctetString::Id;
 
         //
         // Request a max interval that's very small to reduce time to discovering a liveness failure.
@@ -2931,7 +2979,7 @@ void TestReadInteraction::TestSubscribeAttributeDeniedNotExistPath(nlTestSuite *
         NL_TEST_ASSERT(apSuite, callback.mOnDone == 1);
     }
 
-    ctx.SetMRPMode(Test::MessagingContext::MRPMode::kDefault);
+    ctx.SetMRPMode(chip::Test::MessagingContext::MRPMode::kDefault);
 
     app::InteractionModelEngine::GetInstance()->ShutdownActiveReads();
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
@@ -2958,10 +3006,10 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
     std::vector> readClients;
 
     EstablishReadOrSubscriptions(apSuite, ctx.GetSessionAliceToBob(), 1, 1,
-                                 app::AttributePathParams(kTestEndpointId, TestCluster::Id, kPerpetualAttributeid),
+                                 app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, kPerpetualAttributeid),
                                  app::ReadClient::InteractionType::Read, &perpetualReadCallback, readClients);
     EstablishReadOrSubscriptions(apSuite, ctx.GetSessionBobToAlice(), 1, 1,
-                                 app::AttributePathParams(kTestEndpointId, TestCluster::Id, kPerpetualAttributeid),
+                                 app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, kPerpetualAttributeid),
                                  app::ReadClient::InteractionType::Read, &perpetualReadCallback, readClients);
     ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() {
         return app::InteractionModelEngine::GetInstance()->GetNumActiveReadHandlers(app::ReadHandler::InteractionType::Read) == 2;
@@ -2980,15 +3028,15 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
     // of the minimum later below.
     //
     // Subscription A
-    EstablishReadOrSubscriptions(apSuite, ctx.GetSessionBobToAlice(), 1,
-                                 app::InteractionModelEngine::kMinSupportedPathsPerSubscription + 1,
-                                 app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
-                                 app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
+    EstablishReadOrSubscriptions(
+        apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerSubscription + 1,
+        app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
+        app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
     // Subscription B
-    EstablishReadOrSubscriptions(apSuite, ctx.GetSessionBobToAlice(), kExpectedParallelSubs,
-                                 app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
-                                 app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
-                                 app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
+    EstablishReadOrSubscriptions(
+        apSuite, ctx.GetSessionBobToAlice(), kExpectedParallelSubs, app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
+        app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
+        app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
 
     // There are too many messages and the test (gcc_debug, which includes many sanity checks) will be quite slow. Note: report
     // engine is using ScheduleWork which cannot be handled by DrainAndServiceIO correctly.
@@ -3020,7 +3068,7 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
         std::vector> outReadClient;
         EstablishReadOrSubscriptions(
             apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerSubscription + 1,
-            app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+            app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
             app::ReadClient::InteractionType::Subscribe, &callback, outReadClient);
 
         ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return callback.mOnError == 1; });
@@ -3035,7 +3083,7 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
     {
         EstablishReadOrSubscriptions(
             apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
-            app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+            app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
             app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
 
         readCallback.ClearCounters();
@@ -3058,8 +3106,8 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
     {
         app::AttributePathParams path;
         path.mEndpointId  = kTestEndpointId;
-        path.mClusterId   = TestCluster::Id;
-        path.mAttributeId = TestCluster::Attributes::Int16u::Id;
+        path.mClusterId   = Clusters::UnitTesting::Id;
+        path.mAttributeId = Clusters::UnitTesting::Attributes::Int16u::Id;
         app::InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path);
     }
     readCallback.ClearCounters();
@@ -3091,7 +3139,7 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
         EstablishReadOrSubscriptions(
             apSuite, ctx.GetSessionAliceToBob(), app::InteractionModelEngine::kMinSupportedSubscriptionsPerFabric,
             app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
-            app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+            app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
             app::ReadClient::InteractionType::Subscribe, &readCallbackFabric2, readClients);
 
         // Run until we have established the subscriptions.
@@ -3117,8 +3165,8 @@ void TestReadInteraction::TestReadHandler_KillOverQuotaSubscriptions(nlTestSuite
     {
         app::AttributePathParams path;
         path.mEndpointId  = kTestEndpointId;
-        path.mClusterId   = TestCluster::Id;
-        path.mAttributeId = TestCluster::Attributes::Int16u::Id;
+        path.mClusterId   = Clusters::UnitTesting::Id;
+        path.mAttributeId = Clusters::UnitTesting::Attributes::Int16u::Id;
         app::InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path);
     }
     readCallback.ClearCounters();
@@ -3183,10 +3231,10 @@ void TestReadInteraction::TestReadHandler_KillOldestSubscriptions(nlTestSuite *
     app::InteractionModelEngine::GetInstance()->SetPathPoolCapacityForSubscriptions(kExpectedParallelPaths);
 
     // This should just use all availbale resources.
-    EstablishReadOrSubscriptions(apSuite, ctx.GetSessionBobToAlice(), kExpectedParallelSubs,
-                                 app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
-                                 app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
-                                 app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
+    EstablishReadOrSubscriptions(
+        apSuite, ctx.GetSessionBobToAlice(), kExpectedParallelSubs, app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
+        app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
+        app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
 
     ctx.DrainAndServiceIO();
 
@@ -3205,7 +3253,7 @@ void TestReadInteraction::TestReadHandler_KillOldestSubscriptions(nlTestSuite *
         std::vector> outReadClient;
         EstablishReadOrSubscriptions(
             apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerSubscription + 1,
-            app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+            app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
             app::ReadClient::InteractionType::Subscribe, &callback, outReadClient);
 
         ctx.DrainAndServiceIO();
@@ -3219,7 +3267,7 @@ void TestReadInteraction::TestReadHandler_KillOldestSubscriptions(nlTestSuite *
     {
         EstablishReadOrSubscriptions(
             apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerSubscription,
-            app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+            app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
             app::ReadClient::InteractionType::Subscribe, &readCallback, readClients);
         readCallback.ClearCounters();
 
@@ -3236,8 +3284,8 @@ void TestReadInteraction::TestReadHandler_KillOldestSubscriptions(nlTestSuite *
     {
         app::AttributePathParams path;
         path.mEndpointId  = kTestEndpointId;
-        path.mClusterId   = TestCluster::Id;
-        path.mAttributeId = TestCluster::Attributes::Int16u::Id;
+        path.mClusterId   = Clusters::UnitTesting::Id;
+        path.mAttributeId = Clusters::UnitTesting::Attributes::Int16u::Id;
         app::InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path);
     }
     readCallback.ClearCounters();
@@ -3341,7 +3389,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest + 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3384,7 +3432,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest + 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3425,7 +3473,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest + 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3476,7 +3524,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3525,7 +3573,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3581,7 +3629,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3637,7 +3685,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3688,7 +3736,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3742,7 +3790,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3800,7 +3848,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionCharlieToDavid(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3855,7 +3903,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionCharlieToDavid(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3911,7 +3959,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionCharlieToDavid(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -3958,7 +4006,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionCharlieToDavid(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
 
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
@@ -4003,7 +4051,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
 
@@ -4049,7 +4097,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionBobToAlice(), 1, 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
 
@@ -4100,7 +4148,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
 
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionBobToAlice(), 1, 1,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
 
@@ -4154,7 +4202,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
             // We have to evict one read transaction on PASE session and one read transaction on Alice's fabric.
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionAliceToBob(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
 
@@ -4216,7 +4264,7 @@ void TestReadInteraction::TestReadHandler_ParallelReads(nlTestSuite * apSuite, v
             // To handle this read request, we must evict both read transactions from the PASE session.
             EstablishReadOrSubscriptions(
                 apSuite, ctx.GetSessionBobToAlice(), 1, app::InteractionModelEngine::kMinSupportedPathsPerReadRequest,
-                app::AttributePathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id),
+                app::AttributePathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id),
                 app::ReadClient::InteractionType::Read, &readCallback, readClients);
             ctx.GetIOContext().DriveIOUntil(System::Clock::Seconds16(5), [&]() { return readCallback.mOnDone != 0; });
 
@@ -4374,8 +4422,8 @@ void TestReadInteraction::TestReadAttribute_ManyDataValues(nlTestSuite * apSuite
     // not safe to do so.
     auto onFailureCb = [&failureCalls](const app::ConcreteDataAttributePath * attributePath, CHIP_ERROR aError) { ++failureCalls; };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle, kTestEndpointId,
-                                                                          onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
+                                                                                    kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -4408,8 +4456,8 @@ void TestReadInteraction::TestReadAttribute_ManyDataValuesWrongPath(nlTestSuite
     // not safe to do so.
     auto onFailureCb = [&failureCalls](const app::ConcreteDataAttributePath * attributePath, CHIP_ERROR aError) { ++failureCalls; };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle, kTestEndpointId,
-                                                                          onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
+                                                                                    kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -4442,8 +4490,8 @@ void TestReadInteraction::TestReadAttribute_ManyErrors(nlTestSuite * apSuite, vo
     // not safe to do so.
     auto onFailureCb = [&failureCalls](const app::ConcreteDataAttributePath * attributePath, CHIP_ERROR aError) { ++failureCalls; };
 
-    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle, kTestEndpointId,
-                                                                          onSuccessCb, onFailureCb);
+    Controller::ReadAttribute(&ctx.GetExchangeManager(), sessionHandle,
+                                                                                    kTestEndpointId, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -4466,7 +4514,7 @@ void TestReadInteraction::TestReadHandler_KeepSubscriptionTest(nlTestSuite * apS
 
     TestContext & ctx = *static_cast(apContext);
     TestReadCallback readCallback;
-    app::AttributePathParams pathParams(kTestEndpointId, TestCluster::Id, TestCluster::Attributes::Int16u::Id);
+    app::AttributePathParams pathParams(kTestEndpointId, Clusters::UnitTesting::Id, Clusters::UnitTesting::Attributes::Int16u::Id);
 
     app::ReadPrepareParams readParam(ctx.GetSessionAliceToBob());
     readParam.mpAttributePathParamsList    = &pathParams;
diff --git a/src/controller/tests/data_model/TestWrite.cpp b/src/controller/tests/data_model/TestWrite.cpp
index 948bb0113108ab..a24c3a2bcfdf4c 100644
--- a/src/controller/tests/data_model/TestWrite.cpp
+++ b/src/controller/tests/data_model/TestWrite.cpp
@@ -34,7 +34,7 @@ using TestContext = chip::Test::AppContext;
 using namespace chip;
 using namespace chip::app;
 using namespace chip::app::Clusters;
-using namespace chip::app::Clusters::TestCluster;
+using namespace chip::app::Clusters::UnitTesting;
 using namespace chip::Protocols;
 
 namespace {
@@ -75,7 +75,8 @@ CHIP_ERROR WriteSingleClusterData(const Access::SubjectDescriptor & aSubjectDesc
         return aWriteHandler->AddStatus(aPath, Protocols::InteractionModel::Status::DataVersionMismatch);
     }
 
-    if (aPath.mClusterId == TestCluster::Id && aPath.mAttributeId == Attributes::ListStructOctetString::TypeInfo::GetAttributeId())
+    if (aPath.mClusterId == Clusters::UnitTesting::Id &&
+        aPath.mAttributeId == Attributes::ListStructOctetString::TypeInfo::GetAttributeId())
     {
         if (responseDirective == kSendAttributeSuccess)
         {
@@ -119,7 +120,7 @@ CHIP_ERROR WriteSingleClusterData(const Access::SubjectDescriptor & aSubjectDesc
 
         return CHIP_NO_ERROR;
     }
-    if (aPath.mClusterId == TestCluster::Id && aPath.mAttributeId == Attributes::ListFabricScoped::Id)
+    if (aPath.mClusterId == Clusters::UnitTesting::Id && aPath.mAttributeId == Attributes::ListFabricScoped::Id)
     {
         // Mock a invalid SubjectDescriptor
         AttributeValueDecoder decoder(aReader, Access::SubjectDescriptor());
@@ -152,7 +153,7 @@ CHIP_ERROR WriteSingleClusterData(const Access::SubjectDescriptor & aSubjectDesc
         return CHIP_NO_ERROR;
     }
 
-    if (aPath.mClusterId == TestCluster::Id && aPath.mAttributeId == Attributes::Boolean::TypeInfo::GetAttributeId())
+    if (aPath.mClusterId == Clusters::UnitTesting::Id && aPath.mAttributeId == Attributes::Boolean::TypeInfo::GetAttributeId())
     {
         InteractionModel::Status status;
         if (responseDirective == kSendMultipleSuccess)
@@ -203,8 +204,8 @@ void TestWriteInteraction::TestDataResponse(nlTestSuite * apSuite, void * apCont
     TestContext & ctx       = *static_cast(apContext);
     auto sessionHandle      = ctx.GetSessionBobToAlice();
     bool onSuccessCbInvoked = false, onFailureCbInvoked = false;
-    TestCluster::Structs::TestListStructOctet::Type valueBuf[4];
-    TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
+    Clusters::UnitTesting::Structs::TestListStructOctet::Type valueBuf[4];
+    Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
 
     value = valueBuf;
 
@@ -227,8 +228,8 @@ void TestWriteInteraction::TestDataResponse(nlTestSuite * apSuite, void * apCont
         onFailureCbInvoked = true;
     };
 
-    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId,
-                                                                                               value, onSuccessCb, onFailureCb);
+    chip::Controller::WriteAttribute(
+        sessionHandle, kTestEndpointId, value, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -242,8 +243,8 @@ void TestWriteInteraction::TestDataResponseWithAcceptedDataVersion(nlTestSuite *
     TestContext & ctx       = *static_cast(apContext);
     auto sessionHandle      = ctx.GetSessionBobToAlice();
     bool onSuccessCbInvoked = false, onFailureCbInvoked = false;
-    TestCluster::Structs::TestListStructOctet::Type valueBuf[4];
-    TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
+    Clusters::UnitTesting::Structs::TestListStructOctet::Type valueBuf[4];
+    Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
 
     value = valueBuf;
 
@@ -268,7 +269,7 @@ void TestWriteInteraction::TestDataResponseWithAcceptedDataVersion(nlTestSuite *
 
     chip::Optional dataVersion;
     dataVersion.SetValue(kAcceptedDataVersion);
-    chip::Controller::WriteAttribute(
+    chip::Controller::WriteAttribute(
         sessionHandle, kTestEndpointId, value, onSuccessCb, onFailureCb, nullptr, dataVersion);
 
     ctx.DrainAndServiceIO();
@@ -283,8 +284,8 @@ void TestWriteInteraction::TestDataResponseWithRejectedDataVersion(nlTestSuite *
     TestContext & ctx       = *static_cast(apContext);
     auto sessionHandle      = ctx.GetSessionBobToAlice();
     bool onSuccessCbInvoked = false, onFailureCbInvoked = false;
-    TestCluster::Structs::TestListStructOctet::Type valueBuf[4];
-    TestCluster::Attributes::ListStructOctetString::TypeInfo::Type value;
+    Clusters::UnitTesting::Structs::TestListStructOctet::Type valueBuf[4];
+    Clusters::UnitTesting::Attributes::ListStructOctetString::TypeInfo::Type value;
 
     value = valueBuf;
 
@@ -308,7 +309,7 @@ void TestWriteInteraction::TestDataResponseWithRejectedDataVersion(nlTestSuite *
     };
 
     chip::Optional dataVersion(kRejectedDataVersion);
-    chip::Controller::WriteAttribute(
+    chip::Controller::WriteAttribute(
         sessionHandle, kTestEndpointId, value, onSuccessCb, onFailureCb, nullptr, dataVersion);
 
     ctx.DrainAndServiceIO();
@@ -363,8 +364,8 @@ void TestWriteInteraction::TestFabricScopedAttributeWithoutFabricIndex(nlTestSui
     TestContext & ctx       = *static_cast(apContext);
     auto sessionHandle      = ctx.GetSessionBobToAlice();
     bool onSuccessCbInvoked = false, onFailureCbInvoked = false;
-    TestCluster::Structs::TestFabricScoped::Type valueBuf[4];
-    TestCluster::Attributes::ListFabricScoped::TypeInfo::Type value;
+    Clusters::UnitTesting::Structs::TestFabricScoped::Type valueBuf[4];
+    Clusters::UnitTesting::Attributes::ListFabricScoped::TypeInfo::Type value;
 
     value = valueBuf;
 
@@ -386,8 +387,8 @@ void TestWriteInteraction::TestFabricScopedAttributeWithoutFabricIndex(nlTestSui
         onFailureCbInvoked = true;
     };
 
-    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId, value,
-                                                                                          onSuccessCb, onFailureCb);
+    chip::Controller::WriteAttribute(
+        sessionHandle, kTestEndpointId, value, onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -413,8 +414,8 @@ void TestWriteInteraction::TestMultipleSuccessResponses(nlTestSuite * apSuite, v
     // not safe to do so.
     auto onFailureCb = [&failureCalls](const ConcreteAttributePath * attributePath, CHIP_ERROR aError) { ++failureCalls; };
 
-    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId, true, onSuccessCb,
-                                                                                 onFailureCb);
+    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId, true,
+                                                                                           onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
@@ -441,8 +442,8 @@ void TestWriteInteraction::TestMultipleFailureResponses(nlTestSuite * apSuite, v
     // not safe to do so.
     auto onFailureCb = [&failureCalls](const ConcreteAttributePath * attributePath, CHIP_ERROR aError) { ++failureCalls; };
 
-    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId, true, onSuccessCb,
-                                                                                 onFailureCb);
+    chip::Controller::WriteAttribute(sessionHandle, kTestEndpointId, true,
+                                                                                           onSuccessCb, onFailureCb);
 
     ctx.DrainAndServiceIO();
 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 10ed208a4f3980..010ca73af2f340 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -16082,8 +16082,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
         }
         break;
     }
-    case Clusters::TestCluster::Id: {
-        using namespace Clusters::TestCluster;
+    case Clusters::UnitTesting::Id: {
+        using namespace Clusters::UnitTesting;
         switch (aPath.mAttributeId) {
         case Attributes::Boolean::Id: {
             using TypeInfo = Attributes::Boolean::TypeInfo;
@@ -16436,8 +16436,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                 auto iter_0 = cppValue.begin();
                 while (iter_0.Next()) {
                     auto & entry_0 = iter_0.GetValue();
-                    MTRTestClusterClusterTestListStructOctet * newElement_0;
-                    newElement_0 = [MTRTestClusterClusterTestListStructOctet new];
+                    MTRUnitTestingClusterTestListStructOctet * newElement_0;
+                    newElement_0 = [MTRUnitTestingClusterTestListStructOctet new];
                     newElement_0.member1 = [NSNumber numberWithUnsignedLongLong:entry_0.member1];
                     newElement_0.member2 = [NSData dataWithBytes:entry_0.member2.data() length:entry_0.member2.size()];
                     [array_0 addObject:newElement_0];
@@ -16530,8 +16530,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                 auto iter_0 = cppValue.begin();
                 while (iter_0.Next()) {
                     auto & entry_0 = iter_0.GetValue();
-                    MTRTestClusterClusterNullablesAndOptionalsStruct * newElement_0;
-                    newElement_0 = [MTRTestClusterClusterNullablesAndOptionalsStruct new];
+                    MTRUnitTestingClusterNullablesAndOptionalsStruct * newElement_0;
+                    newElement_0 = [MTRUnitTestingClusterNullablesAndOptionalsStruct new];
                     if (entry_0.nullableInt.IsNull()) {
                         newElement_0.nullableInt = nil;
                     } else {
@@ -16581,7 +16581,7 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                     if (entry_0.nullableStruct.IsNull()) {
                         newElement_0.nullableStruct = nil;
                     } else {
-                        newElement_0.nullableStruct = [MTRTestClusterClusterSimpleStruct new];
+                        newElement_0.nullableStruct = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_0.nullableStruct.a = [NSNumber numberWithUnsignedChar:entry_0.nullableStruct.Value().a];
                         newElement_0.nullableStruct.b = [NSNumber numberWithBool:entry_0.nullableStruct.Value().b];
                         newElement_0.nullableStruct.c =
@@ -16596,7 +16596,7 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                         newElement_0.nullableStruct.h = [NSNumber numberWithDouble:entry_0.nullableStruct.Value().h];
                     }
                     if (entry_0.optionalStruct.HasValue()) {
-                        newElement_0.optionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                        newElement_0.optionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_0.optionalStruct.a = [NSNumber numberWithUnsignedChar:entry_0.optionalStruct.Value().a];
                         newElement_0.optionalStruct.b = [NSNumber numberWithBool:entry_0.optionalStruct.Value().b];
                         newElement_0.optionalStruct.c =
@@ -16616,7 +16616,7 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                         if (entry_0.nullableOptionalStruct.Value().IsNull()) {
                             newElement_0.nullableOptionalStruct = nil;
                         } else {
-                            newElement_0.nullableOptionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                            newElement_0.nullableOptionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                             newElement_0.nullableOptionalStruct.a =
                                 [NSNumber numberWithUnsignedChar:entry_0.nullableOptionalStruct.Value().Value().a];
                             newElement_0.nullableOptionalStruct.b =
@@ -16733,8 +16733,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
             if (*aError != CHIP_NO_ERROR) {
                 return nil;
             }
-            MTRTestClusterClusterSimpleStruct * _Nonnull value;
-            value = [MTRTestClusterClusterSimpleStruct new];
+            MTRUnitTestingClusterSimpleStruct * _Nonnull value;
+            value = [MTRUnitTestingClusterSimpleStruct new];
             value.a = [NSNumber numberWithUnsignedChar:cppValue.a];
             value.b = [NSNumber numberWithBool:cppValue.b];
             value.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.c)];
@@ -16828,8 +16828,8 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                 auto iter_0 = cppValue.begin();
                 while (iter_0.Next()) {
                     auto & entry_0 = iter_0.GetValue();
-                    MTRTestClusterClusterTestFabricScoped * newElement_0;
-                    newElement_0 = [MTRTestClusterClusterTestFabricScoped new];
+                    MTRUnitTestingClusterTestFabricScoped * newElement_0;
+                    newElement_0 = [MTRUnitTestingClusterTestFabricScoped new];
                     newElement_0.fabricSensitiveInt8u = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveInt8u];
                     if (entry_0.optionalFabricSensitiveInt8u.HasValue()) {
                         newElement_0.optionalFabricSensitiveInt8u =
@@ -16857,7 +16857,7 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
                         [[NSString alloc] initWithBytes:entry_0.fabricSensitiveCharString.data()
                                                  length:entry_0.fabricSensitiveCharString.size()
                                                encoding:NSUTF8StringEncoding];
-                    newElement_0.fabricSensitiveStruct = [MTRTestClusterClusterSimpleStruct new];
+                    newElement_0.fabricSensitiveStruct = [MTRUnitTestingClusterSimpleStruct new];
                     newElement_0.fabricSensitiveStruct.a = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveStruct.a];
                     newElement_0.fabricSensitiveStruct.b = [NSNumber numberWithBool:entry_0.fabricSensitiveStruct.b];
                     newElement_0.fabricSensitiveStruct.c =
@@ -17371,11 +17371,11 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader &
             if (*aError != CHIP_NO_ERROR) {
                 return nil;
             }
-            MTRTestClusterClusterSimpleStruct * _Nullable value;
+            MTRUnitTestingClusterSimpleStruct * _Nullable value;
             if (cppValue.IsNull()) {
                 value = nil;
             } else {
-                value = [MTRTestClusterClusterSimpleStruct new];
+                value = [MTRUnitTestingClusterSimpleStruct new];
                 value.a = [NSNumber numberWithUnsignedChar:cppValue.Value().a];
                 value.b = [NSNumber numberWithBool:cppValue.Value().b];
                 value.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.Value().c)];
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 7c4f33c5fe623a..73bf001670bd17 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -18322,88 +18322,88 @@ labels.
 @end
 
 /**
- * Cluster Test Cluster
+ * Cluster Unit Testing
  *    The Test Cluster is meant to validate the generated code
  */
-@interface MTRBaseClusterTestCluster : MTRCluster
+@interface MTRBaseClusterUnitTesting : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
                               endpointID:(NSNumber *)endpointID
                                    queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testNotHandledWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
-                    completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+                    completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testSpecificWithCompletion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithCompletion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testUnknownCommandWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
-                        completion:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
+                        completion:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
-                                 completion:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+                                 completion:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                       completion:
-                                          (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                          (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
-                                 completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+                                 completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
-                                       completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+                                       completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
-                                     completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+                                     completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
-                                    completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+                                    completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
-                                           completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+                                           completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
-                                               completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+                                               completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
-                                   completion:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+                                   completion:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
-                        completion:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+                        completion:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
-                                   completion:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+                                   completion:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                           completion:
                                               (void (^)(
-                                                  MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                                  MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
-                               completion:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+                               completion:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)timedInvokeRequestWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
-                                completion:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+                                completion:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)
-    testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+    testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         completion:
                                             (void (^)(
-                                                MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -19156,11 +19156,11 @@ labels.
                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
-- (void)readAttributeStructAttrWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeStructAttrWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 /**
@@ -19169,12 +19169,12 @@ labels.
  */
 - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                 reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                 reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                       completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -19976,11 +19976,11 @@ labels.
                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
-- (void)readAttributeNullableStructWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeNullableStructWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 /**
@@ -19989,12 +19989,12 @@ labels.
  */
 - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                     reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                     reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                           completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -21590,45 +21590,45 @@ typedef NS_ENUM(uint8_t, MTRApplicationBasicApplicationStatus) {
     MTRApplicationBasicApplicationStatusActiveVisibleNotFocus = 0x03,
 };
 
-typedef NS_ENUM(uint8_t, MTRTestClusterSimple) {
-    MTRTestClusterSimpleUnspecified = 0x00,
-    MTRTestClusterSimpleValueA = 0x01,
-    MTRTestClusterSimpleValueB = 0x02,
-    MTRTestClusterSimpleValueC = 0x03,
+typedef NS_ENUM(uint8_t, MTRUnitTestingSimple) {
+    MTRUnitTestingSimpleUnspecified = 0x00,
+    MTRUnitTestingSimpleValueA = 0x01,
+    MTRUnitTestingSimpleValueB = 0x02,
+    MTRUnitTestingSimpleValueC = 0x03,
 };
 
-typedef NS_OPTIONS(uint16_t, MTRTestClusterBitmap16MaskMap) {
-    MTRTestClusterBitmap16MaskMapMaskVal1 = 0x1,
-    MTRTestClusterBitmap16MaskMapMaskVal2 = 0x2,
-    MTRTestClusterBitmap16MaskMapMaskVal3 = 0x4,
-    MTRTestClusterBitmap16MaskMapMaskVal4 = 0x4000,
+typedef NS_OPTIONS(uint16_t, MTRUnitTestingBitmap16MaskMap) {
+    MTRUnitTestingBitmap16MaskMapMaskVal1 = 0x1,
+    MTRUnitTestingBitmap16MaskMapMaskVal2 = 0x2,
+    MTRUnitTestingBitmap16MaskMapMaskVal3 = 0x4,
+    MTRUnitTestingBitmap16MaskMapMaskVal4 = 0x4000,
 };
 
-typedef NS_OPTIONS(uint32_t, MTRTestClusterBitmap32MaskMap) {
-    MTRTestClusterBitmap32MaskMapMaskVal1 = 0x1,
-    MTRTestClusterBitmap32MaskMapMaskVal2 = 0x2,
-    MTRTestClusterBitmap32MaskMapMaskVal3 = 0x4,
-    MTRTestClusterBitmap32MaskMapMaskVal4 = 0x40000000,
+typedef NS_OPTIONS(uint32_t, MTRUnitTestingBitmap32MaskMap) {
+    MTRUnitTestingBitmap32MaskMapMaskVal1 = 0x1,
+    MTRUnitTestingBitmap32MaskMapMaskVal2 = 0x2,
+    MTRUnitTestingBitmap32MaskMapMaskVal3 = 0x4,
+    MTRUnitTestingBitmap32MaskMapMaskVal4 = 0x40000000,
 };
 
-typedef NS_OPTIONS(uint64_t, MTRTestClusterBitmap64MaskMap) {
-    MTRTestClusterBitmap64MaskMapMaskVal1 = 0x1,
-    MTRTestClusterBitmap64MaskMapMaskVal2 = 0x2,
-    MTRTestClusterBitmap64MaskMapMaskVal3 = 0x4,
-    MTRTestClusterBitmap64MaskMapMaskVal4 = 0x4000000000000000,
+typedef NS_OPTIONS(uint64_t, MTRUnitTestingBitmap64MaskMap) {
+    MTRUnitTestingBitmap64MaskMapMaskVal1 = 0x1,
+    MTRUnitTestingBitmap64MaskMapMaskVal2 = 0x2,
+    MTRUnitTestingBitmap64MaskMapMaskVal3 = 0x4,
+    MTRUnitTestingBitmap64MaskMapMaskVal4 = 0x4000000000000000,
 };
 
-typedef NS_OPTIONS(uint8_t, MTRTestClusterBitmap8MaskMap) {
-    MTRTestClusterBitmap8MaskMapMaskVal1 = 0x1,
-    MTRTestClusterBitmap8MaskMapMaskVal2 = 0x2,
-    MTRTestClusterBitmap8MaskMapMaskVal3 = 0x4,
-    MTRTestClusterBitmap8MaskMapMaskVal4 = 0x40,
+typedef NS_OPTIONS(uint8_t, MTRUnitTestingBitmap8MaskMap) {
+    MTRUnitTestingBitmap8MaskMapMaskVal1 = 0x1,
+    MTRUnitTestingBitmap8MaskMapMaskVal2 = 0x2,
+    MTRUnitTestingBitmap8MaskMapMaskVal3 = 0x4,
+    MTRUnitTestingBitmap8MaskMapMaskVal4 = 0x40,
 };
 
-typedef NS_OPTIONS(uint8_t, MTRTestClusterSimpleBitmap) {
-    MTRTestClusterSimpleBitmapValueA = 0x1,
-    MTRTestClusterSimpleBitmapValueB = 0x2,
-    MTRTestClusterSimpleBitmapValueC = 0x4,
+typedef NS_OPTIONS(uint8_t, MTRUnitTestingSimpleBitmap) {
+    MTRUnitTestingSimpleBitmapValueA = 0x1,
+    MTRUnitTestingSimpleBitmapValueB = 0x2,
+    MTRUnitTestingSimpleBitmapValueC = 0x4,
 };
 
 typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
@@ -40685,107 +40685,107 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
 
 @end
 
-@interface MTRBaseClusterTestCluster (Deprecated)
+@interface MTRBaseClusterUnitTesting (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpointID:queue:");
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
      completionHandler:(MTRStatusCompletion)completionHandler MTR_NEWLY_DEPRECATED("Please use testWithParams:completion:");
 - (void)testWithCompletionHandler:(MTRStatusCompletion)completionHandler MTR_NEWLY_DEPRECATED("Please use testWithCompletion:");
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithParams:completion:");
 - (void)testNotHandledWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithCompletion:");
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
-             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithParams:completion:");
 - (void)testSpecificWithCompletionHandler:
-    (void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
+    (void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithCompletion:");
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithParams:completion:");
 - (void)testUnknownCommandWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithCompletion:");
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
-                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testAddArgumentsWithParams:completion:");
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleArgumentRequestWithParams:completion:");
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                completionHandler:
-                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArrayArgumentRequestWithParams:completion:");
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArgumentRequestWithParams:completion:");
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
-                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructArgumentRequestWithParams:completion:");
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
-                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListStructArgumentRequestWithParams:completion:");
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
-                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UArgumentRequestWithParams:completion:");
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
-                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructListArgumentRequestWithParams:completion:");
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
-                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListNestedStructListArgumentRequestWithParams:completion:");
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
-                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UReverseRequestWithParams:completion:");
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
-                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEnumsRequestWithParams:completion:");
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
-                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNullableOptionalRequestWithParams:completion:");
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                    completionHandler:
-                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testComplexNullableOptionalRequestWithParams:completion:");
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
-                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use simpleStructEchoRequestWithParams:completion:");
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithParams:completion:");
 - (void)timedInvokeRequestWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithCompletion:");
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                   completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleOptionalArgumentRequestWithParams:completion:");
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
-                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestEventRequestWithParams:completion:");
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                      completionHandler:
                                          (void (^)(
-                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestFabricScopedEventRequestWithParams:completion:");
 
@@ -41596,12 +41596,12 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
     MTR_NEWLY_DEPRECATED("Please use readAttributeEnumAttrWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeStructAttrWithCompletionHandler:
-    (void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
+    (void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeStructAttrWithCompletion:");
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                         completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeStructAttrWithValue:completion:");
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                         completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeStructAttrWithValue:params:completion:");
@@ -41609,13 +41609,13 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
                                              params:(MTRSubscribeParams * _Nullable)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                      reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_DEPRECATED("Please use subscribeAttributeStructAttrWithParams:subscriptionEstablished:");
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeStructAttrWithAttributeCache:endpoint:queue:completion:");
 
@@ -42543,12 +42543,12 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableEnumAttrWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeNullableStructWithCompletionHandler:
-    (void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
+    (void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableStructWithCompletion:");
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                             completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeNullableStructWithValue:completion:");
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeNullableStructWithValue:params:completion:");
@@ -42556,13 +42556,13 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                          reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                          reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_DEPRECATED("Please use subscribeAttributeNullableStructWithParams:subscriptionEstablished:");
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                    completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                    completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableStructWithAttributeCache:endpoint:queue:completion:");
 
@@ -42668,32 +42668,27 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
 
 - (void)readAttributeWriteOnlyInt8uWithCompletionHandler:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
-        MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithCompletion:");
+    MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithCompletion:");
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
                             completionHandler:(MTRStatusCompletion)completionHandler
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
-        MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:completion:");
+    MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:completion:");
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
-        MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:params:completion:");
+    MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:params:completion:");
 - (void)subscribeAttributeWriteOnlyInt8uWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
-        MTR_NEWLY_DEPRECATED("Please use subscribeAttributeWriteOnlyInt8uWithParams:subscriptionEstablished:");
+    MTR_NEWLY_DEPRECATED("Please use subscribeAttributeWriteOnlyInt8uWithParams:subscriptionEstablished:");
 + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
-        MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithAttributeCache:endpoint:queue:completion:");
+    MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:
     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index ba602ab44f2664..40376187356587 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -121187,7 +121187,7 @@ - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16
 
 @end
 
-@implementation MTRBaseClusterTestCluster
+@implementation MTRBaseClusterUnitTesting
 
 - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
 {
@@ -121206,7 +121206,7 @@ - (void)testWithCompletion:(MTRStatusCompletion)completion
 {
     [self testWithParams:nil completion:completion];
 }
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params completion:(MTRStatusCompletion)completion
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
@@ -121219,14 +121219,14 @@ - (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params compl
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::Test::Type request;
+            UnitTesting::Commands::Test::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -121236,7 +121236,7 @@ - (void)testNotHandledWithCompletion:(MTRStatusCompletion)completion
 {
     [self testNotHandledWithParams:nil completion:completion];
 }
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                       completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
@@ -121250,44 +121250,44 @@ - (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _N
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestNotHandled::Type request;
+            UnitTesting::Commands::TestNotHandled::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testSpecificWithCompletion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithCompletion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion
 {
     [self testSpecificWithParams:nil completion:completion];
 }
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
-                    completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+                    completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestSpecific::Type request;
+            UnitTesting::Commands::TestSpecific::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -121297,7 +121297,7 @@ - (void)testUnknownCommandWithCompletion:(MTRStatusCompletion)completion
 {
     [self testUnknownCommandWithParams:nil completion:completion];
 }
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
@@ -121311,32 +121311,32 @@ - (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandPar
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestUnknownCommand::Type request;
+            UnitTesting::Commands::TestUnknownCommand::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
-                        completion:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
+                        completion:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestAddArguments::Type request;
+            UnitTesting::Commands::TestAddArguments::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121345,25 +121345,25 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams
             request.arg1 = params.arg1.unsignedCharValue;
             request.arg2 = params.arg2.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
-                                 completion:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+                                 completion:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestSimpleArgumentRequest::Type request;
+            UnitTesting::Commands::TestSimpleArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121371,26 +121371,26 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu
             }
             request.arg1 = params.arg1.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                       completion:
-                                          (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                          (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestStructArrayArgumentRequest::Type request;
+            UnitTesting::Commands::TestStructArrayArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121406,11 +121406,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                        if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterNestedStructList class]]) {
+                        if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterNestedStructList class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterNestedStructList *) params.arg1[i_0];
+                        auto element_0 = (MTRUnitTestingClusterNestedStructList *) params.arg1[i_0];
                         listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                         listHolder_0->mList[i_0].b = element_0.b.boolValue;
                         listHolder_0->mList[i_0].c.a = element_0.c.a.unsignedCharValue;
@@ -121433,11 +121433,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                                 }
                                 listFreer.add(listHolder_2);
                                 for (size_t i_2 = 0; i_2 < element_0.d.count; ++i_2) {
-                                    if (![element_0.d[i_2] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                                    if (![element_0.d[i_2] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                         // Wrong kind of value.
                                         return CHIP_ERROR_INVALID_ARGUMENT;
                                     }
-                                    auto element_2 = (MTRTestClusterClusterSimpleStruct *) element_0.d[i_2];
+                                    auto element_2 = (MTRUnitTestingClusterSimpleStruct *) element_0.d[i_2];
                                     listHolder_2->mList[i_2].a = element_2.a.unsignedCharValue;
                                     listHolder_2->mList[i_2].b = element_2.b.boolValue;
                                     listHolder_2->mList[i_2].c
@@ -121538,11 +121538,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < params.arg2.count; ++i_0) {
-                        if (![params.arg2[i_0] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                        if (![params.arg2[i_0] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterSimpleStruct *) params.arg2[i_0];
+                        auto element_0 = (MTRUnitTestingClusterSimpleStruct *) params.arg2[i_0];
                         listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                         listHolder_0->mList[i_0].b = element_0.b.boolValue;
                         listHolder_0->mList[i_0].c = static_castmList[i_0].c)>>(
@@ -121607,24 +121607,24 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
             request.arg5 = static_cast>(params.arg5.unsignedCharValue);
             request.arg6 = params.arg6.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
-                                 completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+                                 completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestStructArgumentRequest::Type request;
+            UnitTesting::Commands::TestStructArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121639,24 +121639,24 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu
             request.arg1.g = params.arg1.g.floatValue;
             request.arg1.h = params.arg1.h.doubleValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
-                                       completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+                                       completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestNestedStructArgumentRequest::Type request;
+            UnitTesting::Commands::TestNestedStructArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121673,24 +121673,24 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest
             request.arg1.c.g = params.arg1.c.g.floatValue;
             request.arg1.c.h = params.arg1.c.h.doubleValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
-                                     completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+                                     completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestListStructArgumentRequest::Type request;
+            UnitTesting::Commands::TestListStructArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121706,11 +121706,11 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                        if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                        if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterSimpleStruct *) params.arg1[i_0];
+                        auto element_0 = (MTRUnitTestingClusterSimpleStruct *) params.arg1[i_0];
                         listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                         listHolder_0->mList[i_0].b = element_0.b.boolValue;
                         listHolder_0->mList[i_0].c = static_castmList[i_0].c)>>(
@@ -121728,24 +121728,24 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
-                                    completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+                                    completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestListInt8UArgumentRequest::Type request;
+            UnitTesting::Commands::TestListInt8UArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121774,24 +121774,24 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
-                                           completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+                                           completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestNestedStructListArgumentRequest::Type request;
+            UnitTesting::Commands::TestNestedStructListArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121817,11 +121817,11 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
                     }
                     listFreer.add(listHolder_1);
                     for (size_t i_1 = 0; i_1 < params.arg1.d.count; ++i_1) {
-                        if (![params.arg1.d[i_1] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                        if (![params.arg1.d[i_1] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_1 = (MTRTestClusterClusterSimpleStruct *) params.arg1.d[i_1];
+                        auto element_1 = (MTRUnitTestingClusterSimpleStruct *) params.arg1.d[i_1];
                         listHolder_1->mList[i_1].a = element_1.a.unsignedCharValue;
                         listHolder_1->mList[i_1].b = element_1.b.boolValue;
                         listHolder_1->mList[i_1].c = static_castmList[i_1].c)>>(
@@ -121905,25 +121905,25 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
-                                               completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+                                               completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterBooleanResponseCallbackType successCb,
+    auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestListNestedStructListArgumentRequest::Type request;
+            UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -121939,11 +121939,11 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                        if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterNestedStructList class]]) {
+                        if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterNestedStructList class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterNestedStructList *) params.arg1[i_0];
+                        auto element_0 = (MTRUnitTestingClusterNestedStructList *) params.arg1[i_0];
                         listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                         listHolder_0->mList[i_0].b = element_0.b.boolValue;
                         listHolder_0->mList[i_0].c.a = element_0.c.a.unsignedCharValue;
@@ -121966,11 +121966,11 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                                 }
                                 listFreer.add(listHolder_2);
                                 for (size_t i_2 = 0; i_2 < element_0.d.count; ++i_2) {
-                                    if (![element_0.d[i_2] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                                    if (![element_0.d[i_2] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                         // Wrong kind of value.
                                         return CHIP_ERROR_INVALID_ARGUMENT;
                                     }
-                                    auto element_2 = (MTRTestClusterClusterSimpleStruct *) element_0.d[i_2];
+                                    auto element_2 = (MTRUnitTestingClusterSimpleStruct *) element_0.d[i_2];
                                     listHolder_2->mList[i_2].a = element_2.a.unsignedCharValue;
                                     listHolder_2->mList[i_2].b = element_2.b.boolValue;
                                     listHolder_2->mList[i_2].c
@@ -122062,25 +122062,25 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
-                                   completion:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+                                   completion:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestListInt8UReverseRequest::Type request;
+            UnitTesting::Commands::TestListInt8UReverseRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122109,24 +122109,24 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
-                        completion:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+                        completion:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            UnitTestingClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestEnumsRequest::Type request;
+            UnitTesting::Commands::TestEnumsRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122135,25 +122135,25 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams
             request.arg1 = static_cast>(params.arg1.unsignedShortValue);
             request.arg2 = static_cast>(params.arg2.unsignedCharValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
-                                   completion:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+                                   completion:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestNullableOptionalRequest::Type request;
+            UnitTesting::Commands::TestNullableOptionalRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122171,27 +122171,27 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                           completion:
                                               (void (^)(
-                                                  MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                                  MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestComplexNullableOptionalRequest::Type request;
+            UnitTesting::Commands::TestComplexNullableOptionalRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122367,25 +122367,25 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
-                               completion:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+                               completion:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::SimpleStructEchoRequest::Type request;
+            UnitTesting::Commands::SimpleStructEchoRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122400,7 +122400,7 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho
             request.arg1.g = params.arg1.g.floatValue;
             request.arg1.h = params.arg1.h.doubleValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122410,7 +122410,7 @@ - (void)timedInvokeRequestWithCompletion:(MTRStatusCompletion)completion
 {
     [self timedInvokeRequestWithParams:nil completion:completion];
 }
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
@@ -122424,7 +122424,7 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TimedInvokeRequest::Type request;
+            UnitTesting::Commands::TimedInvokeRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122434,13 +122434,13 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar
                 timedInvokeTimeoutMs.SetValue(10000);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
@@ -122454,7 +122454,7 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type request;
+            UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122467,25 +122467,25 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
-                                completion:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+                                completion:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestEmitTestEventRequest::Type request;
+            UnitTesting::Commands::TestEmitTestEventRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122495,28 +122495,28 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
             request.arg2 = static_cast>(params.arg2.unsignedCharValue);
             request.arg3 = params.arg3.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
 - (void)
-    testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+    testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         completion:
                                             (void (^)(
-                                                MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
+            UnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
-            TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type request;
+            UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -122524,7 +122524,7 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
             }
             request.arg1 = params.arg1.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122535,8 +122535,8 @@ - (void)readAttributeBooleanWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122569,11 +122569,11 @@ - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122594,9 +122594,9 @@ - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams * _Nonnull)param
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -122621,7 +122621,7 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Boolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -122638,11 +122638,11 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap8AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap8AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122675,11 +122675,11 @@ - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedCharValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122691,21 +122691,21 @@ - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams * _Nonnull)param
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap8AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap8AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
+                MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
                 !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
                 // Now that we kicked off the subscribe, flag our callback bridge
@@ -122723,11 +122723,11 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap8AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Bitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -122744,11 +122744,11 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap16AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap16AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122781,11 +122781,11 @@ - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedShortValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122797,21 +122797,21 @@ - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams * _Nonnull)para
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap16AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap16AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
+                MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
                 !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
                 // Now that we kicked off the subscribe, flag our callback bridge
@@ -122829,11 +122829,11 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap16AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Bitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -122850,11 +122850,11 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap32AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap32AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122887,11 +122887,11 @@ - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedIntValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122903,21 +122903,21 @@ - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams * _Nonnull)para
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap32AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap32AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
+                MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
                 !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
                 // Now that we kicked off the subscribe, flag our callback bridge
@@ -122935,11 +122935,11 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap32AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Bitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -122956,11 +122956,11 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap64AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap64AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -122993,11 +122993,11 @@ - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedLongLongValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123009,21 +123009,21 @@ - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams * _Nonnull)para
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterBitmap64AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap64AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
+                MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
                 !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
                 // Now that we kicked off the subscribe, flag our callback bridge
@@ -123041,11 +123041,11 @@ + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterBitmap64AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Bitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123065,8 +123065,8 @@ - (void)readAttributeInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, N
     auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123099,11 +123099,11 @@ - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123124,9 +123124,9 @@ - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123151,7 +123151,7 @@ + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attri
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123171,8 +123171,8 @@ - (void)readAttributeInt16uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123205,11 +123205,11 @@ - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedShortValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123230,9 +123230,9 @@ - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123257,7 +123257,7 @@ + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123277,8 +123277,8 @@ - (void)readAttributeInt24uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123311,11 +123311,11 @@ - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedIntValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123336,9 +123336,9 @@ - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123363,7 +123363,7 @@ + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123383,8 +123383,8 @@ - (void)readAttributeInt32uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123417,11 +123417,11 @@ - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedIntValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123442,9 +123442,9 @@ - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123469,7 +123469,7 @@ + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123489,8 +123489,8 @@ - (void)readAttributeInt40uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123523,11 +123523,11 @@ - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedLongLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123548,9 +123548,9 @@ - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123575,7 +123575,7 @@ + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123595,8 +123595,8 @@ - (void)readAttributeInt48uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123629,11 +123629,11 @@ - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedLongLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123654,9 +123654,9 @@ - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123681,7 +123681,7 @@ + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123701,8 +123701,8 @@ - (void)readAttributeInt56uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123735,11 +123735,11 @@ - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedLongLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123760,9 +123760,9 @@ - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123787,7 +123787,7 @@ + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123807,8 +123807,8 @@ - (void)readAttributeInt64uWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123841,11 +123841,11 @@ - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedLongLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123866,9 +123866,9 @@ - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123893,7 +123893,7 @@ + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -123913,8 +123913,8 @@ - (void)readAttributeInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, N
     auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123947,11 +123947,11 @@ - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.charValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -123972,9 +123972,9 @@ - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -123999,7 +123999,7 @@ + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attri
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124019,8 +124019,8 @@ - (void)readAttributeInt16sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124053,11 +124053,11 @@ - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.shortValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124078,9 +124078,9 @@ - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124105,7 +124105,7 @@ + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124125,8 +124125,8 @@ - (void)readAttributeInt24sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124159,11 +124159,11 @@ - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.intValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124184,9 +124184,9 @@ - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124211,7 +124211,7 @@ + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124231,8 +124231,8 @@ - (void)readAttributeInt32sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124265,11 +124265,11 @@ - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.intValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124290,9 +124290,9 @@ - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124317,7 +124317,7 @@ + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124337,8 +124337,8 @@ - (void)readAttributeInt40sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124371,11 +124371,11 @@ - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.longLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124396,9 +124396,9 @@ - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124423,7 +124423,7 @@ + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124443,8 +124443,8 @@ - (void)readAttributeInt48sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124477,11 +124477,11 @@ - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.longLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124502,9 +124502,9 @@ - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124529,7 +124529,7 @@ + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124549,8 +124549,8 @@ - (void)readAttributeInt56sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124583,11 +124583,11 @@ - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.longLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124608,9 +124608,9 @@ - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124635,7 +124635,7 @@ + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124655,8 +124655,8 @@ - (void)readAttributeInt64sWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124689,11 +124689,11 @@ - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.longLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124714,9 +124714,9 @@ - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124741,7 +124741,7 @@ + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Int64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124761,8 +124761,8 @@ - (void)readAttributeEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, N
     auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124795,11 +124795,11 @@ - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124820,9 +124820,9 @@ - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124847,7 +124847,7 @@ + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attri
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Enum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124867,8 +124867,8 @@ - (void)readAttributeEnum16WithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124901,11 +124901,11 @@ - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedShortValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -124926,9 +124926,9 @@ - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -124953,7 +124953,7 @@ + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Enum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -124973,8 +124973,8 @@ - (void)readAttributeFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable va
     auto * bridge = new MTRFloatAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125007,11 +125007,11 @@ - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.floatValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125032,9 +125032,9 @@ - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)p
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125059,7 +125059,7 @@ + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *
     std::move(*bridge).DispatchLocalAction(^(FloatAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::FloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125079,8 +125079,8 @@ - (void)readAttributeFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable va
     auto * bridge = new MTRDoubleAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoubleAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125113,11 +125113,11 @@ - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.doubleValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125138,9 +125138,9 @@ - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)p
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125165,7 +125165,7 @@ + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *
     std::move(*bridge).DispatchLocalAction(^(DoubleAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::FloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125185,8 +125185,8 @@ - (void)readAttributeOctetStringWithCompletion:(void (^)(NSData * _Nullable valu
     auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125219,11 +125219,11 @@ - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asByteSpan:value];
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125244,9 +125244,9 @@ - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams * _Nonnull)p
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125271,7 +125271,7 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *
     std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::OctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125288,11 +125288,11 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeListInt8uWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterListInt8uListAttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingListInt8uListAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125325,7 +125325,7 @@ - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -125350,7 +125350,7 @@ - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125362,21 +125362,21 @@ - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams * _Nonnull)par
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterListInt8uListAttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingListInt8uListAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -125395,11 +125395,11 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListInt8uListAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterListInt8uListAttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingListInt8uListAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::ListInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125416,11 +125416,11 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeListOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125453,7 +125453,7 @@ - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -125478,7 +125478,7 @@ - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125490,21 +125490,21 @@ - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams * _Nonnu
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -125523,12 +125523,12 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain
                                                  queue:(dispatch_queue_t)queue
                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::ListOctetString::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125545,12 +125545,12 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeListStructOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125583,7 +125583,7 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -125595,11 +125595,11 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < value.count; ++i_0) {
-                        if (![value[i_0] isKindOfClass:[MTRTestClusterClusterTestListStructOctet class]]) {
+                        if (![value[i_0] isKindOfClass:[MTRUnitTestingClusterTestListStructOctet class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterTestListStructOctet *) value[i_0];
+                        auto element_0 = (MTRUnitTestingClusterTestListStructOctet *) value[i_0];
                         listHolder_0->mList[i_0].member1 = element_0.member1.unsignedLongLongValue;
                         listHolder_0->mList[i_0].member2 = [self asByteSpan:element_0.member2];
                     }
@@ -125609,7 +125609,7 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125622,22 +125622,22 @@ - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams *
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -125657,12 +125657,12 @@ + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheC
                                                   completion:
                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::ListStructOctetString::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125682,8 +125682,8 @@ - (void)readAttributeLongOctetStringWithCompletion:(void (^)(NSData * _Nullable
     auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125716,11 +125716,11 @@ - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asByteSpan:value];
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125741,9 +125741,9 @@ - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams * _Nonnu
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125768,7 +125768,7 @@ + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContain
     std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::LongOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125788,8 +125788,8 @@ - (void)readAttributeCharStringWithCompletion:(void (^)(NSString * _Nullable val
     auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::CharString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125822,11 +125822,11 @@ - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::CharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asCharSpan:value];
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125847,9 +125847,9 @@ - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams * _Nonnull)pa
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::CharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125874,7 +125874,7 @@ + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::CharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -125894,8 +125894,8 @@ - (void)readAttributeLongCharStringWithCompletion:(void (^)(NSString * _Nullable
     auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125928,11 +125928,11 @@ - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asCharSpan:value];
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -125953,9 +125953,9 @@ - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -125980,7 +125980,7 @@ + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::LongCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126000,8 +126000,8 @@ - (void)readAttributeEpochUsWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126034,11 +126034,11 @@ - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedLongLongValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126059,9 +126059,9 @@ - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams * _Nonnull)param
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -126086,7 +126086,7 @@ + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)att
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::EpochUs::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126106,8 +126106,8 @@ - (void)readAttributeEpochSWithCompletion:(void (^)(NSNumber * _Nullable value,
     auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126140,11 +126140,11 @@ - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedIntValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126165,9 +126165,9 @@ - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams * _Nonnull)params
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -126192,7 +126192,7 @@ + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attr
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::EpochS::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126212,8 +126212,8 @@ - (void)readAttributeVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value
     auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126246,11 +126246,11 @@ - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedShortValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126271,9 +126271,9 @@ - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams * _Nonnull)para
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -126298,7 +126298,7 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at
     std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::VendorId::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126316,12 +126316,12 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeListNullablesAndOptionalsStructWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126354,7 +126354,7 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnu
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -126366,11 +126366,11 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnu
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < value.count; ++i_0) {
-                        if (![value[i_0] isKindOfClass:[MTRTestClusterClusterNullablesAndOptionalsStruct class]]) {
+                        if (![value[i_0] isKindOfClass:[MTRUnitTestingClusterNullablesAndOptionalsStruct class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterNullablesAndOptionalsStruct *) value[i_0];
+                        auto element_0 = (MTRUnitTestingClusterNullablesAndOptionalsStruct *) value[i_0];
                         if (element_0.nullableInt == nil) {
                             listHolder_0->mList[i_0].nullableInt.SetNull();
                         } else {
@@ -126551,7 +126551,7 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnu
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126565,23 +126565,23 @@ - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscrib
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
             auto * typedBridge
-                = static_cast(bridge);
+                = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+                MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
                 nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -126601,12 +126601,12 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri
                                                             completion:(void (^)(NSArray * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126623,11 +126623,11 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri
 
 - (void)readAttributeEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterSimpleEnumAttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterSimpleEnumAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126660,11 +126660,11 @@ - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = static_cast>(value.unsignedCharValue);
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126676,21 +126676,21 @@ - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)para
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterClusterSimpleEnumAttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterSimpleEnumAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -126709,11 +126709,11 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::EnumAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126728,25 +126728,25 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
     });
 }
 
-- (void)readAttributeStructAttrWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeStructAttrWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                   NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterStructAttrStructAttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingStructAttrStructAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                completion:(MTRStatusCompletion)completion
 {
-    [self writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull) value params:nil completion:completion];
+    [self writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull) value params:nil completion:completion];
 }
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion
 {
@@ -126769,7 +126769,7 @@ - (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue.a = value.a.unsignedCharValue;
             cppValue.b = value.b.boolValue;
@@ -126780,7 +126780,7 @@ - (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _
             cppValue.g = value.g.floatValue;
             cppValue.h = value.h.doubleValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126788,26 +126788,26 @@ - (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _
 
 - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                 reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                 reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                    NSError * _Nullable error))reportHandler
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterStructAttrStructAttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingStructAttrStructAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -126824,14 +126824,14 @@ - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)pa
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                       completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterStructAttrStructAttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingStructAttrStructAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::StructAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126851,8 +126851,8 @@ - (void)readAttributeRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nu
     auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126885,11 +126885,11 @@ - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126911,9 +126911,9 @@ - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -126939,7 +126939,7 @@ + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheCo
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -126959,8 +126959,8 @@ - (void)readAttributeRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nu
     auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -126993,11 +126993,11 @@ - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.charValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127019,9 +127019,9 @@ - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127047,7 +127047,7 @@ + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheCo
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127067,8 +127067,8 @@ - (void)readAttributeRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _N
     auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127101,11 +127101,11 @@ - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedShortValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127127,9 +127127,9 @@ - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams *
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127155,7 +127155,7 @@ + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheC
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127175,8 +127175,8 @@ - (void)readAttributeRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _N
     auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127209,11 +127209,11 @@ - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.shortValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127235,9 +127235,9 @@ - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams *
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127263,7 +127263,7 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::RangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127280,12 +127280,12 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeListLongOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127318,7 +127318,7 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -127343,7 +127343,7 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127356,22 +127356,22 @@ - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams * _N
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -127391,12 +127391,12 @@ + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheCon
                                                 completion:
                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::ListLongOctetString::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127415,12 +127415,12 @@ - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)param
                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127453,7 +127453,7 @@ - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
             TypeInfo::Type cppValue;
             {
                 using ListType_0 = std::remove_reference_t;
@@ -127465,11 +127465,11 @@ - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value
                     }
                     listFreer.add(listHolder_0);
                     for (size_t i_0 = 0; i_0 < value.count; ++i_0) {
-                        if (![value[i_0] isKindOfClass:[MTRTestClusterClusterTestFabricScoped class]]) {
+                        if (![value[i_0] isKindOfClass:[MTRUnitTestingClusterTestFabricScoped class]]) {
                             // Wrong kind of value.
                             return CHIP_ERROR_INVALID_ARGUMENT;
                         }
-                        auto element_0 = (MTRTestClusterClusterTestFabricScoped *) value[i_0];
+                        auto element_0 = (MTRUnitTestingClusterTestFabricScoped *) value[i_0];
                         listHolder_0->mList[i_0].fabricSensitiveInt8u = element_0.fabricSensitiveInt8u.unsignedCharValue;
                         if (element_0.optionalFabricSensitiveInt8u != nil) {
                             auto & definedValue_2 = listHolder_0->mList[i_0].optionalFabricSensitiveInt8u.Emplace();
@@ -127534,7 +127534,7 @@ - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value
                 }
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127546,22 +127546,22 @@ - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams * _Nonn
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -127580,12 +127580,12 @@ + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContai
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::ListFabricScoped::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127605,8 +127605,8 @@ - (void)readAttributeTimedWriteBooleanWithCompletion:(void (^)(NSNumber * _Nulla
     auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127639,11 +127639,11 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127664,9 +127664,9 @@ - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams * _Non
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127691,7 +127691,7 @@ + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheConta
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::TimedWriteBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127711,8 +127711,8 @@ - (void)readAttributeGeneralErrorBooleanWithCompletion:(void (^)(NSNumber * _Nul
     auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127745,11 +127745,11 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127771,9 +127771,9 @@ - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams * _N
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127799,7 +127799,7 @@ + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::GeneralErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127819,8 +127819,8 @@ - (void)readAttributeClusterErrorBooleanWithCompletion:(void (^)(NSNumber * _Nul
     auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127853,11 +127853,11 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127879,9 +127879,9 @@ - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams * _N
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -127907,7 +127907,7 @@ + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::ClusterErrorBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -127927,8 +127927,8 @@ - (void)readAttributeUnsupportedWithCompletion:(void (^)(NSNumber * _Nullable va
     auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127961,11 +127961,11 @@ - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -127986,9 +127986,9 @@ - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams * _Nonnull)p
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -128013,7 +128013,7 @@ + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::Unsupported::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128033,8 +128033,8 @@ - (void)readAttributeNullableBooleanWithCompletion:(void (^)(NSNumber * _Nullabl
     auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128067,7 +128067,7 @@ - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128076,7 +128076,7 @@ - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.boolValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128097,9 +128097,9 @@ - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams * _Nonnu
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -128124,7 +128124,7 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain
     std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableBoolean::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128141,11 +128141,11 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeNullableBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap8AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap8AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128178,7 +128178,7 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128187,7 +128187,7 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = static_cast>(value.unsignedCharValue);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128199,21 +128199,21 @@ - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams * _Nonnu
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap8AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap8AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -128232,11 +128232,11 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain
                                                  queue:(dispatch_queue_t)queue
                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128253,11 +128253,11 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeNullableBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap16AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap16AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128290,7 +128290,7 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128299,7 +128299,7 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = static_cast>(value.unsignedShortValue);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128311,21 +128311,21 @@ - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams * _Nonn
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap16AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap16AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -128344,11 +128344,11 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128365,11 +128365,11 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeNullableBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap32AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap32AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128402,7 +128402,7 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128411,7 +128411,7 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = static_cast>(value.unsignedIntValue);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128423,21 +128423,21 @@ - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams * _Nonn
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap32AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap32AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -128456,11 +128456,11 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap32::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128477,11 +128477,11 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeNullableBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap64AttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap64AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128514,7 +128514,7 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128523,7 +128523,7 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = static_cast>(value.unsignedLongLongValue);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128535,21 +128535,21 @@ - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams * _Nonn
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterNullableBitmap64AttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap64AttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -128568,11 +128568,11 @@ + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContai
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterNullableBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableBitmap64::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128592,8 +128592,8 @@ - (void)readAttributeNullableInt8uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128626,7 +128626,7 @@ - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128635,7 +128635,7 @@ - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedCharValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128656,9 +128656,9 @@ - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams * _Nonnull
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -128683,7 +128683,7 @@ + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128703,8 +128703,8 @@ - (void)readAttributeNullableInt16uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128737,7 +128737,7 @@ - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128746,7 +128746,7 @@ - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedShortValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128767,9 +128767,9 @@ - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -128794,7 +128794,7 @@ + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128814,8 +128814,8 @@ - (void)readAttributeNullableInt24uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128848,7 +128848,7 @@ - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128857,7 +128857,7 @@ - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedIntValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128878,9 +128878,9 @@ - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -128905,7 +128905,7 @@ + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt24u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -128925,8 +128925,8 @@ - (void)readAttributeNullableInt32uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128959,7 +128959,7 @@ - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -128968,7 +128968,7 @@ - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedIntValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -128989,9 +128989,9 @@ - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129016,7 +129016,7 @@ + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt32u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129036,8 +129036,8 @@ - (void)readAttributeNullableInt40uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129070,7 +129070,7 @@ - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129079,7 +129079,7 @@ - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedLongLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129100,9 +129100,9 @@ - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129127,7 +129127,7 @@ + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt40u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129147,8 +129147,8 @@ - (void)readAttributeNullableInt48uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129181,7 +129181,7 @@ - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129190,7 +129190,7 @@ - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedLongLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129211,9 +129211,9 @@ - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129238,7 +129238,7 @@ + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt48u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129258,8 +129258,8 @@ - (void)readAttributeNullableInt56uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129292,7 +129292,7 @@ - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129301,7 +129301,7 @@ - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedLongLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129322,9 +129322,9 @@ - (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129349,7 +129349,7 @@ + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt56u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129369,8 +129369,8 @@ - (void)readAttributeNullableInt64uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129403,7 +129403,7 @@ - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129412,7 +129412,7 @@ - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedLongLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129433,9 +129433,9 @@ - (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129460,7 +129460,7 @@ + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129480,8 +129480,8 @@ - (void)readAttributeNullableInt8sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129514,7 +129514,7 @@ - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129523,7 +129523,7 @@ - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.charValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129544,9 +129544,9 @@ - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams * _Nonnull
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129571,7 +129571,7 @@ + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer
     std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129591,8 +129591,8 @@ - (void)readAttributeNullableInt16sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129625,7 +129625,7 @@ - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129634,7 +129634,7 @@ - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.shortValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129655,9 +129655,9 @@ - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129682,7 +129682,7 @@ + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129702,8 +129702,8 @@ - (void)readAttributeNullableInt24sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129736,7 +129736,7 @@ - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129745,7 +129745,7 @@ - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.intValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129766,9 +129766,9 @@ - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129793,7 +129793,7 @@ + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt24s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129813,8 +129813,8 @@ - (void)readAttributeNullableInt32sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129847,7 +129847,7 @@ - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129856,7 +129856,7 @@ - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.intValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129877,9 +129877,9 @@ - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -129904,7 +129904,7 @@ + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt32s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -129924,8 +129924,8 @@ - (void)readAttributeNullableInt40sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129958,7 +129958,7 @@ - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -129967,7 +129967,7 @@ - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.longLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -129988,9 +129988,9 @@ - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130015,7 +130015,7 @@ + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt40s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130035,8 +130035,8 @@ - (void)readAttributeNullableInt48sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130069,7 +130069,7 @@ - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130078,7 +130078,7 @@ - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.longLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130099,9 +130099,9 @@ - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130126,7 +130126,7 @@ + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt48s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130146,8 +130146,8 @@ - (void)readAttributeNullableInt56sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130180,7 +130180,7 @@ - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130189,7 +130189,7 @@ - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.longLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130210,9 +130210,9 @@ - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130237,7 +130237,7 @@ + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt56s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130257,8 +130257,8 @@ - (void)readAttributeNullableInt64sWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130291,7 +130291,7 @@ - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130300,7 +130300,7 @@ - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.longLongValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130321,9 +130321,9 @@ - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130348,7 +130348,7 @@ + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableInt64s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130368,8 +130368,8 @@ - (void)readAttributeNullableEnum8WithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130402,7 +130402,7 @@ - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130411,7 +130411,7 @@ - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedCharValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130432,9 +130432,9 @@ - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams * _Nonnull
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130459,7 +130459,7 @@ + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableEnum8::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130479,8 +130479,8 @@ - (void)readAttributeNullableEnum16WithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130513,7 +130513,7 @@ - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130522,7 +130522,7 @@ - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.unsignedShortValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130543,9 +130543,9 @@ - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130570,7 +130570,7 @@ + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableEnum16::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130590,8 +130590,8 @@ - (void)readAttributeNullableFloatSingleWithCompletion:(void (^)(NSNumber * _Nul
     auto * bridge = new MTRNullableFloatAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableFloatAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130624,7 +130624,7 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130633,7 +130633,7 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.floatValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130655,9 +130655,9 @@ - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams * _N
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130683,7 +130683,7 @@ + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheCon
     std::move(*bridge).DispatchLocalAction(^(NullableFloatAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableFloatSingle::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130703,8 +130703,8 @@ - (void)readAttributeNullableFloatDoubleWithCompletion:(void (^)(NSNumber * _Nul
     auto * bridge = new MTRNullableDoubleAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableDoubleAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130737,7 +130737,7 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130746,7 +130746,7 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = value.doubleValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130768,9 +130768,9 @@ - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams * _N
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130796,7 +130796,7 @@ + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheCon
     std::move(*bridge).DispatchLocalAction(^(NullableDoubleAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableFloatDouble::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130816,8 +130816,8 @@ - (void)readAttributeNullableOctetStringWithCompletion:(void (^)(NSData * _Nulla
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130850,7 +130850,7 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130859,7 +130859,7 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value
                 nonNullValue_0 = [self asByteSpan:value];
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130880,9 +130880,9 @@ - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams * _N
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -130907,7 +130907,7 @@ + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheCon
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableOctetString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -130927,8 +130927,8 @@ - (void)readAttributeNullableCharStringWithCompletion:(void (^)(NSString * _Null
     auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130961,7 +130961,7 @@ - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -130970,7 +130970,7 @@ - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value
                 nonNullValue_0 = [self asCharSpan:value];
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -130992,9 +130992,9 @@ - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams * _No
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131020,7 +131020,7 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont
     std::move(*bridge).DispatchLocalAction(^(NullableCharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableCharString::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131037,12 +131037,12 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeNullableEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
+            NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131075,7 +131075,7 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131084,7 +131084,7 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value
                 nonNullValue_0 = static_cast>(value.unsignedCharValue);
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131096,22 +131096,22 @@ - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams * _Nonn
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
+            NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -131130,12 +131130,12 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(NullableTestClusterClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::NullableEnumAttr::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131150,28 +131150,28 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
         });
 }
 
-- (void)readAttributeNullableStructWithCompletion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeNullableStructWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                    completion:(MTRStatusCompletion)completion
 {
-    [self writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable) value
+    [self writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable) value
                                          params:nil
                                      completion:completion];
 }
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion
 {
@@ -131194,7 +131194,7 @@ - (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131210,7 +131210,7 @@ - (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct
                 nonNullValue_0.h = value.h.doubleValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131218,27 +131218,27 @@ - (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct
 
 - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                     reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                     reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                        NSError * _Nullable error))reportHandler
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -131255,15 +131255,15 @@ - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnul
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                           completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::NullableStruct::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131284,8 +131284,8 @@ - (void)readAttributeNullableRangeRestrictedInt8uWithCompletion:(void (^)(NSNumb
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131318,7 +131318,7 @@ - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullabl
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131327,7 +131327,7 @@ - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullabl
                 nonNullValue_0 = value.unsignedCharValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131350,9 +131350,9 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribePa
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131378,7 +131378,7 @@ + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttribut
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131399,8 +131399,8 @@ - (void)readAttributeNullableRangeRestrictedInt8sWithCompletion:(void (^)(NSNumb
     auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131433,7 +131433,7 @@ - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullabl
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131442,7 +131442,7 @@ - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullabl
                 nonNullValue_0 = value.charValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131465,9 +131465,9 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribePa
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131493,7 +131493,7 @@ + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttribut
     std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131514,8 +131514,8 @@ - (void)readAttributeNullableRangeRestrictedInt16uWithCompletion:(void (^)(NSNum
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131548,7 +131548,7 @@ - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullab
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131557,7 +131557,7 @@ - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullab
                 nonNullValue_0 = value.unsignedShortValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131580,9 +131580,9 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeP
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131608,7 +131608,7 @@ + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttribu
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131629,8 +131629,8 @@ - (void)readAttributeNullableRangeRestrictedInt16sWithCompletion:(void (^)(NSNum
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131663,7 +131663,7 @@ - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullab
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -131672,7 +131672,7 @@ - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullab
                 nonNullValue_0 = value.shortValue;
             }
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131695,9 +131695,9 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeP
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131723,7 +131723,7 @@ + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttribu
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131743,8 +131743,8 @@ - (void)readAttributeWriteOnlyInt8uWithCompletion:(void (^)(NSNumber * _Nullable
     auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131777,11 +131777,11 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.unsignedCharValue;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131802,9 +131802,9 @@ - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams * _Nonnul
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -131829,7 +131829,7 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::WriteOnlyInt8u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131846,12 +131846,12 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131864,22 +131864,22 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -131899,12 +131899,12 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                                  completion:
                                                      (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::GeneratedCommandList::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131921,12 +131921,12 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
+    auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -131939,22 +131939,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
+            UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -131974,12 +131974,12 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                                 completion:
                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
-        ^(TestClusterAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (attributeCacheContainer.cppAttributeCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = TestCluster::Attributes::AcceptedCommandList::TypeInfo;
+                using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -131996,11 +131996,11 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterAttributeListListAttributeCallback successCb,
+    auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingAttributeListListAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -132012,21 +132012,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge(
+    auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge(
         self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, TestClusterAttributeListListAttributeCallback successCb,
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingAttributeListListAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
+            auto * typedBridge = static_cast(bridge);
             if (!params.resubscribeIfLost) {
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
+                MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
                 params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
                 [typedBridge](void) { typedBridge->OnDone(); });
             if (err == CHIP_NO_ERROR) {
@@ -132045,11 +132045,11 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                                queue:(dispatch_queue_t)queue
                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTestClusterAttributeListListAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(TestClusterAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(UnitTestingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::AttributeList::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -132069,8 +132069,8 @@ - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable val
     auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -132091,9 +132091,9 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -132118,7 +132118,7 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::FeatureMap::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -132138,8 +132138,8 @@ - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullabl
     auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.ReadAttribute(bridge, successCb, failureCb);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -132160,9 +132160,9 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
                 // We don't support disabling auto-resubscribe.
                 return CHIP_ERROR_INVALID_ARGUMENT;
             }
-            using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
 
-            chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
             CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
                 [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
                 MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
@@ -132187,7 +132187,7 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
         if (attributeCacheContainer.cppAttributeCache) {
             chip::app::ConcreteAttributePath path;
-            using TypeInfo = TestCluster::Attributes::ClusterRevision::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
@@ -132204,9 +132204,9 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
 
 @end
 
-@implementation MTRBaseClusterTestCluster (Deprecated)
+@implementation MTRBaseClusterUnitTesting (Deprecated)
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testWithParams:params completion:completionHandler];
 }
@@ -132214,7 +132214,7 @@ - (void)testWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testWithParams:nil completion:completionHandler];
 }
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testNotHandledWithParams:params completion:completionHandler];
@@ -132223,18 +132223,18 @@ - (void)testNotHandledWithCompletionHandler:(MTRStatusCompletion)completionHandl
 {
     [self testNotHandledWithParams:nil completion:completionHandler];
 }
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
-             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
     [self testSpecificWithParams:params completion:completionHandler];
 }
-- (void)testSpecificWithCompletionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithCompletionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
     [self testSpecificWithParams:nil completion:completionHandler];
 }
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testUnknownCommandWithParams:params completion:completionHandler];
@@ -132243,94 +132243,94 @@ - (void)testUnknownCommandWithCompletionHandler:(MTRStatusCompletion)completionH
 {
     [self testUnknownCommandWithParams:nil completion:completionHandler];
 }
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
-                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testAddArgumentsWithParams:params completion:completionHandler];
 }
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testSimpleArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                completionHandler:
-                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testStructArrayArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testStructArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
-                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
 {
     [self testNestedStructArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
-                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
 {
     [self testListStructArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
-                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
 {
     [self testListInt8UArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
-                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
 {
     [self testNestedStructListArgumentRequestWithParams:params completion:completionHandler];
 }
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
-                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
 {
     [self testListNestedStructListArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
-                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testListInt8UReverseRequestWithParams:params completion:completionHandler];
 }
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
-                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testEnumsRequestWithParams:params completion:completionHandler];
 }
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
-                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testNullableOptionalRequestWithParams:params completion:completionHandler];
 }
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                    completionHandler:
-                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
     [self testComplexNullableOptionalRequestWithParams:params completion:completionHandler];
 }
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
-                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
     [self simpleStructEchoRequestWithParams:params completion:completionHandler];
 }
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self timedInvokeRequestWithParams:params completion:completionHandler];
@@ -132339,21 +132339,21 @@ - (void)timedInvokeRequestWithCompletionHandler:(MTRStatusCompletion)completionH
 {
     [self timedInvokeRequestWithParams:nil completion:completionHandler];
 }
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                   completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testSimpleOptionalArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
-                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
 {
     [self testEmitTestEventRequestWithParams:params completion:completionHandler];
 }
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                      completionHandler:
                                          (void (^)(
-                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
     [self testEmitTestFabricScopedEventRequestWithParams:params completion:completionHandler];
@@ -133887,17 +133887,17 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
                                        completion:completionHandler];
 }
 
-- (void)readAttributeStructAttrWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeStructAttrWithCompletionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                          NSError * _Nullable error))completionHandler
 {
     [self readAttributeStructAttrWithCompletion:completionHandler];
 }
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self writeAttributeStructAttrWithValue:value params:nil completion:completionHandler];
 }
-- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133907,7 +133907,7 @@ - (void)subscribeAttributeStructAttrWithMinInterval:(NSNumber * _Nonnull)minInte
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
                                              params:(MTRSubscribeParams * _Nullable)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                      reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                         NSError * _Nullable error))reportHandler
 {
     MTRSubscribeParams * _Nullable subscribeParams = [params copy];
@@ -133924,7 +133924,7 @@ - (void)subscribeAttributeStructAttrWithMinInterval:(NSNumber * _Nonnull)minInte
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
 {
     [self readAttributeStructAttrWithAttributeCache:attributeCacheContainer
@@ -135665,17 +135665,17 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
                                                completion:completionHandler];
 }
 
-- (void)readAttributeNullableStructWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+- (void)readAttributeNullableStructWithCompletionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
     [self readAttributeNullableStructWithCompletion:completionHandler];
 }
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                             completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self writeAttributeNullableStructWithValue:value params:nil completion:completionHandler];
 }
-- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135685,7 +135685,7 @@ - (void)subscribeAttributeNullableStructWithMinInterval:(NSNumber * _Nonnull)min
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                          reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                          reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                             NSError * _Nullable error))reportHandler
 {
     MTRSubscribeParams * _Nullable subscribeParams = [params copy];
@@ -135702,7 +135702,7 @@ - (void)subscribeAttributeNullableStructWithMinInterval:(NSNumber * _Nonnull)min
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                    completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
+                                    completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
     [self readAttributeNullableStructWithAttributeCache:attributeCacheContainer
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_internal.h
index 00a28a0dff521a..56dc08571a84d2 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_internal.h
@@ -342,7 +342,7 @@
 @property (nonatomic, assign, readonly) chip::EndpointId endpoint;
 @end
 
-@interface MTRBaseClusterTestCluster ()
+@interface MTRBaseClusterUnitTesting ()
 @property (nonatomic, strong, readonly) MTRBaseDevice * device;
 @property (nonatomic, assign, readonly) chip::EndpointId endpoint;
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
index e6a5ca8c3b1c6f..3fb5690c98885e 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
@@ -10700,17 +10700,17 @@
     }
 }
 
-void MTRTestClusterBitmap8AttributeCallbackBridge::OnSuccessFn(
-    void * context, chip::BitMask value)
+void MTRUnitTestingBitmap8AttributeCallbackBridge::OnSuccessFn(
+    void * context, chip::BitMask value)
 {
     NSNumber * _Nonnull objCValue;
     objCValue = [NSNumber numberWithUnsignedChar:value.Raw()];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10724,17 +10724,17 @@
     }
 }
 
-void MTRTestClusterBitmap16AttributeCallbackBridge::OnSuccessFn(
-    void * context, chip::BitMask value)
+void MTRUnitTestingBitmap16AttributeCallbackBridge::OnSuccessFn(
+    void * context, chip::BitMask value)
 {
     NSNumber * _Nonnull objCValue;
     objCValue = [NSNumber numberWithUnsignedShort:value.Raw()];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10748,17 +10748,17 @@
     }
 }
 
-void MTRTestClusterBitmap32AttributeCallbackBridge::OnSuccessFn(
-    void * context, chip::BitMask value)
+void MTRUnitTestingBitmap32AttributeCallbackBridge::OnSuccessFn(
+    void * context, chip::BitMask value)
 {
     NSNumber * _Nonnull objCValue;
     objCValue = [NSNumber numberWithUnsignedInt:value.Raw()];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10772,17 +10772,17 @@
     }
 }
 
-void MTRTestClusterBitmap64AttributeCallbackBridge::OnSuccessFn(
-    void * context, chip::BitMask value)
+void MTRUnitTestingBitmap64AttributeCallbackBridge::OnSuccessFn(
+    void * context, chip::BitMask value)
 {
     NSNumber * _Nonnull objCValue;
     objCValue = [NSNumber numberWithUnsignedLongLong:value.Raw()];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10796,7 +10796,7 @@
     }
 }
 
-void MTRTestClusterListInt8uListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingListInt8uListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -10819,9 +10819,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10835,7 +10835,7 @@
     }
 }
 
-void MTRTestClusterListOctetStringListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingListOctetStringListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -10858,9 +10858,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10874,8 +10874,8 @@
     }
 }
 
-void MTRTestClusterListStructOctetStringListAttributeCallbackBridge::OnSuccessFn(void * context,
-    const chip::app::DataModel::DecodableList &
+void MTRUnitTestingListStructOctetStringListAttributeCallbackBridge::OnSuccessFn(void * context,
+    const chip::app::DataModel::DecodableList &
         value)
 {
     NSArray * _Nonnull objCValue;
@@ -10884,8 +10884,8 @@
         auto iter_0 = value.begin();
         while (iter_0.Next()) {
             auto & entry_0 = iter_0.GetValue();
-            MTRTestClusterClusterTestListStructOctet * newElement_0;
-            newElement_0 = [MTRTestClusterClusterTestListStructOctet new];
+            MTRUnitTestingClusterTestListStructOctet * newElement_0;
+            newElement_0 = [MTRUnitTestingClusterTestListStructOctet new];
             newElement_0.member1 = [NSNumber numberWithUnsignedLongLong:entry_0.member1];
             newElement_0.member2 = [NSData dataWithBytes:entry_0.member2.data() length:entry_0.member2.size()];
             [array_0 addObject:newElement_0];
@@ -10900,9 +10900,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -10916,9 +10916,9 @@
     }
 }
 
-void MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge::OnSuccessFn(void * context,
+void MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge::OnSuccessFn(void * context,
     const chip::app::DataModel::DecodableList<
-        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & value)
+        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & value)
 {
     NSArray * _Nonnull objCValue;
     { // Scope for our temporary variables
@@ -10926,8 +10926,8 @@
         auto iter_0 = value.begin();
         while (iter_0.Next()) {
             auto & entry_0 = iter_0.GetValue();
-            MTRTestClusterClusterNullablesAndOptionalsStruct * newElement_0;
-            newElement_0 = [MTRTestClusterClusterNullablesAndOptionalsStruct new];
+            MTRUnitTestingClusterNullablesAndOptionalsStruct * newElement_0;
+            newElement_0 = [MTRUnitTestingClusterNullablesAndOptionalsStruct new];
             if (entry_0.nullableInt.IsNull()) {
                 newElement_0.nullableInt = nil;
             } else {
@@ -10977,7 +10977,7 @@
             if (entry_0.nullableStruct.IsNull()) {
                 newElement_0.nullableStruct = nil;
             } else {
-                newElement_0.nullableStruct = [MTRTestClusterClusterSimpleStruct new];
+                newElement_0.nullableStruct = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.nullableStruct.a = [NSNumber numberWithUnsignedChar:entry_0.nullableStruct.Value().a];
                 newElement_0.nullableStruct.b = [NSNumber numberWithBool:entry_0.nullableStruct.Value().b];
                 newElement_0.nullableStruct.c =
@@ -10992,7 +10992,7 @@
                 newElement_0.nullableStruct.h = [NSNumber numberWithDouble:entry_0.nullableStruct.Value().h];
             }
             if (entry_0.optionalStruct.HasValue()) {
-                newElement_0.optionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                newElement_0.optionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.optionalStruct.a = [NSNumber numberWithUnsignedChar:entry_0.optionalStruct.Value().a];
                 newElement_0.optionalStruct.b = [NSNumber numberWithBool:entry_0.optionalStruct.Value().b];
                 newElement_0.optionalStruct.c =
@@ -11012,7 +11012,7 @@
                 if (entry_0.nullableOptionalStruct.Value().IsNull()) {
                     newElement_0.nullableOptionalStruct = nil;
                 } else {
-                    newElement_0.nullableOptionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                    newElement_0.nullableOptionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                     newElement_0.nullableOptionalStruct.a =
                         [NSNumber numberWithUnsignedChar:entry_0.nullableOptionalStruct.Value().Value().a];
                     newElement_0.nullableOptionalStruct.b =
@@ -11112,9 +11112,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11128,11 +11128,11 @@
     }
 }
 
-void MTRTestClusterStructAttrStructAttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType & value)
+void MTRUnitTestingStructAttrStructAttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType & value)
 {
-    MTRTestClusterClusterSimpleStruct * _Nonnull objCValue;
-    objCValue = [MTRTestClusterClusterSimpleStruct new];
+    MTRUnitTestingClusterSimpleStruct * _Nonnull objCValue;
+    objCValue = [MTRUnitTestingClusterSimpleStruct new];
     objCValue.a = [NSNumber numberWithUnsignedChar:value.a];
     objCValue.b = [NSNumber numberWithBool:value.b];
     objCValue.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(value.c)];
@@ -11144,9 +11144,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11160,7 +11160,7 @@
     }
 }
 
-void MTRTestClusterListLongOctetStringListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingListLongOctetStringListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -11183,9 +11183,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11199,8 +11199,8 @@
     }
 }
 
-void MTRTestClusterListFabricScopedListAttributeCallbackBridge::OnSuccessFn(void * context,
-    const chip::app::DataModel::DecodableList & value)
+void MTRUnitTestingListFabricScopedListAttributeCallbackBridge::OnSuccessFn(void * context,
+    const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
     { // Scope for our temporary variables
@@ -11208,8 +11208,8 @@
         auto iter_0 = value.begin();
         while (iter_0.Next()) {
             auto & entry_0 = iter_0.GetValue();
-            MTRTestClusterClusterTestFabricScoped * newElement_0;
-            newElement_0 = [MTRTestClusterClusterTestFabricScoped new];
+            MTRUnitTestingClusterTestFabricScoped * newElement_0;
+            newElement_0 = [MTRUnitTestingClusterTestFabricScoped new];
             newElement_0.fabricSensitiveInt8u = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveInt8u];
             if (entry_0.optionalFabricSensitiveInt8u.HasValue()) {
                 newElement_0.optionalFabricSensitiveInt8u =
@@ -11236,7 +11236,7 @@
             newElement_0.fabricSensitiveCharString = [[NSString alloc] initWithBytes:entry_0.fabricSensitiveCharString.data()
                                                                               length:entry_0.fabricSensitiveCharString.size()
                                                                             encoding:NSUTF8StringEncoding];
-            newElement_0.fabricSensitiveStruct = [MTRTestClusterClusterSimpleStruct new];
+            newElement_0.fabricSensitiveStruct = [MTRUnitTestingClusterSimpleStruct new];
             newElement_0.fabricSensitiveStruct.a = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveStruct.a];
             newElement_0.fabricSensitiveStruct.b = [NSNumber numberWithBool:entry_0.fabricSensitiveStruct.b];
             newElement_0.fabricSensitiveStruct.c =
@@ -11278,9 +11278,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11294,8 +11294,8 @@
     }
 }
 
-void MTRTestClusterNullableBitmap8AttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void MTRUnitTestingNullableBitmap8AttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     NSNumber * _Nullable objCValue;
     if (value.IsNull()) {
@@ -11306,9 +11306,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11322,8 +11322,8 @@
     }
 }
 
-void MTRTestClusterNullableBitmap16AttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void MTRUnitTestingNullableBitmap16AttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     NSNumber * _Nullable objCValue;
     if (value.IsNull()) {
@@ -11334,9 +11334,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11350,8 +11350,8 @@
     }
 }
 
-void MTRTestClusterNullableBitmap32AttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void MTRUnitTestingNullableBitmap32AttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     NSNumber * _Nullable objCValue;
     if (value.IsNull()) {
@@ -11362,9 +11362,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11378,8 +11378,8 @@
     }
 }
 
-void MTRTestClusterNullableBitmap64AttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::DataModel::Nullable> & value)
+void MTRUnitTestingNullableBitmap64AttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::DataModel::Nullable> & value)
 {
     NSNumber * _Nullable objCValue;
     if (value.IsNull()) {
@@ -11390,9 +11390,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11406,14 +11406,14 @@
     }
 }
 
-void MTRTestClusterNullableStructStructAttributeCallbackBridge::OnSuccessFn(void * context,
-    const chip::app::DataModel::Nullable & value)
+void MTRUnitTestingNullableStructStructAttributeCallbackBridge::OnSuccessFn(void * context,
+    const chip::app::DataModel::Nullable & value)
 {
-    MTRTestClusterClusterSimpleStruct * _Nullable objCValue;
+    MTRUnitTestingClusterSimpleStruct * _Nullable objCValue;
     if (value.IsNull()) {
         objCValue = nil;
     } else {
-        objCValue = [MTRTestClusterClusterSimpleStruct new];
+        objCValue = [MTRUnitTestingClusterSimpleStruct new];
         objCValue.a = [NSNumber numberWithUnsignedChar:value.Value().a];
         objCValue.b = [NSNumber numberWithBool:value.Value().b];
         objCValue.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(value.Value().c)];
@@ -11428,9 +11428,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11444,7 +11444,7 @@
     }
 }
 
-void MTRTestClusterGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -11467,9 +11467,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11483,7 +11483,7 @@
     }
 }
 
-void MTRTestClusterAcceptedCommandListListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -11506,9 +11506,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -11522,7 +11522,7 @@
     }
 }
 
-void MTRTestClusterAttributeListListAttributeCallbackBridge::OnSuccessFn(
+void MTRUnitTestingAttributeListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList & value)
 {
     NSArray * _Nonnull objCValue;
@@ -11545,9 +11545,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -12789,50 +12789,50 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestSpecificResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & data)
+void MTRUnitTestingClusterTestSpecificResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestSpecificResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestSpecificResponseParams new];
     {
         response.returnValue = [NSNumber numberWithUnsignedChar:data.returnValue];
     }
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & data)
+void MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestAddArgumentsResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestAddArgumentsResponseParams new];
     {
         response.returnValue = [NSNumber numberWithUnsignedChar:data.returnValue];
     }
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentResponse::DecodableType & data)
+void MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestSimpleArgumentResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestSimpleArgumentResponseParams new];
     {
         response.returnValue = [NSNumber numberWithBool:data.returnValue];
     }
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType & data)
+void MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestStructArrayArgumentResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestStructArrayArgumentResponseParams new];
     { { // Scope for our temporary variables
         auto * array_0 = [NSMutableArray new];
     auto iter_0 = data.arg1.begin();
     while (iter_0.Next()) {
         auto & entry_0 = iter_0.GetValue();
-        MTRTestClusterClusterNestedStructList * newElement_0;
-        newElement_0 = [MTRTestClusterClusterNestedStructList new];
+        MTRUnitTestingClusterNestedStructList * newElement_0;
+        newElement_0 = [MTRUnitTestingClusterNestedStructList new];
         newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
         newElement_0.b = [NSNumber numberWithBool:entry_0.b];
-        newElement_0.c = [MTRTestClusterClusterSimpleStruct new];
+        newElement_0.c = [MTRUnitTestingClusterSimpleStruct new];
         newElement_0.c.a = [NSNumber numberWithUnsignedChar:entry_0.c.a];
         newElement_0.c.b = [NSNumber numberWithBool:entry_0.c.b];
         newElement_0.c.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c.c)];
@@ -12848,8 +12848,8 @@
             auto iter_2 = entry_0.d.begin();
             while (iter_2.Next()) {
                 auto & entry_2 = iter_2.GetValue();
-                MTRTestClusterClusterSimpleStruct * newElement_2;
-                newElement_2 = [MTRTestClusterClusterSimpleStruct new];
+                MTRUnitTestingClusterSimpleStruct * newElement_2;
+                newElement_2 = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_2.a = [NSNumber numberWithUnsignedChar:entry_2.a];
                 newElement_2.b = [NSNumber numberWithBool:entry_2.b];
                 newElement_2.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_2.c)];
@@ -12932,8 +12932,8 @@
 auto iter_0 = data.arg2.begin();
 while (iter_0.Next()) {
     auto & entry_0 = iter_0.GetValue();
-    MTRTestClusterClusterSimpleStruct * newElement_0;
-    newElement_0 = [MTRTestClusterClusterSimpleStruct new];
+    MTRUnitTestingClusterSimpleStruct * newElement_0;
+    newElement_0 = [MTRUnitTestingClusterSimpleStruct new];
     newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
     newElement_0.b = [NSNumber numberWithBool:entry_0.b];
     newElement_0.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c)];
@@ -12996,10 +12996,10 @@
 }
 ;
 
-void MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & data)
+void MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestListInt8UReverseResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestListInt8UReverseResponseParams new];
     {
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
@@ -13021,10 +13021,10 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestEnumsResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & data)
+void MTRUnitTestingClusterTestEnumsResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestEnumsResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestEnumsResponseParams new];
     {
         response.arg1 = [NSNumber numberWithUnsignedShort:chip::to_underlying(data.arg1)];
     }
@@ -13034,10 +13034,10 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType & data)
+void MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestNullableOptionalResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestNullableOptionalResponseParams new];
     {
         response.wasPresent = [NSNumber numberWithBool:data.wasPresent];
     }
@@ -13069,10 +13069,10 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType & data)
+void MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestComplexNullableOptionalResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestComplexNullableOptionalResponseParams new];
     {
         response.nullableIntWasNull = [NSNumber numberWithBool:data.nullableIntWasNull];
     }
@@ -13158,7 +13158,7 @@
     }
     {
         if (data.nullableStructValue.HasValue()) {
-            response.nullableStructValue = [MTRTestClusterClusterSimpleStruct new];
+            response.nullableStructValue = [MTRUnitTestingClusterSimpleStruct new];
             response.nullableStructValue.a = [NSNumber numberWithUnsignedChar:data.nullableStructValue.Value().a];
             response.nullableStructValue.b = [NSNumber numberWithBool:data.nullableStructValue.Value().b];
             response.nullableStructValue.c =
@@ -13180,7 +13180,7 @@
     }
     {
         if (data.optionalStructValue.HasValue()) {
-            response.optionalStructValue = [MTRTestClusterClusterSimpleStruct new];
+            response.optionalStructValue = [MTRUnitTestingClusterSimpleStruct new];
             response.optionalStructValue.a = [NSNumber numberWithUnsignedChar:data.optionalStructValue.Value().a];
             response.optionalStructValue.b = [NSNumber numberWithBool:data.optionalStructValue.Value().b];
             response.optionalStructValue.c =
@@ -13209,7 +13209,7 @@
     }
     {
         if (data.nullableOptionalStructValue.HasValue()) {
-            response.nullableOptionalStructValue = [MTRTestClusterClusterSimpleStruct new];
+            response.nullableOptionalStructValue = [MTRUnitTestingClusterSimpleStruct new];
             response.nullableOptionalStructValue.a = [NSNumber numberWithUnsignedChar:data.nullableOptionalStructValue.Value().a];
             response.nullableOptionalStructValue.b = [NSNumber numberWithBool:data.nullableOptionalStructValue.Value().b];
             response.nullableOptionalStructValue.c =
@@ -13313,22 +13313,22 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterBooleanResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & data)
+void MTRUnitTestingClusterBooleanResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterBooleanResponseParams new];
+    auto * response = [MTRUnitTestingClusterBooleanResponseParams new];
     {
         response.value = [NSNumber numberWithBool:data.value];
     }
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterSimpleStructResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & data)
+void MTRUnitTestingClusterSimpleStructResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterSimpleStructResponseParams new];
+    auto * response = [MTRUnitTestingClusterSimpleStructResponseParams new];
     {
-        response.arg1 = [MTRTestClusterClusterSimpleStruct new];
+        response.arg1 = [MTRUnitTestingClusterSimpleStruct new];
         response.arg1.a = [NSNumber numberWithUnsignedChar:data.arg1.a];
         response.arg1.b = [NSNumber numberWithBool:data.arg1.b];
         response.arg1.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(data.arg1.c)];
@@ -13343,20 +13343,20 @@
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType & data)
+void MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestEmitTestEventResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestEmitTestEventResponseParams new];
     {
         response.value = [NSNumber numberWithUnsignedLongLong:data.value];
     }
     DispatchSuccess(context, response);
 };
 
-void MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & data)
+void MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & data)
 {
-    auto * response = [MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams new];
+    auto * response = [MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams new];
     {
         response.value = [NSNumber numberWithUnsignedLongLong:data.value];
     }
@@ -19286,17 +19286,17 @@
     }
 }
 
-void MTRTestClusterClusterSimpleEnumAttributeCallbackBridge::OnSuccessFn(
-    void * context, chip::app::Clusters::TestCluster::SimpleEnum value)
+void MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnSuccessFn(
+    void * context, chip::app::Clusters::UnitTesting::SimpleEnum value)
 {
     NSNumber * _Nonnull objCValue;
     objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value)];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
@@ -19310,8 +19310,8 @@
     }
 }
 
-void MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::DataModel::Nullable & value)
+void MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::DataModel::Nullable & value)
 {
     NSNumber * _Nullable objCValue;
     if (value.IsNull()) {
@@ -19322,9 +19322,9 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
 {
-    auto * self = static_cast(context);
+    auto * self = static_cast(context);
     if (!self->mQueue) {
         return;
     }
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
index 528d5d99ca7178..6d4b97a1e6d209 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
@@ -113,30 +113,30 @@ typedef void (*ApplicationLauncherClusterLauncherResponseCallbackType)(
     void *, const chip::app::Clusters::ApplicationLauncher::Commands::LauncherResponse::DecodableType &);
 typedef void (*AccountLoginClusterGetSetupPINResponseCallbackType)(
     void *, const chip::app::Clusters::AccountLogin::Commands::GetSetupPINResponse::DecodableType &);
-typedef void (*TestClusterClusterTestSpecificResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType &);
-typedef void (*TestClusterClusterTestAddArgumentsResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType &);
-typedef void (*TestClusterClusterTestSimpleArgumentResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentResponse::DecodableType &);
-typedef void (*TestClusterClusterTestStructArrayArgumentResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType &);
-typedef void (*TestClusterClusterTestListInt8UReverseResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType &);
-typedef void (*TestClusterClusterTestEnumsResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType &);
-typedef void (*TestClusterClusterTestNullableOptionalResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType &);
-typedef void (*TestClusterClusterTestComplexNullableOptionalResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType &);
-typedef void (*TestClusterClusterBooleanResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType &);
-typedef void (*TestClusterClusterSimpleStructResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType &);
-typedef void (*TestClusterClusterTestEmitTestEventResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType &);
-typedef void (*TestClusterClusterTestEmitTestFabricScopedEventResponseCallbackType)(
-    void *, const chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestSpecificResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestAddArgumentsResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestSimpleArgumentResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestStructArrayArgumentResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestListInt8UReverseResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestEnumsResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestNullableOptionalResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestComplexNullableOptionalResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType &);
+typedef void (*UnitTestingClusterBooleanResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType &);
+typedef void (*UnitTestingClusterSimpleStructResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestEmitTestEventResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType &);
+typedef void (*UnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackType)(
+    void *, const chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType &);
 
 typedef void (*IdentifyClusterIdentifyEffectIdentifierAttributeCallback)(void *,
                                                                          chip::app::Clusters::Identify::IdentifyEffectIdentifier);
@@ -527,9 +527,9 @@ typedef void (*ApplicationBasicClusterApplicationStatusEnumAttributeCallback)(
     void *, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum);
 typedef void (*NullableApplicationBasicClusterApplicationStatusEnumAttributeCallback)(
     void *, const chip::app::DataModel::Nullable &);
-typedef void (*TestClusterClusterSimpleEnumAttributeCallback)(void *, chip::app::Clusters::TestCluster::SimpleEnum);
-typedef void (*NullableTestClusterClusterSimpleEnumAttributeCallback)(
-    void *, const chip::app::DataModel::Nullable &);
+typedef void (*UnitTestingClusterSimpleEnumAttributeCallback)(void *, chip::app::Clusters::UnitTesting::SimpleEnum);
+typedef void (*NullableUnitTestingClusterSimpleEnumAttributeCallback)(
+    void *, const chip::app::DataModel::Nullable &);
 typedef void (*FaultInjectionClusterFaultTypeAttributeCallback)(void *, chip::app::Clusters::FaultInjection::FaultType);
 typedef void (*NullableFaultInjectionClusterFaultTypeAttributeCallback)(
     void *, const chip::app::DataModel::Nullable &);
@@ -1071,44 +1071,44 @@ typedef void (*ElectricalMeasurementAcceptedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
 typedef void (*ElectricalMeasurementAttributeListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterBitmap8AttributeCallback)(void *, chip::BitMask);
-typedef void (*TestClusterBitmap16AttributeCallback)(void *, chip::BitMask);
-typedef void (*TestClusterBitmap32AttributeCallback)(void *, chip::BitMask);
-typedef void (*TestClusterBitmap64AttributeCallback)(void *, chip::BitMask);
-typedef void (*TestClusterListInt8uListAttributeCallback)(void * context,
+typedef void (*UnitTestingBitmap8AttributeCallback)(void *, chip::BitMask);
+typedef void (*UnitTestingBitmap16AttributeCallback)(void *, chip::BitMask);
+typedef void (*UnitTestingBitmap32AttributeCallback)(void *, chip::BitMask);
+typedef void (*UnitTestingBitmap64AttributeCallback)(void *, chip::BitMask);
+typedef void (*UnitTestingListInt8uListAttributeCallback)(void * context,
                                                           const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListOctetStringListAttributeCallback)(void * context,
+typedef void (*UnitTestingListOctetStringListAttributeCallback)(void * context,
                                                                 const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListStructOctetStringListAttributeCallback)(
+typedef void (*UnitTestingListStructOctetStringListAttributeCallback)(
     void * context,
-    const chip::app::DataModel::DecodableList &
+    const chip::app::DataModel::DecodableList &
         data);
-typedef void (*TestClusterListNullablesAndOptionalsStructListAttributeCallback)(
+typedef void (*UnitTestingListNullablesAndOptionalsStructListAttributeCallback)(
     void * context,
     const chip::app::DataModel::DecodableList<
-        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & data);
-typedef void (*TestClusterStructAttrStructAttributeCallback)(
-    void *, const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType &);
-typedef void (*TestClusterListLongOctetStringListAttributeCallback)(
+        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & data);
+typedef void (*UnitTestingStructAttrStructAttributeCallback)(
+    void *, const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType &);
+typedef void (*UnitTestingListLongOctetStringListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListFabricScopedListAttributeCallback)(
+typedef void (*UnitTestingListFabricScopedListAttributeCallback)(
     void * context,
-    const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterNullableBitmap8AttributeCallback)(
-    void *, const chip::app::DataModel::Nullable> &);
-typedef void (*TestClusterNullableBitmap16AttributeCallback)(
-    void *, const chip::app::DataModel::Nullable> &);
-typedef void (*TestClusterNullableBitmap32AttributeCallback)(
-    void *, const chip::app::DataModel::Nullable> &);
-typedef void (*TestClusterNullableBitmap64AttributeCallback)(
-    void *, const chip::app::DataModel::Nullable> &);
-typedef void (*TestClusterNullableStructStructAttributeCallback)(
-    void *, const chip::app::DataModel::Nullable &);
-typedef void (*TestClusterGeneratedCommandListListAttributeCallback)(
+    const chip::app::DataModel::DecodableList & data);
+typedef void (*UnitTestingNullableBitmap8AttributeCallback)(
+    void *, const chip::app::DataModel::Nullable> &);
+typedef void (*UnitTestingNullableBitmap16AttributeCallback)(
+    void *, const chip::app::DataModel::Nullable> &);
+typedef void (*UnitTestingNullableBitmap32AttributeCallback)(
+    void *, const chip::app::DataModel::Nullable> &);
+typedef void (*UnitTestingNullableBitmap64AttributeCallback)(
+    void *, const chip::app::DataModel::Nullable> &);
+typedef void (*UnitTestingNullableStructStructAttributeCallback)(
+    void *, const chip::app::DataModel::Nullable &);
+typedef void (*UnitTestingGeneratedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterAcceptedCommandListListAttributeCallback)(
+typedef void (*UnitTestingAcceptedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterAttributeListListAttributeCallback)(void * context,
+typedef void (*UnitTestingAttributeListListAttributeCallback)(void * context,
                                                               const chip::app::DataModel::DecodableList & data);
 
 class MTRDefaultSuccessCallbackBridge : public MTRCallbackBridge
@@ -10193,618 +10193,618 @@ class MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBrid
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterBitmap8AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingBitmap8AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, chip::BitMask value);
+    static void OnSuccessFn(void * context, chip::BitMask value);
 };
 
-class MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap8AttributeCallbackBridge
+class MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge : public MTRUnitTestingBitmap8AttributeCallbackBridge
 {
 public:
-    MTRTestClusterBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+    MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
                                                              MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterBitmap8AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingBitmap8AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterBitmap8AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingBitmap8AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterBitmap16AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingBitmap16AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, chip::BitMask value);
+    static void OnSuccessFn(void * context, chip::BitMask value);
 };
 
-class MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap16AttributeCallbackBridge
+class MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge : public MTRUnitTestingBitmap16AttributeCallbackBridge
 {
 public:
-    MTRTestClusterBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                               MTRActionBlock action,
                                                               MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterBitmap16AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingBitmap16AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterBitmap16AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingBitmap16AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterBitmap32AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingBitmap32AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, chip::BitMask value);
+    static void OnSuccessFn(void * context, chip::BitMask value);
 };
 
-class MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap32AttributeCallbackBridge
+class MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge : public MTRUnitTestingBitmap32AttributeCallbackBridge
 {
 public:
-    MTRTestClusterBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                               MTRActionBlock action,
                                                               MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterBitmap32AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingBitmap32AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterBitmap32AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingBitmap32AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterBitmap64AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingBitmap64AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, chip::BitMask value);
+    static void OnSuccessFn(void * context, chip::BitMask value);
 };
 
-class MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge : public MTRTestClusterBitmap64AttributeCallbackBridge
+class MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge : public MTRUnitTestingBitmap64AttributeCallbackBridge
 {
 public:
-    MTRTestClusterBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                               MTRActionBlock action,
                                                               MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterBitmap64AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingBitmap64AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterBitmap64AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingBitmap64AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListInt8uListAttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingListInt8uListAttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingListInt8uListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge : public MTRTestClusterListInt8uListAttributeCallbackBridge
+class MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge : public MTRUnitTestingListInt8uListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListInt8uListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                    MTRActionBlock action,
                                                                    MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListInt8uListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListInt8uListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListInt8uListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListInt8uListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListInt8uListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListInt8uListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListOctetStringListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingListOctetStringListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                              MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterListOctetStringListAttributeCallbackBridge
+class MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingListOctetStringListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                          MTRActionBlock action,
                                                                          MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListOctetStringListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListOctetStringListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListOctetStringListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListOctetStringListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListStructOctetStringListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingListStructOctetStringListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                    MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(
         void * context,
-        const chip::app::DataModel::DecodableList &
+        const chip::app::DataModel::DecodableList &
             value);
 };
 
-class MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterListStructOctetStringListAttributeCallbackBridge
+class MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingListStructOctetStringListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListStructOctetStringListAttributeCallbackSubscriptionBridge(
+    MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge(
         dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
         MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListStructOctetStringListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListStructOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListStructOctetStringListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListStructOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListStructOctetStringListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                              MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
                             const chip::app::DataModel::DecodableList<
-                                chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & value);
+                                chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & value);
 };
 
-class MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge
+class MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge(
+    MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge(
         dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
         MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListNullablesAndOptionalsStructListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterStructAttrStructAttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingStructAttrStructAttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingStructAttrStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType & value);
+    static void OnSuccessFn(void * context, const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType & value);
 };
 
-class MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterStructAttrStructAttributeCallbackBridge
+class MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingStructAttrStructAttributeCallbackBridge
 {
 public:
-    MTRTestClusterStructAttrStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                       MTRActionBlock action,
                                                                       MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterStructAttrStructAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingStructAttrStructAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterStructAttrStructAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterStructAttrStructAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingStructAttrStructAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingStructAttrStructAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListLongOctetStringListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingListLongOctetStringListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                  MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterListLongOctetStringListAttributeCallbackBridge
+class MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingListLongOctetStringListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListLongOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                              MTRActionBlock action,
                                                                              MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListLongOctetStringListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListLongOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListLongOctetStringListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListLongOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListLongOctetStringListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterListFabricScopedListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingListFabricScopedListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListFabricScopedListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                               MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(
         void * context,
-        const chip::app::DataModel::DecodableList &
+        const chip::app::DataModel::DecodableList &
             value);
 };
 
-class MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterListFabricScopedListAttributeCallbackBridge
+class MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingListFabricScopedListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterListFabricScopedListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                           MTRActionBlock action,
                                                                           MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterListFabricScopedListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingListFabricScopedListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterListFabricScopedListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterListFabricScopedListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingListFabricScopedListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingListFabricScopedListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterNullableBitmap8AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingNullableBitmap8AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap8AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::DataModel::Nullable> & value);
+                const chip::app::DataModel::Nullable> & value);
 };
 
-class MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge : public MTRTestClusterNullableBitmap8AttributeCallbackBridge
+class MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge : public MTRUnitTestingNullableBitmap8AttributeCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                      MTRActionBlock action,
                                                                      MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterNullableBitmap8AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingNullableBitmap8AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterNullableBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterNullableBitmap8AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingNullableBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingNullableBitmap8AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterNullableBitmap16AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingNullableBitmap16AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap16AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::DataModel::Nullable> & value);
+                const chip::app::DataModel::Nullable> & value);
 };
 
-class MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge
-    : public MTRTestClusterNullableBitmap16AttributeCallbackBridge
+class MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingNullableBitmap16AttributeCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                       MTRActionBlock action,
                                                                       MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterNullableBitmap16AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingNullableBitmap16AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterNullableBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterNullableBitmap16AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingNullableBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingNullableBitmap16AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterNullableBitmap32AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingNullableBitmap32AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap32AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::DataModel::Nullable> & value);
+                const chip::app::DataModel::Nullable> & value);
 };
 
-class MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge
-    : public MTRTestClusterNullableBitmap32AttributeCallbackBridge
+class MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingNullableBitmap32AttributeCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                       MTRActionBlock action,
                                                                       MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterNullableBitmap32AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingNullableBitmap32AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterNullableBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterNullableBitmap32AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingNullableBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingNullableBitmap32AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterNullableBitmap64AttributeCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingNullableBitmap64AttributeCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingNullableBitmap64AttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::DataModel::Nullable> & value);
+                const chip::app::DataModel::Nullable> & value);
 };
 
-class MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge
-    : public MTRTestClusterNullableBitmap64AttributeCallbackBridge
+class MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingNullableBitmap64AttributeCallbackBridge
 {
 public:
-    MTRTestClusterNullableBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                       MTRActionBlock action,
                                                                       MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterNullableBitmap64AttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingNullableBitmap64AttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterNullableBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterNullableBitmap64AttributeCallbackBridge::OnDone;
+    using MTRUnitTestingNullableBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingNullableBitmap64AttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterNullableStructStructAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingNullableStructStructAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableStructStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                               MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(
         void * context,
-        const chip::app::DataModel::Nullable & value);
+        const chip::app::DataModel::Nullable & value);
 };
 
-class MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterNullableStructStructAttributeCallbackBridge
+class MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingNullableStructStructAttributeCallbackBridge
 {
 public:
-    MTRTestClusterNullableStructStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                           MTRActionBlock action,
                                                                           MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterNullableStructStructAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingNullableStructStructAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterNullableStructStructAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterNullableStructStructAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingNullableStructStructAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingNullableStructStructAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterGeneratedCommandListListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                   MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterGeneratedCommandListListAttributeCallbackBridge
+class MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterGeneratedCommandListListAttributeCallbackSubscriptionBridge(
+    MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge(
         dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
         MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterGeneratedCommandListListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterAcceptedCommandListListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                  MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterAcceptedCommandListListAttributeCallbackBridge
+class MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                              MTRActionBlock action,
                                                                              MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterAcceptedCommandListListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterAttributeListListAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingAttributeListListAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
 };
 
-class MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterAttributeListListAttributeCallbackBridge
+class MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingAttributeListListAttributeCallbackBridge
 {
 public:
-    MTRTestClusterAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                        MTRActionBlock action,
                                                                        MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterAttributeListListAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingAttributeListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterAttributeListListAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingAttributeListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
@@ -11414,185 +11414,185 @@ class MTRAccountLoginClusterGetSetupPINResponseCallbackBridge
                             const chip::app::Clusters::AccountLogin::Commands::GetSetupPINResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestSpecificResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestSpecificResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestSpecificResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                             MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                 MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                   MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                        MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType & data);
+                const chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                     MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestEnumsResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestEnumsResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingClusterTestEnumsResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                     MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                            MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType & data);
+                const chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterBooleanResponseCallbackBridge : public MTRCallbackBridge
+class MTRUnitTestingClusterBooleanResponseCallbackBridge : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingClusterBooleanResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterSimpleStructResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterSimpleStructResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterSimpleStructResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                             MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                  MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType & data);
+                            const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & data);
 };
 
-class MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                              MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action,
+        MTRCallbackBridge(queue, handler, action,
                                                                                                OnSuccessFn){};
 
     static void
     OnSuccessFn(void * context,
-                const chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & data);
+                const chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & data);
 };
 
 class MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge
@@ -19222,67 +19222,67 @@ class MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSu
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRTestClusterClusterSimpleEnumAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+    MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
-    static void OnSuccessFn(void * context, chip::app::Clusters::TestCluster::SimpleEnum value);
+    static void OnSuccessFn(void * context, chip::app::Clusters::UnitTesting::SimpleEnum value);
 };
 
-class MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge
-    : public MTRTestClusterClusterSimpleEnumAttributeCallbackBridge
+class MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge
+    : public MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge
 {
 public:
-    MTRTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                        MTRActionBlock action,
                                                                        MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, handler, action),
+        MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRTestClusterClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRTestClusterClusterSimpleEnumAttributeCallbackBridge::OnDone;
+    using MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge
-    : public MTRCallbackBridge
+class MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge
+    : public MTRCallbackBridge
 {
 public:
-    MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge(queue, handler, OnSuccessFn){};
+    MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge(queue, handler, OnSuccessFn){};
 
-    MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+    MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
                                                                    MTRActionBlock action) :
-        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+        MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::DataModel::Nullable & value);
+                            const chip::app::DataModel::Nullable & value);
 };
 
-class MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge
-    : public MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge
+class MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge
+    : public MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge
 {
 public:
-    MTRNullableTestClusterClusterSimpleEnumAttributeCallbackSubscriptionBridge(
+    MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(
         dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
         MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge(queue, handler, action),
+        MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     static void OnSubscriptionEstablished(void * context);
-    using MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRNullableTestClusterClusterSimpleEnumAttributeCallbackBridge::OnDone;
+    using MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 7fd7b4d7d7b91b..8b74552d362f42 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -90,7 +90,7 @@ typedef NS_ENUM(uint32_t, MTRClusterIDType) {
     MTRClusterApplicationBasicID = 0x0000050D,
     MTRClusterAccountLoginID = 0x0000050E,
     MTRClusterElectricalMeasurementID = 0x00000B04,
-    MTRClusterTestClusterID = 0xFFF1FC05,
+    MTRClusterUnitTestingID = 0xFFF1FC05,
     MTRClusterFaultInjectionID = 0xFFF1FC06,
 };
 
@@ -1278,94 +1278,94 @@ typedef NS_ENUM(uint32_t, MTRClusterAttributeIDType) {
     MTRClusterElectricalMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
     MTRClusterElectricalMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
 
-    // Cluster TestCluster attributes
-    MTRClusterTestClusterAttributeBooleanID = 0x00000000,
-    MTRClusterTestClusterAttributeBitmap8ID = 0x00000001,
-    MTRClusterTestClusterAttributeBitmap16ID = 0x00000002,
-    MTRClusterTestClusterAttributeBitmap32ID = 0x00000003,
-    MTRClusterTestClusterAttributeBitmap64ID = 0x00000004,
-    MTRClusterTestClusterAttributeInt8uID = 0x00000005,
-    MTRClusterTestClusterAttributeInt16uID = 0x00000006,
-    MTRClusterTestClusterAttributeInt24uID = 0x00000007,
-    MTRClusterTestClusterAttributeInt32uID = 0x00000008,
-    MTRClusterTestClusterAttributeInt40uID = 0x00000009,
-    MTRClusterTestClusterAttributeInt48uID = 0x0000000A,
-    MTRClusterTestClusterAttributeInt56uID = 0x0000000B,
-    MTRClusterTestClusterAttributeInt64uID = 0x0000000C,
-    MTRClusterTestClusterAttributeInt8sID = 0x0000000D,
-    MTRClusterTestClusterAttributeInt16sID = 0x0000000E,
-    MTRClusterTestClusterAttributeInt24sID = 0x0000000F,
-    MTRClusterTestClusterAttributeInt32sID = 0x00000010,
-    MTRClusterTestClusterAttributeInt40sID = 0x00000011,
-    MTRClusterTestClusterAttributeInt48sID = 0x00000012,
-    MTRClusterTestClusterAttributeInt56sID = 0x00000013,
-    MTRClusterTestClusterAttributeInt64sID = 0x00000014,
-    MTRClusterTestClusterAttributeEnum8ID = 0x00000015,
-    MTRClusterTestClusterAttributeEnum16ID = 0x00000016,
-    MTRClusterTestClusterAttributeFloatSingleID = 0x00000017,
-    MTRClusterTestClusterAttributeFloatDoubleID = 0x00000018,
-    MTRClusterTestClusterAttributeOctetStringID = 0x00000019,
-    MTRClusterTestClusterAttributeListInt8uID = 0x0000001A,
-    MTRClusterTestClusterAttributeListOctetStringID = 0x0000001B,
-    MTRClusterTestClusterAttributeListStructOctetStringID = 0x0000001C,
-    MTRClusterTestClusterAttributeLongOctetStringID = 0x0000001D,
-    MTRClusterTestClusterAttributeCharStringID = 0x0000001E,
-    MTRClusterTestClusterAttributeLongCharStringID = 0x0000001F,
-    MTRClusterTestClusterAttributeEpochUsID = 0x00000020,
-    MTRClusterTestClusterAttributeEpochSID = 0x00000021,
-    MTRClusterTestClusterAttributeVendorIdID = 0x00000022,
-    MTRClusterTestClusterAttributeListNullablesAndOptionalsStructID = 0x00000023,
-    MTRClusterTestClusterAttributeEnumAttrID = 0x00000024,
-    MTRClusterTestClusterAttributeStructAttrID = 0x00000025,
-    MTRClusterTestClusterAttributeRangeRestrictedInt8uID = 0x00000026,
-    MTRClusterTestClusterAttributeRangeRestrictedInt8sID = 0x00000027,
-    MTRClusterTestClusterAttributeRangeRestrictedInt16uID = 0x00000028,
-    MTRClusterTestClusterAttributeRangeRestrictedInt16sID = 0x00000029,
-    MTRClusterTestClusterAttributeListLongOctetStringID = 0x0000002A,
-    MTRClusterTestClusterAttributeListFabricScopedID = 0x0000002B,
-    MTRClusterTestClusterAttributeTimedWriteBooleanID = 0x00000030,
-    MTRClusterTestClusterAttributeGeneralErrorBooleanID = 0x00000031,
-    MTRClusterTestClusterAttributeClusterErrorBooleanID = 0x00000032,
-    MTRClusterTestClusterAttributeUnsupportedID = 0x000000FF,
-    MTRClusterTestClusterAttributeNullableBooleanID = 0x00004000,
-    MTRClusterTestClusterAttributeNullableBitmap8ID = 0x00004001,
-    MTRClusterTestClusterAttributeNullableBitmap16ID = 0x00004002,
-    MTRClusterTestClusterAttributeNullableBitmap32ID = 0x00004003,
-    MTRClusterTestClusterAttributeNullableBitmap64ID = 0x00004004,
-    MTRClusterTestClusterAttributeNullableInt8uID = 0x00004005,
-    MTRClusterTestClusterAttributeNullableInt16uID = 0x00004006,
-    MTRClusterTestClusterAttributeNullableInt24uID = 0x00004007,
-    MTRClusterTestClusterAttributeNullableInt32uID = 0x00004008,
-    MTRClusterTestClusterAttributeNullableInt40uID = 0x00004009,
-    MTRClusterTestClusterAttributeNullableInt48uID = 0x0000400A,
-    MTRClusterTestClusterAttributeNullableInt56uID = 0x0000400B,
-    MTRClusterTestClusterAttributeNullableInt64uID = 0x0000400C,
-    MTRClusterTestClusterAttributeNullableInt8sID = 0x0000400D,
-    MTRClusterTestClusterAttributeNullableInt16sID = 0x0000400E,
-    MTRClusterTestClusterAttributeNullableInt24sID = 0x0000400F,
-    MTRClusterTestClusterAttributeNullableInt32sID = 0x00004010,
-    MTRClusterTestClusterAttributeNullableInt40sID = 0x00004011,
-    MTRClusterTestClusterAttributeNullableInt48sID = 0x00004012,
-    MTRClusterTestClusterAttributeNullableInt56sID = 0x00004013,
-    MTRClusterTestClusterAttributeNullableInt64sID = 0x00004014,
-    MTRClusterTestClusterAttributeNullableEnum8ID = 0x00004015,
-    MTRClusterTestClusterAttributeNullableEnum16ID = 0x00004016,
-    MTRClusterTestClusterAttributeNullableFloatSingleID = 0x00004017,
-    MTRClusterTestClusterAttributeNullableFloatDoubleID = 0x00004018,
-    MTRClusterTestClusterAttributeNullableOctetStringID = 0x00004019,
-    MTRClusterTestClusterAttributeNullableCharStringID = 0x0000401E,
-    MTRClusterTestClusterAttributeNullableEnumAttrID = 0x00004024,
-    MTRClusterTestClusterAttributeNullableStructID = 0x00004025,
-    MTRClusterTestClusterAttributeNullableRangeRestrictedInt8uID = 0x00004026,
-    MTRClusterTestClusterAttributeNullableRangeRestrictedInt8sID = 0x00004027,
-    MTRClusterTestClusterAttributeNullableRangeRestrictedInt16uID = 0x00004028,
-    MTRClusterTestClusterAttributeNullableRangeRestrictedInt16sID = 0x00004029,
-    MTRClusterTestClusterAttributeWriteOnlyInt8uID = 0x0000402A,
-    MTRClusterTestClusterAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTestClusterAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTestClusterAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTestClusterAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTestClusterAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    // Cluster UnitTesting attributes
+    MTRClusterUnitTestingAttributeBooleanID = 0x00000000,
+    MTRClusterUnitTestingAttributeBitmap8ID = 0x00000001,
+    MTRClusterUnitTestingAttributeBitmap16ID = 0x00000002,
+    MTRClusterUnitTestingAttributeBitmap32ID = 0x00000003,
+    MTRClusterUnitTestingAttributeBitmap64ID = 0x00000004,
+    MTRClusterUnitTestingAttributeInt8uID = 0x00000005,
+    MTRClusterUnitTestingAttributeInt16uID = 0x00000006,
+    MTRClusterUnitTestingAttributeInt24uID = 0x00000007,
+    MTRClusterUnitTestingAttributeInt32uID = 0x00000008,
+    MTRClusterUnitTestingAttributeInt40uID = 0x00000009,
+    MTRClusterUnitTestingAttributeInt48uID = 0x0000000A,
+    MTRClusterUnitTestingAttributeInt56uID = 0x0000000B,
+    MTRClusterUnitTestingAttributeInt64uID = 0x0000000C,
+    MTRClusterUnitTestingAttributeInt8sID = 0x0000000D,
+    MTRClusterUnitTestingAttributeInt16sID = 0x0000000E,
+    MTRClusterUnitTestingAttributeInt24sID = 0x0000000F,
+    MTRClusterUnitTestingAttributeInt32sID = 0x00000010,
+    MTRClusterUnitTestingAttributeInt40sID = 0x00000011,
+    MTRClusterUnitTestingAttributeInt48sID = 0x00000012,
+    MTRClusterUnitTestingAttributeInt56sID = 0x00000013,
+    MTRClusterUnitTestingAttributeInt64sID = 0x00000014,
+    MTRClusterUnitTestingAttributeEnum8ID = 0x00000015,
+    MTRClusterUnitTestingAttributeEnum16ID = 0x00000016,
+    MTRClusterUnitTestingAttributeFloatSingleID = 0x00000017,
+    MTRClusterUnitTestingAttributeFloatDoubleID = 0x00000018,
+    MTRClusterUnitTestingAttributeOctetStringID = 0x00000019,
+    MTRClusterUnitTestingAttributeListInt8uID = 0x0000001A,
+    MTRClusterUnitTestingAttributeListOctetStringID = 0x0000001B,
+    MTRClusterUnitTestingAttributeListStructOctetStringID = 0x0000001C,
+    MTRClusterUnitTestingAttributeLongOctetStringID = 0x0000001D,
+    MTRClusterUnitTestingAttributeCharStringID = 0x0000001E,
+    MTRClusterUnitTestingAttributeLongCharStringID = 0x0000001F,
+    MTRClusterUnitTestingAttributeEpochUsID = 0x00000020,
+    MTRClusterUnitTestingAttributeEpochSID = 0x00000021,
+    MTRClusterUnitTestingAttributeVendorIdID = 0x00000022,
+    MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID = 0x00000023,
+    MTRClusterUnitTestingAttributeEnumAttrID = 0x00000024,
+    MTRClusterUnitTestingAttributeStructAttrID = 0x00000025,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt8uID = 0x00000026,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt8sID = 0x00000027,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt16uID = 0x00000028,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt16sID = 0x00000029,
+    MTRClusterUnitTestingAttributeListLongOctetStringID = 0x0000002A,
+    MTRClusterUnitTestingAttributeListFabricScopedID = 0x0000002B,
+    MTRClusterUnitTestingAttributeTimedWriteBooleanID = 0x00000030,
+    MTRClusterUnitTestingAttributeGeneralErrorBooleanID = 0x00000031,
+    MTRClusterUnitTestingAttributeClusterErrorBooleanID = 0x00000032,
+    MTRClusterUnitTestingAttributeUnsupportedID = 0x000000FF,
+    MTRClusterUnitTestingAttributeNullableBooleanID = 0x00004000,
+    MTRClusterUnitTestingAttributeNullableBitmap8ID = 0x00004001,
+    MTRClusterUnitTestingAttributeNullableBitmap16ID = 0x00004002,
+    MTRClusterUnitTestingAttributeNullableBitmap32ID = 0x00004003,
+    MTRClusterUnitTestingAttributeNullableBitmap64ID = 0x00004004,
+    MTRClusterUnitTestingAttributeNullableInt8uID = 0x00004005,
+    MTRClusterUnitTestingAttributeNullableInt16uID = 0x00004006,
+    MTRClusterUnitTestingAttributeNullableInt24uID = 0x00004007,
+    MTRClusterUnitTestingAttributeNullableInt32uID = 0x00004008,
+    MTRClusterUnitTestingAttributeNullableInt40uID = 0x00004009,
+    MTRClusterUnitTestingAttributeNullableInt48uID = 0x0000400A,
+    MTRClusterUnitTestingAttributeNullableInt56uID = 0x0000400B,
+    MTRClusterUnitTestingAttributeNullableInt64uID = 0x0000400C,
+    MTRClusterUnitTestingAttributeNullableInt8sID = 0x0000400D,
+    MTRClusterUnitTestingAttributeNullableInt16sID = 0x0000400E,
+    MTRClusterUnitTestingAttributeNullableInt24sID = 0x0000400F,
+    MTRClusterUnitTestingAttributeNullableInt32sID = 0x00004010,
+    MTRClusterUnitTestingAttributeNullableInt40sID = 0x00004011,
+    MTRClusterUnitTestingAttributeNullableInt48sID = 0x00004012,
+    MTRClusterUnitTestingAttributeNullableInt56sID = 0x00004013,
+    MTRClusterUnitTestingAttributeNullableInt64sID = 0x00004014,
+    MTRClusterUnitTestingAttributeNullableEnum8ID = 0x00004015,
+    MTRClusterUnitTestingAttributeNullableEnum16ID = 0x00004016,
+    MTRClusterUnitTestingAttributeNullableFloatSingleID = 0x00004017,
+    MTRClusterUnitTestingAttributeNullableFloatDoubleID = 0x00004018,
+    MTRClusterUnitTestingAttributeNullableOctetStringID = 0x00004019,
+    MTRClusterUnitTestingAttributeNullableCharStringID = 0x0000401E,
+    MTRClusterUnitTestingAttributeNullableEnumAttrID = 0x00004024,
+    MTRClusterUnitTestingAttributeNullableStructID = 0x00004025,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID = 0x00004026,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID = 0x00004027,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID = 0x00004028,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID = 0x00004029,
+    MTRClusterUnitTestingAttributeWriteOnlyInt8uID = 0x0000402A,
+    MTRClusterUnitTestingAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterUnitTestingAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterUnitTestingAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterUnitTestingAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterUnitTestingAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster FaultInjection attributes
     MTRClusterFaultInjectionAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
@@ -1664,41 +1664,41 @@ typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
     MTRClusterElectricalMeasurementCommandGetMeasurementProfileResponseCommandID = 0x00000001,
     MTRClusterElectricalMeasurementCommandGetMeasurementProfileCommandID = 0x00000001,
 
-    // Cluster TestCluster commands
-    MTRClusterTestClusterCommandTestID = 0x00000000,
-    MTRClusterTestClusterCommandTestSpecificResponseID = 0x00000000,
-    MTRClusterTestClusterCommandTestNotHandledID = 0x00000001,
-    MTRClusterTestClusterCommandTestAddArgumentsResponseID = 0x00000001,
-    MTRClusterTestClusterCommandTestSpecificID = 0x00000002,
-    MTRClusterTestClusterCommandTestSimpleArgumentResponseID = 0x00000002,
-    MTRClusterTestClusterCommandTestUnknownCommandID = 0x00000003,
-    MTRClusterTestClusterCommandTestStructArrayArgumentResponseID = 0x00000003,
-    MTRClusterTestClusterCommandTestAddArgumentsID = 0x00000004,
-    MTRClusterTestClusterCommandTestListInt8UReverseResponseID = 0x00000004,
-    MTRClusterTestClusterCommandTestSimpleArgumentRequestID = 0x00000005,
-    MTRClusterTestClusterCommandTestEnumsResponseID = 0x00000005,
-    MTRClusterTestClusterCommandTestStructArrayArgumentRequestID = 0x00000006,
-    MTRClusterTestClusterCommandTestNullableOptionalResponseID = 0x00000006,
-    MTRClusterTestClusterCommandTestStructArgumentRequestID = 0x00000007,
-    MTRClusterTestClusterCommandTestComplexNullableOptionalResponseID = 0x00000007,
-    MTRClusterTestClusterCommandTestNestedStructArgumentRequestID = 0x00000008,
-    MTRClusterTestClusterCommandBooleanResponseID = 0x00000008,
-    MTRClusterTestClusterCommandTestListStructArgumentRequestID = 0x00000009,
-    MTRClusterTestClusterCommandSimpleStructResponseID = 0x00000009,
-    MTRClusterTestClusterCommandTestListInt8UArgumentRequestID = 0x0000000A,
-    MTRClusterTestClusterCommandTestEmitTestEventResponseID = 0x0000000A,
-    MTRClusterTestClusterCommandTestNestedStructListArgumentRequestID = 0x0000000B,
-    MTRClusterTestClusterCommandTestEmitTestFabricScopedEventResponseID = 0x0000000B,
-    MTRClusterTestClusterCommandTestListNestedStructListArgumentRequestID = 0x0000000C,
-    MTRClusterTestClusterCommandTestListInt8UReverseRequestID = 0x0000000D,
-    MTRClusterTestClusterCommandTestEnumsRequestID = 0x0000000E,
-    MTRClusterTestClusterCommandTestNullableOptionalRequestID = 0x0000000F,
-    MTRClusterTestClusterCommandTestComplexNullableOptionalRequestID = 0x00000010,
-    MTRClusterTestClusterCommandSimpleStructEchoRequestID = 0x00000011,
-    MTRClusterTestClusterCommandTimedInvokeRequestID = 0x00000012,
-    MTRClusterTestClusterCommandTestSimpleOptionalArgumentRequestID = 0x00000013,
-    MTRClusterTestClusterCommandTestEmitTestEventRequestID = 0x00000014,
-    MTRClusterTestClusterCommandTestEmitTestFabricScopedEventRequestID = 0x00000015,
+    // Cluster UnitTesting commands
+    MTRClusterUnitTestingCommandTestID = 0x00000000,
+    MTRClusterUnitTestingCommandTestSpecificResponseID = 0x00000000,
+    MTRClusterUnitTestingCommandTestNotHandledID = 0x00000001,
+    MTRClusterUnitTestingCommandTestAddArgumentsResponseID = 0x00000001,
+    MTRClusterUnitTestingCommandTestSpecificID = 0x00000002,
+    MTRClusterUnitTestingCommandTestSimpleArgumentResponseID = 0x00000002,
+    MTRClusterUnitTestingCommandTestUnknownCommandID = 0x00000003,
+    MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID = 0x00000003,
+    MTRClusterUnitTestingCommandTestAddArgumentsID = 0x00000004,
+    MTRClusterUnitTestingCommandTestListInt8UReverseResponseID = 0x00000004,
+    MTRClusterUnitTestingCommandTestSimpleArgumentRequestID = 0x00000005,
+    MTRClusterUnitTestingCommandTestEnumsResponseID = 0x00000005,
+    MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID = 0x00000006,
+    MTRClusterUnitTestingCommandTestNullableOptionalResponseID = 0x00000006,
+    MTRClusterUnitTestingCommandTestStructArgumentRequestID = 0x00000007,
+    MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID = 0x00000007,
+    MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID = 0x00000008,
+    MTRClusterUnitTestingCommandBooleanResponseID = 0x00000008,
+    MTRClusterUnitTestingCommandTestListStructArgumentRequestID = 0x00000009,
+    MTRClusterUnitTestingCommandSimpleStructResponseID = 0x00000009,
+    MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID = 0x0000000A,
+    MTRClusterUnitTestingCommandTestEmitTestEventResponseID = 0x0000000A,
+    MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID = 0x0000000B,
+    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID = 0x0000000B,
+    MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID = 0x0000000C,
+    MTRClusterUnitTestingCommandTestListInt8UReverseRequestID = 0x0000000D,
+    MTRClusterUnitTestingCommandTestEnumsRequestID = 0x0000000E,
+    MTRClusterUnitTestingCommandTestNullableOptionalRequestID = 0x0000000F,
+    MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID = 0x00000010,
+    MTRClusterUnitTestingCommandSimpleStructEchoRequestID = 0x00000011,
+    MTRClusterUnitTestingCommandTimedInvokeRequestID = 0x00000012,
+    MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID = 0x00000013,
+    MTRClusterUnitTestingCommandTestEmitTestEventRequestID = 0x00000014,
+    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID = 0x00000015,
 
     // Cluster FaultInjection commands
     MTRClusterFaultInjectionCommandFailAtFaultID = 0x00000000,
@@ -1790,8 +1790,8 @@ typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
     MTRClusterPumpConfigurationAndControlEventAirDetectionID = 0x0000000F,
     MTRClusterPumpConfigurationAndControlEventTurbineOperationID = 0x00000010,
 
-    // Cluster TestCluster events
-    MTRClusterTestClusterEventTestEventID = 0x00000001,
-    MTRClusterTestClusterEventTestFabricScopedEventID = 0x00000002,
+    // Cluster UnitTesting events
+    MTRClusterUnitTestingEventTestEventID = 0x00000001,
+    MTRClusterUnitTestingEventTestFabricScopedEventID = 0x00000002,
 
 };
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index 0d60afec930142..9dbe71183a2c39 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -4595,146 +4595,146 @@ labels.
 @end
 
 /**
- * Cluster Test Cluster
+ * Cluster Unit Testing
  *    The Test Cluster is meant to validate the generated code
  */
-@interface MTRClusterTestCluster : MTRCluster
+@interface MTRClusterUnitTesting : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRDevice *)device
                               endpointID:(NSNumber *)endpointID
                                    queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testWithExpectedValues:(NSArray *> *)expectedValues
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testNotHandledWithExpectedValues:(NSArray *> *)expectedValues
                    expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                    completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                    completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                            completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                            completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)testUnknownCommandWithExpectedValues:(NSArray *> *)expectedValues
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completion:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+                        completion:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                 completion:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+                                 completion:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                       completion:
-                                          (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                          (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                 completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                 completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                       completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                       completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                           expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                     completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                     completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                    completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                    completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:
                                            (NSArray *> * _Nullable)expectedDataValueDictionaries
                                 expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                           completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                           completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:
                                                (NSArray *> * _Nullable)expectedDataValueDictionaries
                                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                               completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                               completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                   completion:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+                                   completion:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completion:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+                        completion:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                   completion:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+                                   completion:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)
-    testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+    testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                       completion:
-                                          (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                          (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                               completion:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+                               completion:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)timedInvokeRequestWithExpectedValues:(NSArray *> *)expectedValues
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                      expectedValues:
                                          (NSArray *> * _Nullable)expectedDataValueDictionaries
                               expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                      expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                completion:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+                                completion:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)
-    testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+    testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                     expectedValues:
                                         (NSArray *> * _Nullable)expectedDataValueDictionaries
                              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                         completion:
                                             (void (^)(
-                                                MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (NSDictionary *)readAttributeBooleanWithParams:(MTRReadParams * _Nullable)params;
@@ -5304,15 +5304,12 @@ labels.
                                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                                       params:(MTRWriteParams * _Nullable)params;
 
-- (NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
+- (NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params;
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)dataValueDictionary
-                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
+                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs;
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)dataValueDictionary
                         expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                       params:(MTRWriteParams * _Nullable)params
-    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
+                                       params:(MTRWriteParams * _Nullable)params;
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params;
 
@@ -6853,13 +6850,13 @@ labels.
     MTR_NEWLY_DEPRECATED("Please use getMeasurementProfileCommandWithParams:expectedValues:expectedValueIntervalMs:completion:");
 @end
 
-@interface MTRClusterTestCluster (Deprecated)
+@interface MTRClusterUnitTesting (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpoindID:queue:");
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
         completionHandler:(MTRStatusCompletion)completionHandler
@@ -6868,7 +6865,7 @@ labels.
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
              completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
@@ -6877,18 +6874,18 @@ labels.
                    expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                        completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithParams:expectedValues:expectedValueIntervalMs:completion:");
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                     completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                     completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -6897,100 +6894,100 @@ labels.
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                            completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testAddArgumentsWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                completionHandler:
-                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArrayArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                           expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:
                                            (NSArray *> * _Nullable)expectedDataValueDictionaries
                                 expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testNestedStructListArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:
                                                (NSArray *> * _Nullable)expectedDataValueDictionaries
                                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testListNestedStructListArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UReverseRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEnumsRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNullableOptionalRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                       expectedValues:
                                           (NSArray *> * _Nullable)expectedDataValueDictionaries
                                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                    completionHandler:
-                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testComplexNullableOptionalRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use simpleStructEchoRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -6999,26 +6996,26 @@ labels.
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                            completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                      expectedValues:
                                          (NSArray *> * _Nullable)expectedDataValueDictionaries
                               expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                   completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testSimpleOptionalArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                      expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestEventRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         expectedValues:
                                             (NSArray *> * _Nullable)expectedDataValueDictionaries
                                  expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                      completionHandler:
                                          (void (^)(
-                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testEmitTestFabricScopedEventRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index 5055f414bc45a7..9216de3aeeed19 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -23418,7 +23418,7 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
 }
 @end
 
-@implementation MTRClusterTestCluster
+@implementation MTRClusterUnitTesting
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
 {
@@ -23439,7 +23439,7 @@ - (void)testWithExpectedValues:(NSArray *> *)expect
 {
     [self testWithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completion];
 }
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> *)expectedValues
     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                completion:(MTRStatusCompletion)completion
@@ -23464,12 +23464,12 @@ - (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::Test::Type request;
+                UnitTesting::Commands::Test::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23496,7 +23496,7 @@ - (void)testNotHandledWithExpectedValues:(NSArray *
              expectedValueInterval:expectedValueIntervalMs
                         completion:completion];
 }
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> *)expectedValues
            expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                       completion:(MTRStatusCompletion)completion
@@ -23521,12 +23521,12 @@ - (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _N
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestNotHandled::Type request;
+                UnitTesting::Commands::TestNotHandled::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23546,7 +23546,7 @@ - (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _N
 
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                            completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                            completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completion
 {
     [self testSpecificWithParams:nil
@@ -23554,10 +23554,10 @@ - (void)testSpecificWithExpectedValues:(NSArray *>
            expectedValueInterval:expectedValueIntervalMs
                       completion:completion];
 }
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> *)expectedValues
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                    completion:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                    completion:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -23570,18 +23570,18 @@ - (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nulla
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestSpecific::Type request;
+                UnitTesting::Commands::TestSpecific::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23608,7 +23608,7 @@ - (void)testUnknownCommandWithExpectedValues:(NSArray *> *)expectedValues
                expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                           completion:(MTRStatusCompletion)completion
@@ -23633,12 +23633,12 @@ - (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandPar
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestUnknownCommand::Type request;
+                UnitTesting::Commands::TestUnknownCommand::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23656,10 +23656,10 @@ - (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandPar
     }
 }
 
-- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
+- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
                     expectedValues:(NSArray *> *)expectedValues
              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                        completion:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+                        completion:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -23672,20 +23672,20 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestAddArguments::Type request;
+                UnitTesting::Commands::TestAddArguments::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
                 request.arg1 = params.arg1.unsignedCharValue;
                 request.arg2 = params.arg2.unsignedCharValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23703,10 +23703,10 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams
     }
 }
 
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> *)expectedValues
                       expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                 completion:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+                                 completion:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -23719,19 +23719,19 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestSimpleArgumentRequest::Type request;
+                UnitTesting::Commands::TestSimpleArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
                 request.arg1 = params.arg1.boolValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -23749,11 +23749,11 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu
     }
 }
 
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> *)expectedValues
                            expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                       completion:
-                                          (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                          (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -23766,13 +23766,13 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestStructArrayArgumentRequest::Type request;
+                UnitTesting::Commands::TestStructArrayArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -23786,11 +23786,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                         }
                         listFreer.add(listHolder_0);
                         for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                            if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterNestedStructList class]]) {
+                            if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterNestedStructList class]]) {
                                 // Wrong kind of value.
                                 return CHIP_ERROR_INVALID_ARGUMENT;
                             }
-                            auto element_0 = (MTRTestClusterClusterNestedStructList *) params.arg1[i_0];
+                            auto element_0 = (MTRUnitTestingClusterNestedStructList *) params.arg1[i_0];
                             listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                             listHolder_0->mList[i_0].b = element_0.b.boolValue;
                             listHolder_0->mList[i_0].c.a = element_0.c.a.unsignedCharValue;
@@ -23815,11 +23815,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                                     }
                                     listFreer.add(listHolder_2);
                                     for (size_t i_2 = 0; i_2 < element_0.d.count; ++i_2) {
-                                        if (![element_0.d[i_2] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                                        if (![element_0.d[i_2] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                             // Wrong kind of value.
                                             return CHIP_ERROR_INVALID_ARGUMENT;
                                         }
-                                        auto element_2 = (MTRTestClusterClusterSimpleStruct *) element_0.d[i_2];
+                                        auto element_2 = (MTRUnitTestingClusterSimpleStruct *) element_0.d[i_2];
                                         listHolder_2->mList[i_2].a = element_2.a.unsignedCharValue;
                                         listHolder_2->mList[i_2].b = element_2.b.boolValue;
                                         listHolder_2->mList[i_2].c
@@ -23920,11 +23920,11 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                         }
                         listFreer.add(listHolder_0);
                         for (size_t i_0 = 0; i_0 < params.arg2.count; ++i_0) {
-                            if (![params.arg2[i_0] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                            if (![params.arg2[i_0] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                 // Wrong kind of value.
                                 return CHIP_ERROR_INVALID_ARGUMENT;
                             }
-                            auto element_0 = (MTRTestClusterClusterSimpleStruct *) params.arg2[i_0];
+                            auto element_0 = (MTRUnitTestingClusterSimpleStruct *) params.arg2[i_0];
                             listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                             listHolder_0->mList[i_0].b = element_0.b.boolValue;
                             listHolder_0->mList[i_0].c = static_castmList[i_0].c)>>(
@@ -23989,7 +23989,7 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                 request.arg5 = static_cast>(params.arg5.unsignedCharValue);
                 request.arg6 = params.arg6.boolValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24007,10 +24007,10 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
     }
 }
 
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> *)expectedValues
                       expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                 completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                 completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24023,13 +24023,13 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestStructArgumentRequest::Type request;
+                UnitTesting::Commands::TestStructArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24042,7 +24042,7 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu
                 request.arg1.g = params.arg1.g.floatValue;
                 request.arg1.h = params.arg1.h.doubleValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24060,10 +24060,10 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu
     }
 }
 
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> *)expectedValues
                             expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                       completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                       completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24076,13 +24076,13 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestNestedStructArgumentRequest::Type request;
+                UnitTesting::Commands::TestNestedStructArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24099,7 +24099,7 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest
                 request.arg1.c.g = params.arg1.c.g.floatValue;
                 request.arg1.c.h = params.arg1.c.h.doubleValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24117,10 +24117,10 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest
     }
 }
 
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> *)expectedValues
                           expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                     completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                     completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24133,13 +24133,13 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestListStructArgumentRequest::Type request;
+                UnitTesting::Commands::TestListStructArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24153,11 +24153,11 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
                         }
                         listFreer.add(listHolder_0);
                         for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                            if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                            if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                 // Wrong kind of value.
                                 return CHIP_ERROR_INVALID_ARGUMENT;
                             }
-                            auto element_0 = (MTRTestClusterClusterSimpleStruct *) params.arg1[i_0];
+                            auto element_0 = (MTRUnitTestingClusterSimpleStruct *) params.arg1[i_0];
                             listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                             listHolder_0->mList[i_0].b = element_0.b.boolValue;
                             listHolder_0->mList[i_0].c = static_castmList[i_0].c)>>(
@@ -24175,7 +24175,7 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24193,10 +24193,10 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
     }
 }
 
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> *)expectedValues
                          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                    completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                    completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24209,13 +24209,13 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestListInt8UArgumentRequest::Type request;
+                UnitTesting::Commands::TestListInt8UArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24242,7 +24242,7 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24260,10 +24260,10 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt
     }
 }
 
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:(NSArray *> *)expectedValues
                                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                           completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                           completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24276,13 +24276,13 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestNestedStructListArgumentRequest::Type request;
+                UnitTesting::Commands::TestNestedStructListArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24308,11 +24308,11 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
                         }
                         listFreer.add(listHolder_1);
                         for (size_t i_1 = 0; i_1 < params.arg1.d.count; ++i_1) {
-                            if (![params.arg1.d[i_1] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                            if (![params.arg1.d[i_1] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                 // Wrong kind of value.
                                 return CHIP_ERROR_INVALID_ARGUMENT;
                             }
-                            auto element_1 = (MTRTestClusterClusterSimpleStruct *) params.arg1.d[i_1];
+                            auto element_1 = (MTRUnitTestingClusterSimpleStruct *) params.arg1.d[i_1];
                             listHolder_1->mList[i_1].a = element_1.a.unsignedCharValue;
                             listHolder_1->mList[i_1].b = element_1.b.boolValue;
                             listHolder_1->mList[i_1].c = static_castmList[i_1].c)>>(
@@ -24396,7 +24396,7 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24415,10 +24415,10 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
 }
 
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:(NSArray *> *)expectedValues
                                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                               completion:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                               completion:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24431,13 +24431,13 @@ - (void)testListNestedStructListArgumentRequestWithParams:
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestListNestedStructListArgumentRequest::Type request;
+                UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24451,11 +24451,11 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                         }
                         listFreer.add(listHolder_0);
                         for (size_t i_0 = 0; i_0 < params.arg1.count; ++i_0) {
-                            if (![params.arg1[i_0] isKindOfClass:[MTRTestClusterClusterNestedStructList class]]) {
+                            if (![params.arg1[i_0] isKindOfClass:[MTRUnitTestingClusterNestedStructList class]]) {
                                 // Wrong kind of value.
                                 return CHIP_ERROR_INVALID_ARGUMENT;
                             }
-                            auto element_0 = (MTRTestClusterClusterNestedStructList *) params.arg1[i_0];
+                            auto element_0 = (MTRUnitTestingClusterNestedStructList *) params.arg1[i_0];
                             listHolder_0->mList[i_0].a = element_0.a.unsignedCharValue;
                             listHolder_0->mList[i_0].b = element_0.b.boolValue;
                             listHolder_0->mList[i_0].c.a = element_0.c.a.unsignedCharValue;
@@ -24480,11 +24480,11 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                                     }
                                     listFreer.add(listHolder_2);
                                     for (size_t i_2 = 0; i_2 < element_0.d.count; ++i_2) {
-                                        if (![element_0.d[i_2] isKindOfClass:[MTRTestClusterClusterSimpleStruct class]]) {
+                                        if (![element_0.d[i_2] isKindOfClass:[MTRUnitTestingClusterSimpleStruct class]]) {
                                             // Wrong kind of value.
                                             return CHIP_ERROR_INVALID_ARGUMENT;
                                         }
-                                        auto element_2 = (MTRTestClusterClusterSimpleStruct *) element_0.d[i_2];
+                                        auto element_2 = (MTRUnitTestingClusterSimpleStruct *) element_0.d[i_2];
                                         listHolder_2->mList[i_2].a = element_2.a.unsignedCharValue;
                                         listHolder_2->mList[i_2].b = element_2.b.boolValue;
                                         listHolder_2->mList[i_2].c
@@ -24576,7 +24576,7 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24594,10 +24594,10 @@ - (void)testListNestedStructListArgumentRequestWithParams:
     }
 }
 
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> *)expectedValues
                         expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                   completion:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+                                   completion:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24610,13 +24610,13 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestListInt8UReverseRequest::Type request;
+                UnitTesting::Commands::TestListInt8UReverseRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24643,7 +24643,7 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24661,10 +24661,10 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8
     }
 }
 
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> *)expectedValues
              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                        completion:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+                        completion:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24677,20 +24677,20 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestEnumsRequest::Type request;
+                UnitTesting::Commands::TestEnumsRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
                 request.arg1 = static_cast>(params.arg1.unsignedShortValue);
                 request.arg2 = static_cast>(params.arg2.unsignedCharValue);
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24708,10 +24708,10 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams
     }
 }
 
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> *)expectedValues
                         expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                   completion:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+                                   completion:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24724,13 +24724,13 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestNullableOptionalRequest::Type request;
+                UnitTesting::Commands::TestNullableOptionalRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24746,7 +24746,7 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24764,12 +24764,12 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable
     }
 }
 
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                       expectedValues:(NSArray *> *)expectedValues
                                expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                           completion:
                                               (void (^)(
-                                                  MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                                  MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24782,13 +24782,13 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestComplexNullableOptionalRequest::Type request;
+                UnitTesting::Commands::TestComplexNullableOptionalRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -24963,7 +24963,7 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -24981,10 +24981,10 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC
     }
 }
 
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> *)expectedValues
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                               completion:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+                               completion:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -24997,13 +24997,13 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::SimpleStructEchoRequest::Type request;
+                UnitTesting::Commands::SimpleStructEchoRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -25016,7 +25016,7 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho
                 request.arg1.g = params.arg1.g.floatValue;
                 request.arg1.h = params.arg1.h.doubleValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -25043,7 +25043,7 @@ - (void)timedInvokeRequestWithExpectedValues:(NSArray *> *)expectedValues
                expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                           completion:(MTRStatusCompletion)completion
@@ -25068,7 +25068,7 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TimedInvokeRequest::Type request;
+                UnitTesting::Commands::TimedInvokeRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -25076,7 +25076,7 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar
                     timedInvokeTimeoutMs.SetValue(10000);
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -25094,7 +25094,7 @@ - (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestPar
     }
 }
 
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                      expectedValues:(NSArray *> *)expectedValues
                               expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                          completion:(MTRStatusCompletion)completion
@@ -25119,7 +25119,7 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type request;
+                UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -25130,7 +25130,7 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
                     }
                 }
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -25148,10 +25148,10 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
     }
 }
 
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> *)expectedValues
                      expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                completion:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+                                completion:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -25164,13 +25164,13 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestEmitTestEventRequest::Type request;
+                UnitTesting::Commands::TestEmitTestEventRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
@@ -25178,7 +25178,7 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
                 request.arg2 = static_cast>(params.arg2.unsignedCharValue);
                 request.arg3 = params.arg3.boolValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -25197,12 +25197,12 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
 }
 
 - (void)
-    testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+    testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                     expectedValues:(NSArray *> *)expectedValues
                              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                         completion:
                                             (void (^)(
-                                                MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completion
 {
     // Make a copy of params before we go async.
@@ -25215,19 +25215,19 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTestClusterClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion,
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                TestClusterClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
+                UnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type request;
+                UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
                 request.arg1 = params.arg1.unsignedCharValue;
 
-                chip::Controller::TestClusterCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -25248,8 +25248,8 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
 - (NSDictionary *)readAttributeBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeBooleanID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeBooleanID)
                                              params:params];
 }
 
@@ -25265,8 +25265,8 @@ - (void)writeAttributeBooleanWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeBooleanID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25275,8 +25275,8 @@ - (void)writeAttributeBooleanWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeBitmap8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeBitmap8ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap8ID)
                                              params:params];
 }
 
@@ -25292,8 +25292,8 @@ - (void)writeAttributeBitmap8WithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeBitmap8ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25302,8 +25302,8 @@ - (void)writeAttributeBitmap8WithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeBitmap16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeBitmap16ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap16ID)
                                              params:params];
 }
 
@@ -25319,8 +25319,8 @@ - (void)writeAttributeBitmap16WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeBitmap16ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25329,8 +25329,8 @@ - (void)writeAttributeBitmap16WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeBitmap32WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeBitmap32ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap32ID)
                                              params:params];
 }
 
@@ -25346,8 +25346,8 @@ - (void)writeAttributeBitmap32WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeBitmap32ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap32ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25356,8 +25356,8 @@ - (void)writeAttributeBitmap32WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeBitmap64WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeBitmap64ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap64ID)
                                              params:params];
 }
 
@@ -25373,8 +25373,8 @@ - (void)writeAttributeBitmap64WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeBitmap64ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap64ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25383,8 +25383,8 @@ - (void)writeAttributeBitmap64WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt8uID)
                                              params:params];
 }
 
@@ -25400,8 +25400,8 @@ - (void)writeAttributeInt8uWithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt8uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25410,8 +25410,8 @@ - (void)writeAttributeInt8uWithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt16uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt16uID)
                                              params:params];
 }
 
@@ -25427,8 +25427,8 @@ - (void)writeAttributeInt16uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt16uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt16uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25437,8 +25437,8 @@ - (void)writeAttributeInt16uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt24uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt24uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt24uID)
                                              params:params];
 }
 
@@ -25454,8 +25454,8 @@ - (void)writeAttributeInt24uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt24uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt24uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25464,8 +25464,8 @@ - (void)writeAttributeInt24uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt32uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt32uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt32uID)
                                              params:params];
 }
 
@@ -25481,8 +25481,8 @@ - (void)writeAttributeInt32uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt32uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt32uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25491,8 +25491,8 @@ - (void)writeAttributeInt32uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt40uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt40uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt40uID)
                                              params:params];
 }
 
@@ -25508,8 +25508,8 @@ - (void)writeAttributeInt40uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt40uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt40uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25518,8 +25518,8 @@ - (void)writeAttributeInt40uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt48uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt48uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt48uID)
                                              params:params];
 }
 
@@ -25535,8 +25535,8 @@ - (void)writeAttributeInt48uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt48uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt48uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25545,8 +25545,8 @@ - (void)writeAttributeInt48uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt56uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt56uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt56uID)
                                              params:params];
 }
 
@@ -25562,8 +25562,8 @@ - (void)writeAttributeInt56uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt56uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt56uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25572,8 +25572,8 @@ - (void)writeAttributeInt56uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt64uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt64uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt64uID)
                                              params:params];
 }
 
@@ -25589,8 +25589,8 @@ - (void)writeAttributeInt64uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt64uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt64uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25599,8 +25599,8 @@ - (void)writeAttributeInt64uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt8sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt8sID)
                                              params:params];
 }
 
@@ -25616,8 +25616,8 @@ - (void)writeAttributeInt8sWithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt8sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt8sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25626,8 +25626,8 @@ - (void)writeAttributeInt8sWithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt16sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt16sID)
                                              params:params];
 }
 
@@ -25643,8 +25643,8 @@ - (void)writeAttributeInt16sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt16sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt16sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25653,8 +25653,8 @@ - (void)writeAttributeInt16sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt24sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt24sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt24sID)
                                              params:params];
 }
 
@@ -25670,8 +25670,8 @@ - (void)writeAttributeInt24sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt24sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt24sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25680,8 +25680,8 @@ - (void)writeAttributeInt24sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt32sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt32sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt32sID)
                                              params:params];
 }
 
@@ -25697,8 +25697,8 @@ - (void)writeAttributeInt32sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt32sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt32sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25707,8 +25707,8 @@ - (void)writeAttributeInt32sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt40sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt40sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt40sID)
                                              params:params];
 }
 
@@ -25724,8 +25724,8 @@ - (void)writeAttributeInt40sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt40sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt40sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25734,8 +25734,8 @@ - (void)writeAttributeInt40sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt48sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt48sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt48sID)
                                              params:params];
 }
 
@@ -25751,8 +25751,8 @@ - (void)writeAttributeInt48sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt48sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt48sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25761,8 +25761,8 @@ - (void)writeAttributeInt48sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt56sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt56sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt56sID)
                                              params:params];
 }
 
@@ -25778,8 +25778,8 @@ - (void)writeAttributeInt56sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt56sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt56sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25788,8 +25788,8 @@ - (void)writeAttributeInt56sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt64sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeInt64sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeInt64sID)
                                              params:params];
 }
 
@@ -25805,8 +25805,8 @@ - (void)writeAttributeInt64sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeInt64sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeInt64sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25815,8 +25815,8 @@ - (void)writeAttributeInt64sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeEnum8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeEnum8ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeEnum8ID)
                                              params:params];
 }
 
@@ -25832,8 +25832,8 @@ - (void)writeAttributeEnum8WithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeEnum8ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeEnum8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25842,8 +25842,8 @@ - (void)writeAttributeEnum8WithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeEnum16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeEnum16ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeEnum16ID)
                                              params:params];
 }
 
@@ -25859,8 +25859,8 @@ - (void)writeAttributeEnum16WithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeEnum16ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeEnum16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25869,8 +25869,8 @@ - (void)writeAttributeEnum16WithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeFloatSingleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeFloatSingleID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeFloatSingleID)
                                              params:params];
 }
 
@@ -25886,8 +25886,8 @@ - (void)writeAttributeFloatSingleWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeFloatSingleID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeFloatSingleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25896,8 +25896,8 @@ - (void)writeAttributeFloatSingleWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeFloatDoubleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeFloatDoubleID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeFloatDoubleID)
                                              params:params];
 }
 
@@ -25913,8 +25913,8 @@ - (void)writeAttributeFloatDoubleWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeFloatDoubleID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeFloatDoubleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25923,8 +25923,8 @@ - (void)writeAttributeFloatDoubleWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeOctetStringID)
                                              params:params];
 }
 
@@ -25940,8 +25940,8 @@ - (void)writeAttributeOctetStringWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeOctetStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25950,8 +25950,8 @@ - (void)writeAttributeOctetStringWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeListInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListInt8uID)
                                              params:params];
 }
 
@@ -25967,8 +25967,8 @@ - (void)writeAttributeListInt8uWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeListInt8uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeListInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25977,8 +25977,8 @@ - (void)writeAttributeListInt8uWithValue:(NSDictionary *)dataVal
 - (NSDictionary *)readAttributeListOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListOctetStringID)
                                              params:params];
 }
 
@@ -25994,8 +25994,8 @@ - (void)writeAttributeListOctetStringWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeListOctetStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeListOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26004,8 +26004,8 @@ - (void)writeAttributeListOctetStringWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeListStructOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListStructOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListStructOctetStringID)
                                              params:params];
 }
 
@@ -26023,8 +26023,8 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSDictionary *)readAttributeLongOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeLongOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeLongOctetStringID)
                                              params:params];
 }
 
@@ -26050,8 +26050,8 @@ - (void)writeAttributeLongOctetStringWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeLongOctetStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeLongOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26060,8 +26060,8 @@ - (void)writeAttributeLongOctetStringWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeCharStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeCharStringID)
                                              params:params];
 }
 
@@ -26077,8 +26077,8 @@ - (void)writeAttributeCharStringWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeCharStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26087,8 +26087,8 @@ - (void)writeAttributeCharStringWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeLongCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeLongCharStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeLongCharStringID)
                                              params:params];
 }
 
@@ -26104,8 +26104,8 @@ - (void)writeAttributeLongCharStringWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeLongCharStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeLongCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26114,8 +26114,8 @@ - (void)writeAttributeLongCharStringWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeEpochUsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeEpochUsID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeEpochUsID)
                                              params:params];
 }
 
@@ -26131,8 +26131,8 @@ - (void)writeAttributeEpochUsWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeEpochUsID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeEpochUsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26141,8 +26141,8 @@ - (void)writeAttributeEpochUsWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeEpochSWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeEpochSID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeEpochSID)
                                              params:params];
 }
 
@@ -26158,8 +26158,8 @@ - (void)writeAttributeEpochSWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeEpochSID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeEpochSID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26168,8 +26168,8 @@ - (void)writeAttributeEpochSWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeVendorIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeVendorIdID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeVendorIdID)
                                              params:params];
 }
 
@@ -26185,8 +26185,8 @@ - (void)writeAttributeVendorIdWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeVendorIdID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeVendorIdID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26195,8 +26195,8 @@ - (void)writeAttributeVendorIdWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeListNullablesAndOptionalsStructWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListNullablesAndOptionalsStructID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID)
                                              params:params];
 }
 
@@ -26214,8 +26214,8 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSDictionary *)readAttributeEnumAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeEnumAttrID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeEnumAttrID)
                                              params:params];
 }
 
@@ -26241,8 +26241,8 @@ - (void)writeAttributeEnumAttrWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeEnumAttrID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeEnumAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26251,8 +26251,8 @@ - (void)writeAttributeEnumAttrWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeStructAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeStructAttrID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeStructAttrID)
                                              params:params];
 }
 
@@ -26268,8 +26268,8 @@ - (void)writeAttributeStructAttrWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeStructAttrID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeStructAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26278,8 +26278,8 @@ - (void)writeAttributeStructAttrWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeRangeRestrictedInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeRangeRestrictedInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt8uID)
                                              params:params];
 }
 
@@ -26295,8 +26295,8 @@ - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSDictionary *)readAttributeRangeRestrictedInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeRangeRestrictedInt8sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt8sID)
                                              params:params];
 }
 
@@ -26322,8 +26322,8 @@ - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSDictionary *)readAttributeRangeRestrictedInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeRangeRestrictedInt16uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt16uID)
                                              params:params];
 }
 
@@ -26351,8 +26351,8 @@ - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSDictionary *)readAttributeRangeRestrictedInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeRangeRestrictedInt16sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt16sID)
                                              params:params];
 }
 
@@ -26380,8 +26380,8 @@ - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSDictionary *)readAttributeListLongOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListLongOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListLongOctetStringID)
                                              params:params];
 }
 
@@ -26407,8 +26407,8 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeListLongOctetStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeListLongOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26417,8 +26417,8 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeListFabricScopedID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeListFabricScopedID)
                                              params:params];
 }
 
@@ -26434,8 +26434,8 @@ - (void)writeAttributeListFabricScopedWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeListFabricScopedID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeListFabricScopedID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26444,8 +26444,8 @@ - (void)writeAttributeListFabricScopedWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeTimedWriteBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeTimedWriteBooleanID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeTimedWriteBooleanID)
                                              params:params];
 }
 
@@ -26461,8 +26461,8 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeTimedWriteBooleanID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeTimedWriteBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26471,8 +26471,8 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeGeneralErrorBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeGeneralErrorBooleanID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeGeneralErrorBooleanID)
                                              params:params];
 }
 
@@ -26488,8 +26488,8 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeGeneralErrorBooleanID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeGeneralErrorBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26498,8 +26498,8 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSDictionary
 - (NSDictionary *)readAttributeClusterErrorBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeClusterErrorBooleanID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeClusterErrorBooleanID)
                                              params:params];
 }
 
@@ -26515,8 +26515,8 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeClusterErrorBooleanID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeClusterErrorBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26525,8 +26525,8 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSDictionary
 - (NSDictionary *)readAttributeUnsupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeUnsupportedID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeUnsupportedID)
                                              params:params];
 }
 
@@ -26542,8 +26542,8 @@ - (void)writeAttributeUnsupportedWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeUnsupportedID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeUnsupportedID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26552,8 +26552,8 @@ - (void)writeAttributeUnsupportedWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeNullableBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableBooleanID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBooleanID)
                                              params:params];
 }
 
@@ -26569,8 +26569,8 @@ - (void)writeAttributeNullableBooleanWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableBooleanID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26579,8 +26579,8 @@ - (void)writeAttributeNullableBooleanWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeNullableBitmap8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableBitmap8ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap8ID)
                                              params:params];
 }
 
@@ -26596,8 +26596,8 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableBitmap8ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26606,8 +26606,8 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeNullableBitmap16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableBitmap16ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap16ID)
                                              params:params];
 }
 
@@ -26623,8 +26623,8 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableBitmap16ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26633,8 +26633,8 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableBitmap32WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableBitmap32ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap32ID)
                                              params:params];
 }
 
@@ -26650,8 +26650,8 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableBitmap32ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap32ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26660,8 +26660,8 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableBitmap64WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableBitmap64ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap64ID)
                                              params:params];
 }
 
@@ -26677,8 +26677,8 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableBitmap64ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap64ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26687,8 +26687,8 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt8uID)
                                              params:params];
 }
 
@@ -26704,8 +26704,8 @@ - (void)writeAttributeNullableInt8uWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt8uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26714,8 +26714,8 @@ - (void)writeAttributeNullableInt8uWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt16uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt16uID)
                                              params:params];
 }
 
@@ -26731,8 +26731,8 @@ - (void)writeAttributeNullableInt16uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt16uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt16uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26741,8 +26741,8 @@ - (void)writeAttributeNullableInt16uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt24uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt24uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt24uID)
                                              params:params];
 }
 
@@ -26758,8 +26758,8 @@ - (void)writeAttributeNullableInt24uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt24uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt24uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26768,8 +26768,8 @@ - (void)writeAttributeNullableInt24uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt32uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt32uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt32uID)
                                              params:params];
 }
 
@@ -26785,8 +26785,8 @@ - (void)writeAttributeNullableInt32uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt32uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt32uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26795,8 +26795,8 @@ - (void)writeAttributeNullableInt32uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt40uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt40uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt40uID)
                                              params:params];
 }
 
@@ -26812,8 +26812,8 @@ - (void)writeAttributeNullableInt40uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt40uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt40uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26822,8 +26822,8 @@ - (void)writeAttributeNullableInt40uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt48uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt48uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt48uID)
                                              params:params];
 }
 
@@ -26839,8 +26839,8 @@ - (void)writeAttributeNullableInt48uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt48uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt48uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26849,8 +26849,8 @@ - (void)writeAttributeNullableInt48uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt56uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt56uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt56uID)
                                              params:params];
 }
 
@@ -26866,8 +26866,8 @@ - (void)writeAttributeNullableInt56uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt56uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt56uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26876,8 +26876,8 @@ - (void)writeAttributeNullableInt56uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt64uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt64uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt64uID)
                                              params:params];
 }
 
@@ -26893,8 +26893,8 @@ - (void)writeAttributeNullableInt64uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt64uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt64uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26903,8 +26903,8 @@ - (void)writeAttributeNullableInt64uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt8sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt8sID)
                                              params:params];
 }
 
@@ -26920,8 +26920,8 @@ - (void)writeAttributeNullableInt8sWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt8sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt8sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26930,8 +26930,8 @@ - (void)writeAttributeNullableInt8sWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt16sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt16sID)
                                              params:params];
 }
 
@@ -26947,8 +26947,8 @@ - (void)writeAttributeNullableInt16sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt16sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt16sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26957,8 +26957,8 @@ - (void)writeAttributeNullableInt16sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt24sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt24sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt24sID)
                                              params:params];
 }
 
@@ -26974,8 +26974,8 @@ - (void)writeAttributeNullableInt24sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt24sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt24sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26984,8 +26984,8 @@ - (void)writeAttributeNullableInt24sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt32sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt32sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt32sID)
                                              params:params];
 }
 
@@ -27001,8 +27001,8 @@ - (void)writeAttributeNullableInt32sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt32sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt32sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27011,8 +27011,8 @@ - (void)writeAttributeNullableInt32sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt40sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt40sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt40sID)
                                              params:params];
 }
 
@@ -27028,8 +27028,8 @@ - (void)writeAttributeNullableInt40sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt40sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt40sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27038,8 +27038,8 @@ - (void)writeAttributeNullableInt40sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt48sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt48sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt48sID)
                                              params:params];
 }
 
@@ -27055,8 +27055,8 @@ - (void)writeAttributeNullableInt48sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt48sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt48sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27065,8 +27065,8 @@ - (void)writeAttributeNullableInt48sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt56sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt56sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt56sID)
                                              params:params];
 }
 
@@ -27082,8 +27082,8 @@ - (void)writeAttributeNullableInt56sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt56sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt56sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27092,8 +27092,8 @@ - (void)writeAttributeNullableInt56sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt64sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableInt64sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt64sID)
                                              params:params];
 }
 
@@ -27109,8 +27109,8 @@ - (void)writeAttributeNullableInt64sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableInt64sID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt64sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27119,8 +27119,8 @@ - (void)writeAttributeNullableInt64sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableEnum8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableEnum8ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnum8ID)
                                              params:params];
 }
 
@@ -27136,8 +27136,8 @@ - (void)writeAttributeNullableEnum8WithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableEnum8ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnum8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27146,8 +27146,8 @@ - (void)writeAttributeNullableEnum8WithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableEnum16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableEnum16ID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnum16ID)
                                              params:params];
 }
 
@@ -27163,8 +27163,8 @@ - (void)writeAttributeNullableEnum16WithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableEnum16ID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnum16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27173,8 +27173,8 @@ - (void)writeAttributeNullableEnum16WithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableFloatSingleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableFloatSingleID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableFloatSingleID)
                                              params:params];
 }
 
@@ -27190,8 +27190,8 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableFloatSingleID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableFloatSingleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27200,8 +27200,8 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableFloatDoubleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableFloatDoubleID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableFloatDoubleID)
                                              params:params];
 }
 
@@ -27217,8 +27217,8 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableFloatDoubleID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableFloatDoubleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27227,8 +27227,8 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableOctetStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableOctetStringID)
                                              params:params];
 }
 
@@ -27244,8 +27244,8 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableOctetStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27254,8 +27254,8 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableCharStringID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableCharStringID)
                                              params:params];
 }
 
@@ -27271,8 +27271,8 @@ - (void)writeAttributeNullableCharStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableCharStringID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27281,8 +27281,8 @@ - (void)writeAttributeNullableCharStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableEnumAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableEnumAttrID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnumAttrID)
                                              params:params];
 }
 
@@ -27298,8 +27298,8 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableEnumAttrID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnumAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27308,8 +27308,8 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableStructWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableStructID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableStructID)
                                              params:params];
 }
 
@@ -27325,8 +27325,8 @@ - (void)writeAttributeNullableStructWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeNullableStructID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeNullableStructID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27335,8 +27335,8 @@ - (void)writeAttributeNullableStructWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableRangeRestrictedInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableRangeRestrictedInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID)
                                              params:params];
 }
 
@@ -27354,8 +27354,8 @@ - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableRangeRestrictedInt8sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID)
                                              params:params];
 }
 
@@ -27383,8 +27383,8 @@ - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableRangeRestrictedInt16uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID)
                                              params:params];
 }
 
@@ -27412,8 +27412,8 @@ - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeNullableRangeRestrictedInt16sID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID)
                                              params:params];
 }
 
@@ -27441,8 +27441,8 @@ - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeWriteOnlyInt8uID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeWriteOnlyInt8uID)
                                              params:params];
 }
 
@@ -27468,8 +27468,8 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTestClusterID)
-                                  attributeID:@(MTRClusterTestClusterAttributeWriteOnlyInt8uID)
+                                    clusterID:@(MTRClusterUnitTestingID)
+                                  attributeID:@(MTRClusterUnitTestingAttributeWriteOnlyInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27478,53 +27478,53 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeAttributeListID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTestClusterID)
-                                        attributeID:@(MTRClusterTestClusterAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterUnitTestingID)
+                                        attributeID:@(MTRClusterUnitTestingAttributeClusterRevisionID)
                                              params:params];
 }
 
 @end
 
-@implementation MTRClusterTestCluster (Deprecated)
+@implementation MTRClusterUnitTesting (Deprecated)
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
 {
     return [self initWithDevice:device endpointID:@(endpoint) queue:queue];
 }
 
-- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
         completionHandler:(MTRStatusCompletion)completionHandler
@@ -27540,7 +27540,7 @@ - (void)testWithExpectedValues:(NSArray *> *)expect
 {
     [self testWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
 }
-- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
@@ -27558,10 +27558,10 @@ - (void)testNotHandledWithExpectedValues:(NSArray *
                      expectedValueInterval:expectedValueIntervalMs
                                 completion:completionHandler];
 }
-- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
     [self testSpecificWithParams:params
@@ -27571,12 +27571,12 @@ - (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nulla
 }
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                     completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
+                     completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
     [self testSpecificWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
 }
-- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -27594,10 +27594,10 @@ - (void)testUnknownCommandWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testAddArgumentsWithParams:params
@@ -27605,10 +27605,10 @@ - (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams
                expectedValueInterval:expectedValueIntervalMs
                           completion:completionHandler];
 }
-- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testSimpleArgumentRequestWithParams:params
@@ -27616,11 +27616,11 @@ - (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgu
                         expectedValueInterval:expectedValueIntervalMs
                                    completion:completionHandler];
 }
-- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                completionHandler:
-                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testStructArrayArgumentRequestWithParams:params
@@ -27628,10 +27628,10 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStruc
                              expectedValueInterval:expectedValueIntervalMs
                                         completion:completionHandler];
 }
-- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testStructArgumentRequestWithParams:params
@@ -27639,10 +27639,10 @@ - (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgu
                         expectedValueInterval:expectedValueIntervalMs
                                    completion:completionHandler];
 }
-- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
 {
     [self testNestedStructArgumentRequestWithParams:params
@@ -27650,10 +27650,10 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNest
                               expectedValueInterval:expectedValueIntervalMs
                                          completion:completionHandler];
 }
-- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                           expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
 {
     [self testListStructArgumentRequestWithParams:params
@@ -27661,10 +27661,10 @@ - (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListSt
                             expectedValueInterval:expectedValueIntervalMs
                                        completion:completionHandler];
 }
-- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
 {
     [self testListInt8UArgumentRequestWithParams:params
@@ -27672,11 +27672,11 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt
                            expectedValueInterval:expectedValueIntervalMs
                                       completion:completionHandler];
 }
-- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:
                                            (NSArray *> * _Nullable)expectedDataValueDictionaries
                                 expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
 {
     [self testNestedStructListArgumentRequestWithParams:params
@@ -27685,11 +27685,11 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTest
                                              completion:completionHandler];
 }
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:
                                                (NSArray *> * _Nullable)expectedDataValueDictionaries
                                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
+                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
 {
     [self testListNestedStructListArgumentRequestWithParams:params
@@ -27697,10 +27697,10 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                                       expectedValueInterval:expectedValueIntervalMs
                                                  completion:completionHandler];
 }
-- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testListInt8UReverseRequestWithParams:params
@@ -27708,10 +27708,10 @@ - (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8
                           expectedValueInterval:expectedValueIntervalMs
                                      completion:completionHandler];
 }
-- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testEnumsRequestWithParams:params
@@ -27719,10 +27719,10 @@ - (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams
                expectedValueInterval:expectedValueIntervalMs
                           completion:completionHandler];
 }
-- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testNullableOptionalRequestWithParams:params
@@ -27730,12 +27730,12 @@ - (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullable
                           expectedValueInterval:expectedValueIntervalMs
                                      completion:completionHandler];
 }
-- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
                                       expectedValues:
                                           (NSArray *> * _Nullable)expectedDataValueDictionaries
                                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                    completionHandler:
-                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
     [self testComplexNullableOptionalRequestWithParams:params
@@ -27743,10 +27743,10 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestC
                                  expectedValueInterval:expectedValueIntervalMs
                                             completion:completionHandler];
 }
-- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
+                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
     [self simpleStructEchoRequestWithParams:params
@@ -27754,7 +27754,7 @@ - (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEcho
                       expectedValueInterval:expectedValueIntervalMs
                                  completion:completionHandler];
 }
-- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -27772,7 +27772,7 @@ - (void)timedInvokeRequestWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                               expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
@@ -27783,10 +27783,10 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSi
                                 expectedValueInterval:expectedValueIntervalMs
                                            completion:completionHandler];
 }
-- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                      expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
+                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
 {
     [self testEmitTestEventRequestWithParams:params
@@ -27794,13 +27794,13 @@ - (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEve
                        expectedValueInterval:expectedValueIntervalMs
                                   completion:completionHandler];
 }
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         expectedValues:
                                             (NSArray *> * _Nullable)expectedDataValueDictionaries
                                  expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                      completionHandler:
                                          (void (^)(
-                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
     [self testEmitTestFabricScopedEventRequestWithParams:params
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters_internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters_internal.h
index 4c514b9c2ee25e..b5d6cff234544e 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters_internal.h
@@ -343,7 +343,7 @@
 @property (nonatomic, readonly) MTRDevice * device;
 @end
 
-@interface MTRClusterTestCluster ()
+@interface MTRClusterUnitTesting ()
 @property (nonatomic, readonly) uint16_t endpoint;
 @property (nonatomic, readonly) MTRDevice * device;
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index a7c1fa96dfc987..f9194ac1a56624 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -5196,7 +5196,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestParams : NSObject 
+@interface MTRUnitTestingClusterTestParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5216,7 +5216,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestSpecificResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestSpecificResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
 /**
@@ -5238,7 +5238,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestNotHandledParams : NSObject 
+@interface MTRUnitTestingClusterTestNotHandledParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5258,7 +5258,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestAddArgumentsResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestAddArgumentsResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
 /**
@@ -5280,7 +5280,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestSpecificParams : NSObject 
+@interface MTRUnitTestingClusterTestSpecificParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5300,7 +5300,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestSimpleArgumentResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestSimpleArgumentResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
 /**
@@ -5322,7 +5322,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestUnknownCommandParams : NSObject 
+@interface MTRUnitTestingClusterTestUnknownCommandParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5342,7 +5342,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestStructArrayArgumentResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestStructArrayArgumentResponseParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 
@@ -5374,7 +5374,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestAddArgumentsParams : NSObject 
+@interface MTRUnitTestingClusterTestAddArgumentsParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 
@@ -5398,7 +5398,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestListInt8UReverseResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestListInt8UReverseResponseParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 /**
@@ -5420,7 +5420,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestSimpleArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestSimpleArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 /**
@@ -5442,7 +5442,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEnumsResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestEnumsResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 
@@ -5466,7 +5466,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestStructArrayArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestStructArrayArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 
@@ -5498,7 +5498,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestNullableOptionalResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestNullableOptionalResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull wasPresent;
 
@@ -5526,9 +5526,9 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestStructArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestStructArgumentRequestParams : NSObject 
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull arg1;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5548,7 +5548,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestComplexNullableOptionalResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestComplexNullableOptionalResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull nullableIntWasNull;
 
@@ -5580,17 +5580,17 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, copy) NSNumber * _Nonnull nullableStructWasNull;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableStructValue;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableStructValue;
 
 @property (nonatomic, copy) NSNumber * _Nonnull optionalStructWasPresent;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable optionalStructValue;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable optionalStructValue;
 
 @property (nonatomic, copy) NSNumber * _Nonnull nullableOptionalStructWasPresent;
 
 @property (nonatomic, copy) NSNumber * _Nullable nullableOptionalStructWasNull;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableOptionalStructValue;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableOptionalStructValue;
 
 @property (nonatomic, copy) NSNumber * _Nonnull nullableListWasNull;
 
@@ -5624,9 +5624,9 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestNestedStructArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestNestedStructArgumentRequestParams : NSObject 
 
-@property (nonatomic, copy) MTRTestClusterClusterNestedStruct * _Nonnull arg1;
+@property (nonatomic, copy) MTRUnitTestingClusterNestedStruct * _Nonnull arg1;
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5646,7 +5646,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterBooleanResponseParams : NSObject 
+@interface MTRUnitTestingClusterBooleanResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
 /**
@@ -5668,7 +5668,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestListStructArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestListStructArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 /**
@@ -5690,9 +5690,9 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterSimpleStructResponseParams : NSObject 
+@interface MTRUnitTestingClusterSimpleStructResponseParams : NSObject 
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull arg1;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5712,7 +5712,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestListInt8UArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestListInt8UArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 /**
@@ -5734,7 +5734,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEmitTestEventResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestEmitTestEventResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
 /**
@@ -5756,9 +5756,9 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestNestedStructListArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestNestedStructListArgumentRequestParams : NSObject 
 
-@property (nonatomic, copy) MTRTestClusterClusterNestedStructList * _Nonnull arg1;
+@property (nonatomic, copy) MTRUnitTestingClusterNestedStructList * _Nonnull arg1;
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5778,7 +5778,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams : NSObject 
+@interface MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
 /**
@@ -5800,7 +5800,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestListNestedStructListArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 /**
@@ -5822,7 +5822,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestListInt8UReverseRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestListInt8UReverseRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
 /**
@@ -5844,7 +5844,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEnumsRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestEnumsRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 
@@ -5868,7 +5868,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestNullableOptionalRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestNullableOptionalRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable arg1;
 /**
@@ -5890,7 +5890,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestComplexNullableOptionalRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestComplexNullableOptionalRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable nullableInt;
 
@@ -5904,11 +5904,11 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, copy) NSString * _Nullable nullableOptionalString;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableStruct;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable optionalStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable optionalStruct;
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableOptionalStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableOptionalStruct;
 
 @property (nonatomic, copy) NSArray * _Nullable nullableList;
 
@@ -5934,9 +5934,9 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterSimpleStructEchoRequestParams : NSObject 
+@interface MTRUnitTestingClusterSimpleStructEchoRequestParams : NSObject 
 
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull arg1;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5956,7 +5956,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTimedInvokeRequestParams : NSObject 
+@interface MTRUnitTestingClusterTimedInvokeRequestParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -5976,7 +5976,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable arg1;
 /**
@@ -5998,7 +5998,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEmitTestEventRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestEmitTestEventRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 
@@ -6024,7 +6024,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
-@interface MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams : NSObject 
+@interface MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 /**
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
index d6f6c8e1eece18..afd0732251777a 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
@@ -6978,7 +6978,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestParams
+@implementation MTRUnitTestingClusterTestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -6989,7 +6989,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -7003,7 +7003,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestSpecificResponseParams
+@implementation MTRUnitTestingClusterTestSpecificResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7016,7 +7016,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestSpecificResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestSpecificResponseParams alloc] init];
 
     other.returnValue = self.returnValue;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7032,7 +7032,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestNotHandledParams
+@implementation MTRUnitTestingClusterTestNotHandledParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7043,7 +7043,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestNotHandledParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestNotHandledParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -7057,7 +7057,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestAddArgumentsResponseParams
+@implementation MTRUnitTestingClusterTestAddArgumentsResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7070,7 +7070,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestAddArgumentsResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestAddArgumentsResponseParams alloc] init];
 
     other.returnValue = self.returnValue;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7086,7 +7086,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestSpecificParams
+@implementation MTRUnitTestingClusterTestSpecificParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7097,7 +7097,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestSpecificParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestSpecificParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -7111,7 +7111,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestSimpleArgumentResponseParams
+@implementation MTRUnitTestingClusterTestSimpleArgumentResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7124,7 +7124,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestSimpleArgumentResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestSimpleArgumentResponseParams alloc] init];
 
     other.returnValue = self.returnValue;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7140,7 +7140,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestUnknownCommandParams
+@implementation MTRUnitTestingClusterTestUnknownCommandParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7151,7 +7151,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestUnknownCommandParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestUnknownCommandParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -7165,7 +7165,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestStructArrayArgumentResponseParams
+@implementation MTRUnitTestingClusterTestStructArrayArgumentResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7188,7 +7188,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestStructArrayArgumentResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestStructArrayArgumentResponseParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -7209,7 +7209,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestAddArgumentsParams
+@implementation MTRUnitTestingClusterTestAddArgumentsParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7224,7 +7224,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -7241,7 +7241,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestListInt8UReverseResponseParams
+@implementation MTRUnitTestingClusterTestListInt8UReverseResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7254,7 +7254,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestListInt8UReverseResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListInt8UReverseResponseParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7269,7 +7269,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestSimpleArgumentRequestParams
+@implementation MTRUnitTestingClusterTestSimpleArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7282,7 +7282,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestSimpleArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestSimpleArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7297,7 +7297,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEnumsResponseParams
+@implementation MTRUnitTestingClusterTestEnumsResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7312,7 +7312,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEnumsResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEnumsResponseParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -7329,7 +7329,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestStructArrayArgumentRequestParams
+@implementation MTRUnitTestingClusterTestStructArrayArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7352,7 +7352,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestStructArrayArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestStructArrayArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -7373,7 +7373,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestNullableOptionalResponseParams
+@implementation MTRUnitTestingClusterTestNullableOptionalResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7392,7 +7392,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestNullableOptionalResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestNullableOptionalResponseParams alloc] init];
 
     other.wasPresent = self.wasPresent;
     other.wasNull = self.wasNull;
@@ -7411,12 +7411,12 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestStructArgumentRequestParams
+@implementation MTRUnitTestingClusterTestStructArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
 
-        _arg1 = [MTRTestClusterClusterSimpleStruct new];
+        _arg1 = [MTRUnitTestingClusterSimpleStruct new];
         _timedInvokeTimeoutMs = nil;
     }
     return self;
@@ -7424,7 +7424,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestStructArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestStructArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7439,7 +7439,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestComplexNullableOptionalResponseParams
+@implementation MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7506,7 +7506,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestComplexNullableOptionalResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestComplexNullableOptionalResponseParams alloc] init];
 
     other.nullableIntWasNull = self.nullableIntWasNull;
     other.nullableIntValue = self.nullableIntValue;
@@ -7563,12 +7563,12 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestNestedStructArgumentRequestParams
+@implementation MTRUnitTestingClusterTestNestedStructArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
 
-        _arg1 = [MTRTestClusterClusterNestedStruct new];
+        _arg1 = [MTRUnitTestingClusterNestedStruct new];
         _timedInvokeTimeoutMs = nil;
     }
     return self;
@@ -7576,7 +7576,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestNestedStructArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestNestedStructArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7591,7 +7591,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterBooleanResponseParams
+@implementation MTRUnitTestingClusterBooleanResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7604,7 +7604,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterBooleanResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterBooleanResponseParams alloc] init];
 
     other.value = self.value;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7619,7 +7619,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestListStructArgumentRequestParams
+@implementation MTRUnitTestingClusterTestListStructArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7632,7 +7632,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestListStructArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListStructArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7647,12 +7647,12 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterSimpleStructResponseParams
+@implementation MTRUnitTestingClusterSimpleStructResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
 
-        _arg1 = [MTRTestClusterClusterSimpleStruct new];
+        _arg1 = [MTRUnitTestingClusterSimpleStruct new];
         _timedInvokeTimeoutMs = nil;
     }
     return self;
@@ -7660,7 +7660,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterSimpleStructResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterSimpleStructResponseParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7675,7 +7675,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestListInt8UArgumentRequestParams
+@implementation MTRUnitTestingClusterTestListInt8UArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7688,7 +7688,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestListInt8UArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListInt8UArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7703,7 +7703,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEmitTestEventResponseParams
+@implementation MTRUnitTestingClusterTestEmitTestEventResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7716,7 +7716,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEmitTestEventResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEmitTestEventResponseParams alloc] init];
 
     other.value = self.value;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7731,12 +7731,12 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestNestedStructListArgumentRequestParams
+@implementation MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
 
-        _arg1 = [MTRTestClusterClusterNestedStructList new];
+        _arg1 = [MTRUnitTestingClusterNestedStructList new];
         _timedInvokeTimeoutMs = nil;
     }
     return self;
@@ -7744,7 +7744,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestNestedStructListArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestNestedStructListArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7759,7 +7759,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
+@implementation MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7772,7 +7772,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams alloc] init];
 
     other.value = self.value;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7787,7 +7787,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
+@implementation MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7800,7 +7800,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestListNestedStructListArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7815,7 +7815,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestListInt8UReverseRequestParams
+@implementation MTRUnitTestingClusterTestListInt8UReverseRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7828,7 +7828,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestListInt8UReverseRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListInt8UReverseRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7843,7 +7843,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEnumsRequestParams
+@implementation MTRUnitTestingClusterTestEnumsRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7858,7 +7858,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEnumsRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEnumsRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -7875,7 +7875,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestNullableOptionalRequestParams
+@implementation MTRUnitTestingClusterTestNullableOptionalRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7888,7 +7888,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestNullableOptionalRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestNullableOptionalRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7903,7 +7903,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestComplexNullableOptionalRequestParams
+@implementation MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -7938,7 +7938,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestComplexNullableOptionalRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestComplexNullableOptionalRequestParams alloc] init];
 
     other.nullableInt = self.nullableInt;
     other.optionalInt = self.optionalInt;
@@ -7970,12 +7970,12 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterSimpleStructEchoRequestParams
+@implementation MTRUnitTestingClusterSimpleStructEchoRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
 
-        _arg1 = [MTRTestClusterClusterSimpleStruct new];
+        _arg1 = [MTRUnitTestingClusterSimpleStruct new];
         _timedInvokeTimeoutMs = nil;
     }
     return self;
@@ -7983,7 +7983,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterSimpleStructEchoRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterSimpleStructEchoRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -7998,7 +7998,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTimedInvokeRequestParams
+@implementation MTRUnitTestingClusterTimedInvokeRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -8009,7 +8009,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTimedInvokeRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTimedInvokeRequestParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -8023,7 +8023,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
+@implementation MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -8036,7 +8036,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
@@ -8051,7 +8051,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEmitTestEventRequestParams
+@implementation MTRUnitTestingClusterTestEmitTestEventRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -8068,7 +8068,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEmitTestEventRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEmitTestEventRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -8086,7 +8086,7 @@ - (NSString *)description
 }
 
 @end
-@implementation MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
+@implementation MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -8099,7 +8099,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams alloc] init];
 
     other.arg1 = self.arg1;
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
index ad351a8c73846c..52fe36a5c035c6 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
@@ -2123,8 +2123,8 @@ id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aRead
         }
         break;
     }
-    case Clusters::TestCluster::Id: {
-        using namespace Clusters::TestCluster;
+    case Clusters::UnitTesting::Id: {
+        using namespace Clusters::UnitTesting;
         switch (aPath.mEventId) {
 
         case Events::TestEvent::Id: {
@@ -2134,7 +2134,7 @@ id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aRead
                 return nil;
             }
 
-            MTRTestClusterClusterTestEventEvent * value = [MTRTestClusterClusterTestEventEvent new];
+            MTRUnitTestingClusterTestEventEvent * value = [MTRUnitTestingClusterTestEventEvent new];
 
             do {
                 NSNumber * _Nonnull memberValue;
@@ -2152,8 +2152,8 @@ id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aRead
                 value.arg3 = memberValue;
             } while (0);
             do {
-                MTRTestClusterClusterSimpleStruct * _Nonnull memberValue;
-                memberValue = [MTRTestClusterClusterSimpleStruct new];
+                MTRUnitTestingClusterSimpleStruct * _Nonnull memberValue;
+                memberValue = [MTRUnitTestingClusterSimpleStruct new];
                 memberValue.a = [NSNumber numberWithUnsignedChar:cppValue.arg4.a];
                 memberValue.b = [NSNumber numberWithBool:cppValue.arg4.b];
                 memberValue.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.arg4.c)];
@@ -2173,8 +2173,8 @@ id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aRead
                     auto iter_0 = cppValue.arg5.begin();
                     while (iter_0.Next()) {
                         auto & entry_0 = iter_0.GetValue();
-                        MTRTestClusterClusterSimpleStruct * newElement_0;
-                        newElement_0 = [MTRTestClusterClusterSimpleStruct new];
+                        MTRUnitTestingClusterSimpleStruct * newElement_0;
+                        newElement_0 = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
                         newElement_0.b = [NSNumber numberWithBool:entry_0.b];
                         newElement_0.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c)];
@@ -2227,7 +2227,7 @@ id MTRDecodeEventPayload(const ConcreteEventPath & aPath, TLV::TLVReader & aRead
                 return nil;
             }
 
-            MTRTestClusterClusterTestFabricScopedEventEvent * value = [MTRTestClusterClusterTestFabricScopedEventEvent new];
+            MTRUnitTestingClusterTestFabricScopedEventEvent * value = [MTRUnitTestingClusterTestFabricScopedEventEvent new];
 
             do {
                 NSNumber * _Nonnull memberValue;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
index fd17bda3907e6e..cfcac951339e95 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
@@ -950,7 +950,7 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterSimpleStruct : NSObject 
+@interface MTRUnitTestingClusterSimpleStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
 @property (nonatomic, copy) NSNumber * _Nonnull c;
@@ -964,13 +964,13 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterTestFabricScoped : NSObject 
+@interface MTRUnitTestingClusterTestFabricScoped : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull fabricSensitiveInt8u;
 @property (nonatomic, copy) NSNumber * _Nullable optionalFabricSensitiveInt8u;
 @property (nonatomic, copy) NSNumber * _Nullable nullableFabricSensitiveInt8u;
 @property (nonatomic, copy) NSNumber * _Nullable nullableOptionalFabricSensitiveInt8u;
 @property (nonatomic, copy) NSString * _Nonnull fabricSensitiveCharString;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull fabricSensitiveStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull fabricSensitiveStruct;
 @property (nonatomic, copy) NSArray * _Nonnull fabricSensitiveInt8uList;
 @property (nonatomic, copy) NSNumber * _Nonnull fabricIndex;
 
@@ -978,16 +978,16 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterNullablesAndOptionalsStruct : NSObject 
+@interface MTRUnitTestingClusterNullablesAndOptionalsStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nullable nullableInt;
 @property (nonatomic, copy) NSNumber * _Nullable optionalInt;
 @property (nonatomic, copy) NSNumber * _Nullable nullableOptionalInt;
 @property (nonatomic, copy) NSString * _Nullable nullableString;
 @property (nonatomic, copy) NSString * _Nullable optionalString;
 @property (nonatomic, copy) NSString * _Nullable nullableOptionalString;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableStruct;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable optionalStruct;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nullable nullableOptionalStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable optionalStruct;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nullable nullableOptionalStruct;
 @property (nonatomic, copy) NSArray * _Nullable nullableList;
 @property (nonatomic, copy) NSArray * _Nullable optionalList;
 @property (nonatomic, copy) NSArray * _Nullable nullableOptionalList;
@@ -996,19 +996,19 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterNestedStruct : NSObject 
+@interface MTRUnitTestingClusterNestedStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull c;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull c;
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterNestedStructList : NSObject 
+@interface MTRUnitTestingClusterNestedStructList : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull c;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull c;
 @property (nonatomic, copy) NSArray * _Nonnull d;
 @property (nonatomic, copy) NSArray * _Nonnull e;
 @property (nonatomic, copy) NSArray * _Nonnull f;
@@ -1018,14 +1018,14 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterDoubleNestedStructList : NSObject 
+@interface MTRUnitTestingClusterDoubleNestedStructList : NSObject 
 @property (nonatomic, copy) NSArray * _Nonnull a;
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterTestListStructOctet : NSObject 
+@interface MTRUnitTestingClusterTestListStructOctet : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull member1;
 @property (nonatomic, copy) NSData * _Nonnull member2;
 
@@ -1033,11 +1033,11 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterTestEventEvent : NSObject 
+@interface MTRUnitTestingClusterTestEventEvent : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 @property (nonatomic, copy) NSNumber * _Nonnull arg2;
 @property (nonatomic, copy) NSNumber * _Nonnull arg3;
-@property (nonatomic, copy) MTRTestClusterClusterSimpleStruct * _Nonnull arg4;
+@property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg4;
 @property (nonatomic, copy) NSArray * _Nonnull arg5;
 @property (nonatomic, copy) NSArray * _Nonnull arg6;
 
@@ -1045,7 +1045,7 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
-@interface MTRTestClusterClusterTestFabricScopedEventEvent : NSObject 
+@interface MTRUnitTestingClusterTestFabricScopedEventEvent : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull fabricIndex;
 
 - (instancetype)init;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
index faa495e72735ee..2ddfba8c35b722 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
@@ -3569,7 +3569,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterSimpleStruct
+@implementation MTRUnitTestingClusterSimpleStruct
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3595,7 +3595,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterSimpleStruct alloc] init];
+    auto other = [[MTRUnitTestingClusterSimpleStruct alloc] init];
 
     other.a = self.a;
     other.b = self.b;
@@ -3619,7 +3619,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterTestFabricScoped
+@implementation MTRUnitTestingClusterTestFabricScoped
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3634,7 +3634,7 @@ - (instancetype)init
 
         _fabricSensitiveCharString = @"";
 
-        _fabricSensitiveStruct = [MTRTestClusterClusterSimpleStruct new];
+        _fabricSensitiveStruct = [MTRUnitTestingClusterSimpleStruct new];
 
         _fabricSensitiveInt8uList = [NSArray array];
 
@@ -3645,7 +3645,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterTestFabricScoped alloc] init];
+    auto other = [[MTRUnitTestingClusterTestFabricScoped alloc] init];
 
     other.fabricSensitiveInt8u = self.fabricSensitiveInt8u;
     other.optionalFabricSensitiveInt8u = self.optionalFabricSensitiveInt8u;
@@ -3673,7 +3673,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterNullablesAndOptionalsStruct
+@implementation MTRUnitTestingClusterNullablesAndOptionalsStruct
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3707,7 +3707,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterNullablesAndOptionalsStruct alloc] init];
+    auto other = [[MTRUnitTestingClusterNullablesAndOptionalsStruct alloc] init];
 
     other.nullableInt = self.nullableInt;
     other.optionalInt = self.optionalInt;
@@ -3739,7 +3739,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterNestedStruct
+@implementation MTRUnitTestingClusterNestedStruct
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3748,14 +3748,14 @@ - (instancetype)init
 
         _b = @(0);
 
-        _c = [MTRTestClusterClusterSimpleStruct new];
+        _c = [MTRUnitTestingClusterSimpleStruct new];
     }
     return self;
 }
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterNestedStruct alloc] init];
+    auto other = [[MTRUnitTestingClusterNestedStruct alloc] init];
 
     other.a = self.a;
     other.b = self.b;
@@ -3773,7 +3773,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterNestedStructList
+@implementation MTRUnitTestingClusterNestedStructList
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3782,7 +3782,7 @@ - (instancetype)init
 
         _b = @(0);
 
-        _c = [MTRTestClusterClusterSimpleStruct new];
+        _c = [MTRUnitTestingClusterSimpleStruct new];
 
         _d = [NSArray array];
 
@@ -3797,7 +3797,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterNestedStructList alloc] init];
+    auto other = [[MTRUnitTestingClusterNestedStructList alloc] init];
 
     other.a = self.a;
     other.b = self.b;
@@ -3819,7 +3819,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterDoubleNestedStructList
+@implementation MTRUnitTestingClusterDoubleNestedStructList
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3831,7 +3831,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterDoubleNestedStructList alloc] init];
+    auto other = [[MTRUnitTestingClusterDoubleNestedStructList alloc] init];
 
     other.a = self.a;
 
@@ -3846,7 +3846,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterTestListStructOctet
+@implementation MTRUnitTestingClusterTestListStructOctet
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3860,7 +3860,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterTestListStructOctet alloc] init];
+    auto other = [[MTRUnitTestingClusterTestListStructOctet alloc] init];
 
     other.member1 = self.member1;
     other.member2 = self.member2;
@@ -3877,7 +3877,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterTestEventEvent
+@implementation MTRUnitTestingClusterTestEventEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3888,7 +3888,7 @@ - (instancetype)init
 
         _arg3 = @(0);
 
-        _arg4 = [MTRTestClusterClusterSimpleStruct new];
+        _arg4 = [MTRUnitTestingClusterSimpleStruct new];
 
         _arg5 = [NSArray array];
 
@@ -3899,7 +3899,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterTestEventEvent alloc] init];
+    auto other = [[MTRUnitTestingClusterTestEventEvent alloc] init];
 
     other.arg1 = self.arg1;
     other.arg2 = self.arg2;
@@ -3920,7 +3920,7 @@ - (NSString *)description
 
 @end
 
-@implementation MTRTestClusterClusterTestFabricScopedEventEvent
+@implementation MTRUnitTestingClusterTestFabricScopedEventEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -3932,7 +3932,7 @@ - (instancetype)init
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRTestClusterClusterTestFabricScopedEventEvent alloc] init];
+    auto other = [[MTRUnitTestingClusterTestFabricScopedEventEvent alloc] init];
 
     other.fabricIndex = self.fabricIndex;
 
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 78659c7b27c106..0c23ae5a017b28 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -1126,7 +1126,7 @@ - (void)test013_ReuseChipClusterObject
     XCTestExpectation * expectation = [self expectationWithDescription:@"ReuseMTRClusterObjectFirstCall"];
 
     dispatch_queue_t queue = dispatch_get_main_queue();
-    MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device endpointID:@(1) queue:queue];
+    MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device endpointID:@(1) queue:queue];
     XCTAssertNotNil(cluster);
 
     [cluster testWithCompletion:^(NSError * err) {
diff --git a/src/lib/support/tests/TestTlvToJson.cpp b/src/lib/support/tests/TestTlvToJson.cpp
index 21e4113c12fa69..881045f17cddf8 100644
--- a/src/lib/support/tests/TestTlvToJson.cpp
+++ b/src/lib/support/tests/TestTlvToJson.cpp
@@ -156,7 +156,7 @@ void TestConverter(nlTestSuite * inSuite, void * inContext)
                       "   \"value\" : null\n"
                       "}\n");
 
-    Clusters::TestCluster::Structs::SimpleStruct::Type structVal;
+    Clusters::UnitTesting::Structs::SimpleStruct::Type structVal;
     structVal.a = 20;
     structVal.b = true;
     structVal.d = byteBuf;
@@ -188,8 +188,8 @@ void TestConverter(nlTestSuite * inSuite, void * inContext)
                       "   \"value\" : [ 1, 2, 3, 4 ]\n"
                       "}\n");
 
-    Clusters::TestCluster::Structs::SimpleStruct::Type structListData[2] = { structVal, structVal };
-    DataModel::List structList;
+    Clusters::UnitTesting::Structs::SimpleStruct::Type structListData[2] = { structVal, structVal };
+    DataModel::List structList;
 
     structList = structListData;
 
diff --git a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp
index 5d65d8f8775339..38876e20dac341 100644
--- a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp
+++ b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp
@@ -1651,7 +1651,81 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
 
 } // namespace TargetNavigator
 
-namespace TestCluster {
+namespace Thermostat {
+
+void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
+{
+    CHIP_ERROR TLVError = CHIP_NO_ERROR;
+    bool wasHandled     = false;
+    {
+        switch (aCommandPath.mCommandId)
+        {
+        case Commands::SetpointRaiseLower::Id: {
+            Commands::SetpointRaiseLower::DecodableType commandData;
+            TLVError = DataModel::Decode(aDataTlv, commandData);
+            if (TLVError == CHIP_NO_ERROR)
+            {
+                wasHandled = emberAfThermostatClusterSetpointRaiseLowerCallback(apCommandObj, aCommandPath, commandData);
+            }
+            break;
+        }
+        default: {
+            // Unrecognized command ID, error status will apply.
+            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
+            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
+                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
+            return;
+        }
+        }
+    }
+
+    if (CHIP_NO_ERROR != TLVError || !wasHandled)
+    {
+        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
+        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
+    }
+}
+
+} // namespace Thermostat
+
+namespace ThreadNetworkDiagnostics {
+
+void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
+{
+    CHIP_ERROR TLVError = CHIP_NO_ERROR;
+    bool wasHandled     = false;
+    {
+        switch (aCommandPath.mCommandId)
+        {
+        case Commands::ResetCounts::Id: {
+            Commands::ResetCounts::DecodableType commandData;
+            TLVError = DataModel::Decode(aDataTlv, commandData);
+            if (TLVError == CHIP_NO_ERROR)
+            {
+                wasHandled = emberAfThreadNetworkDiagnosticsClusterResetCountsCallback(apCommandObj, aCommandPath, commandData);
+            }
+            break;
+        }
+        default: {
+            // Unrecognized command ID, error status will apply.
+            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
+            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
+                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
+            return;
+        }
+        }
+    }
+
+    if (CHIP_NO_ERROR != TLVError || !wasHandled)
+    {
+        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
+        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
+    }
+}
+
+} // namespace ThreadNetworkDiagnostics
+
+namespace UnitTesting {
 
 void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
 {
@@ -1665,7 +1739,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1674,7 +1748,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestNotHandledCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestNotHandledCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1683,7 +1757,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestSpecificCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestSpecificCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1692,7 +1766,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestAddArgumentsCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestAddArgumentsCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1701,7 +1775,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1711,7 +1785,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestNestedStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestNestedStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1721,7 +1795,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestListStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestListStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1730,7 +1804,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestListInt8UArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1740,7 +1814,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1749,7 +1823,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath,
+                wasHandled = emberAfUnitTestingClusterTestListNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath,
                                                                                                       commandData);
             }
             break;
@@ -1759,7 +1833,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListInt8UReverseRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestListInt8UReverseRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1768,7 +1842,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestEnumsRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestEnumsRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1777,7 +1851,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestNullableOptionalRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestNullableOptionalRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1786,7 +1860,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterSimpleStructEchoRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterSimpleStructEchoRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1795,7 +1869,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTimedInvokeRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTimedInvokeRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1805,7 +1879,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestSimpleOptionalArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestSimpleOptionalArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1814,7 +1888,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestEmitTestEventRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestEmitTestEventRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1824,44 +1898,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(apCommandObj, aCommandPath, commandData);
-            }
-            break;
-        }
-        default: {
-            // Unrecognized command ID, error status will apply.
-            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
-            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
-                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
-            return;
-        }
-        }
-    }
-
-    if (CHIP_NO_ERROR != TLVError || !wasHandled)
-    {
-        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
-        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
-    }
-}
-
-} // namespace TestCluster
-
-namespace Thermostat {
-
-void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
-{
-    CHIP_ERROR TLVError = CHIP_NO_ERROR;
-    bool wasHandled     = false;
-    {
-        switch (aCommandPath.mCommandId)
-        {
-        case Commands::SetpointRaiseLower::Id: {
-            Commands::SetpointRaiseLower::DecodableType commandData;
-            TLVError = DataModel::Decode(aDataTlv, commandData);
-            if (TLVError == CHIP_NO_ERROR)
-            {
-                wasHandled = emberAfThermostatClusterSetpointRaiseLowerCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestEmitTestFabricScopedEventRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1882,44 +1919,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
     }
 }
 
-} // namespace Thermostat
-
-namespace ThreadNetworkDiagnostics {
-
-void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
-{
-    CHIP_ERROR TLVError = CHIP_NO_ERROR;
-    bool wasHandled     = false;
-    {
-        switch (aCommandPath.mCommandId)
-        {
-        case Commands::ResetCounts::Id: {
-            Commands::ResetCounts::DecodableType commandData;
-            TLVError = DataModel::Decode(aDataTlv, commandData);
-            if (TLVError == CHIP_NO_ERROR)
-            {
-                wasHandled = emberAfThreadNetworkDiagnosticsClusterResetCountsCallback(apCommandObj, aCommandPath, commandData);
-            }
-            break;
-        }
-        default: {
-            // Unrecognized command ID, error status will apply.
-            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
-            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
-                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
-            return;
-        }
-        }
-    }
-
-    if (CHIP_NO_ERROR != TLVError || !wasHandled)
-    {
-        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
-        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
-    }
-}
-
-} // namespace ThreadNetworkDiagnostics
+} // namespace UnitTesting
 
 namespace WiFiNetworkDiagnostics {
 
@@ -2129,15 +2129,15 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, TLV:
     case Clusters::TargetNavigator::Id:
         Clusters::TargetNavigator::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
-    case Clusters::TestCluster::Id:
-        Clusters::TestCluster::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
-        break;
     case Clusters::Thermostat::Id:
         Clusters::Thermostat::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
     case Clusters::ThreadNetworkDiagnostics::Id:
         Clusters::ThreadNetworkDiagnostics::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
+    case Clusters::UnitTesting::Id:
+        Clusters::UnitTesting::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
+        break;
     case Clusters::WiFiNetworkDiagnostics::Id:
         Clusters::WiFiNetworkDiagnostics::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
diff --git a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
index 5ec8072f6e50b5..fa885d1447944d 100644
--- a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
@@ -191,9 +191,6 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_TEMPERATURE_MEASUREMENT_CLUSTER_ID:
         emberAfTemperatureMeasurementClusterInitCallback(endpoint);
         break;
-    case ZCL_TEST_CLUSTER_ID:
-        emberAfTestClusterClusterInitCallback(endpoint);
-        break;
     case ZCL_THERMOSTAT_CLUSTER_ID:
         emberAfThermostatClusterInitCallback(endpoint);
         break;
@@ -209,6 +206,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_UNIT_LOCALIZATION_CLUSTER_ID:
         emberAfUnitLocalizationClusterInitCallback(endpoint);
         break;
+    case ZCL_UNIT_TESTING_CLUSTER_ID:
+        emberAfUnitTestingClusterInitCallback(endpoint);
+        break;
     case ZCL_USER_LABEL_CLUSTER_ID:
         emberAfUserLabelClusterInitCallback(endpoint);
         break;
@@ -497,11 +497,6 @@ void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(Endp
     // To prevent warning
     (void) endpoint;
 }
-void __attribute__((weak)) emberAfTestClusterClusterInitCallback(EndpointId endpoint)
-{
-    // To prevent warning
-    (void) endpoint;
-}
 void __attribute__((weak)) emberAfThermostatClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
@@ -527,6 +522,11 @@ void __attribute__((weak)) emberAfUnitLocalizationClusterInitCallback(EndpointId
     // To prevent warning
     (void) endpoint;
 }
+void __attribute__((weak)) emberAfUnitTestingClusterInitCallback(EndpointId endpoint)
+{
+    // To prevent warning
+    (void) endpoint;
+}
 void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
index f652b1f0dada93..7d5a50741eb029 100644
--- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
@@ -73,7 +73,7 @@
             /* 54 - SeekRangeStart, */                                                                                             \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server), big-endian */                                                          \
+            /* Endpoint: 1, Cluster: Unit Testing (server), big-endian */                                                          \
                                                                                                                                    \
             /* 62 - bitmap64, */                                                                                                   \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
@@ -192,7 +192,7 @@
             /* 54 - SeekRangeStart, */                                                                                             \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server), little-endian */                                                       \
+            /* Endpoint: 1, Cluster: Unit Testing (server), little-endian */                                                       \
                                                                                                                                    \
             /* 62 - bitmap64, */                                                                                                   \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
@@ -354,7 +354,7 @@
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF }, /* ColorPointBY */                                              \
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF }, /* StartUpColorTemperatureMireds */                             \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server) */                                                                      \
+            /* Endpoint: 1, Cluster: Unit Testing (server) */                                                                      \
             { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },   /* range_restricted_int8u */                                  \
             { (uint16_t) -0x14, (uint16_t) -0x28, (uint16_t) 0x32 }, /* range_restricted_int8s */                                  \
             { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },  /* range_restricted_int16u */                                 \
@@ -1295,7 +1295,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) },        /* FeatureMap */                               \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) },          /* ClusterRevision */                          \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server) */                                                                      \
+            /* Endpoint: 1, Cluster: Unit Testing (server) */                                                                      \
             { 0x00000000, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(false) },    /* boolean */        \
             { 0x00000001, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) },        /* bitmap8 */        \
             { 0x00000002, ZAP_TYPE(BITMAP16), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) },       /* bitmap16 */       \
@@ -1832,7 +1832,7 @@
   /*   GeneratedCommandList (index=194)*/ \
   0x00000001 /* SendKeyResponse */, \
   chip::kInvalidCommandId /* end of list */, \
-  /* Endpoint: 1, Cluster: Test Cluster (server) */\
+  /* Endpoint: 1, Cluster: Unit Testing (server) */\
   /*   AcceptedCommandList (index=196) */ \
   0x00000000 /* Test */, \
   0x00000001 /* TestNotHandled */, \
@@ -2690,7 +2690,7 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Test Cluster (server) */ \
+      /* Endpoint: 1, Cluster: Unit Testing (server) */ \
       .clusterId = 0xFFF1FC05,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(596), \
       .attributeCount = 83, \
diff --git a/zzz_generated/all-clusters-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
index 947a9fa1dd4c9d..dd4aa28934f578 100644
--- a/zzz_generated/all-clusters-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
@@ -91,7 +91,7 @@
 #define EMBER_AF_APPLICATION_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ELECTRICAL_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_TEST_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_UNIT_TESTING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_FAULT_INJECTION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 
 /**** Cluster Plugins ****/
@@ -425,10 +425,10 @@
 #define EMBER_AF_PLUGIN_ELECTRICAL_MEASUREMENT_SERVER
 #define EMBER_AF_PLUGIN_ELECTRICAL_MEASUREMENT
 
-// Use this macro to check if the server side of the Test Cluster cluster is included
-#define ZCL_USING_TEST_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_TEST_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_TEST_CLUSTER
+// Use this macro to check if the server side of the Unit Testing cluster is included
+#define ZCL_USING_UNIT_TESTING_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_UNIT_TESTING_SERVER
+#define EMBER_AF_PLUGIN_UNIT_TESTING
 
 // Use this macro to check if the server side of the Fault Injection cluster is included
 #define ZCL_USING_FAULT_INJECTION_CLUSTER_SERVER
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/IMClusterCommandHandler.cpp b/zzz_generated/all-clusters-minimal-app/zap-generated/IMClusterCommandHandler.cpp
index 35d2c30acf31cc..9e2c11a63bd377 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/IMClusterCommandHandler.cpp
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/IMClusterCommandHandler.cpp
@@ -1407,7 +1407,44 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
 
 } // namespace TargetNavigator
 
-namespace TestCluster {
+namespace Thermostat {
+
+void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
+{
+    CHIP_ERROR TLVError = CHIP_NO_ERROR;
+    bool wasHandled     = false;
+    {
+        switch (aCommandPath.mCommandId)
+        {
+        case Commands::SetpointRaiseLower::Id: {
+            Commands::SetpointRaiseLower::DecodableType commandData;
+            TLVError = DataModel::Decode(aDataTlv, commandData);
+            if (TLVError == CHIP_NO_ERROR)
+            {
+                wasHandled = emberAfThermostatClusterSetpointRaiseLowerCallback(apCommandObj, aCommandPath, commandData);
+            }
+            break;
+        }
+        default: {
+            // Unrecognized command ID, error status will apply.
+            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
+            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
+                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
+            return;
+        }
+        }
+    }
+
+    if (CHIP_NO_ERROR != TLVError || !wasHandled)
+    {
+        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
+        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
+    }
+}
+
+} // namespace Thermostat
+
+namespace UnitTesting {
 
 void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
 {
@@ -1421,7 +1458,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1430,7 +1467,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestNotHandledCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestNotHandledCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1439,7 +1476,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestSpecificCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestSpecificCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1448,7 +1485,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestAddArgumentsCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestAddArgumentsCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1457,7 +1494,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1467,7 +1504,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestNestedStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestNestedStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1477,7 +1514,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestListStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestListStructArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1486,7 +1523,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestListInt8UArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1496,7 +1533,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1505,7 +1542,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath,
+                wasHandled = emberAfUnitTestingClusterTestListNestedStructListArgumentRequestCallback(apCommandObj, aCommandPath,
                                                                                                       commandData);
             }
             break;
@@ -1515,7 +1552,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestListInt8UReverseRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestListInt8UReverseRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1524,7 +1561,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestEnumsRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestEnumsRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1533,7 +1570,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestNullableOptionalRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestNullableOptionalRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1542,7 +1579,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterSimpleStructEchoRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterSimpleStructEchoRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1551,7 +1588,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTimedInvokeRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTimedInvokeRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1561,7 +1598,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestSimpleOptionalArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestSimpleOptionalArgumentRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1570,7 +1607,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             TLVError = DataModel::Decode(aDataTlv, commandData);
             if (TLVError == CHIP_NO_ERROR)
             {
-                wasHandled = emberAfTestClusterClusterTestEmitTestEventRequestCallback(apCommandObj, aCommandPath, commandData);
+                wasHandled = emberAfUnitTestingClusterTestEmitTestEventRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1580,44 +1617,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
             if (TLVError == CHIP_NO_ERROR)
             {
                 wasHandled =
-                    emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(apCommandObj, aCommandPath, commandData);
-            }
-            break;
-        }
-        default: {
-            // Unrecognized command ID, error status will apply.
-            apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand);
-            ChipLogError(Zcl, "Unknown command " ChipLogFormatMEI " for cluster " ChipLogFormatMEI,
-                         ChipLogValueMEI(aCommandPath.mCommandId), ChipLogValueMEI(aCommandPath.mClusterId));
-            return;
-        }
-        }
-    }
-
-    if (CHIP_NO_ERROR != TLVError || !wasHandled)
-    {
-        apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::InvalidCommand);
-        ChipLogProgress(Zcl, "Failed to dispatch command, TLVError=%" CHIP_ERROR_FORMAT, TLVError.Format());
-    }
-}
-
-} // namespace TestCluster
-
-namespace Thermostat {
-
-void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandPath & aCommandPath, TLV::TLVReader & aDataTlv)
-{
-    CHIP_ERROR TLVError = CHIP_NO_ERROR;
-    bool wasHandled     = false;
-    {
-        switch (aCommandPath.mCommandId)
-        {
-        case Commands::SetpointRaiseLower::Id: {
-            Commands::SetpointRaiseLower::DecodableType commandData;
-            TLVError = DataModel::Decode(aDataTlv, commandData);
-            if (TLVError == CHIP_NO_ERROR)
-            {
-                wasHandled = emberAfThermostatClusterSetpointRaiseLowerCallback(apCommandObj, aCommandPath, commandData);
+                    emberAfUnitTestingClusterTestEmitTestFabricScopedEventRequestCallback(apCommandObj, aCommandPath, commandData);
             }
             break;
         }
@@ -1638,7 +1638,7 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP
     }
 }
 
-} // namespace Thermostat
+} // namespace UnitTesting
 
 namespace WindowCovering {
 
@@ -1778,12 +1778,12 @@ void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, TLV:
     case Clusters::TargetNavigator::Id:
         Clusters::TargetNavigator::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
-    case Clusters::TestCluster::Id:
-        Clusters::TestCluster::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
-        break;
     case Clusters::Thermostat::Id:
         Clusters::Thermostat::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
+    case Clusters::UnitTesting::Id:
+        Clusters::UnitTesting::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
+        break;
     case Clusters::WindowCovering::Id:
         Clusters::WindowCovering::DispatchServerCommand(apCommandObj, aCommandPath, aReader);
         break;
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/callback-stub.cpp b/zzz_generated/all-clusters-minimal-app/zap-generated/callback-stub.cpp
index 344bbe4982d5cd..c47f2d2c33ef42 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/callback-stub.cpp
@@ -176,9 +176,6 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_TEMPERATURE_MEASUREMENT_CLUSTER_ID:
         emberAfTemperatureMeasurementClusterInitCallback(endpoint);
         break;
-    case ZCL_TEST_CLUSTER_ID:
-        emberAfTestClusterClusterInitCallback(endpoint);
-        break;
     case ZCL_THERMOSTAT_CLUSTER_ID:
         emberAfThermostatClusterInitCallback(endpoint);
         break;
@@ -194,6 +191,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_UNIT_LOCALIZATION_CLUSTER_ID:
         emberAfUnitLocalizationClusterInitCallback(endpoint);
         break;
+    case ZCL_UNIT_TESTING_CLUSTER_ID:
+        emberAfUnitTestingClusterInitCallback(endpoint);
+        break;
     case ZCL_USER_LABEL_CLUSTER_ID:
         emberAfUserLabelClusterInitCallback(endpoint);
         break;
@@ -457,11 +457,6 @@ void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(Endp
     // To prevent warning
     (void) endpoint;
 }
-void __attribute__((weak)) emberAfTestClusterClusterInitCallback(EndpointId endpoint)
-{
-    // To prevent warning
-    (void) endpoint;
-}
 void __attribute__((weak)) emberAfThermostatClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
@@ -487,6 +482,11 @@ void __attribute__((weak)) emberAfUnitLocalizationClusterInitCallback(EndpointId
     // To prevent warning
     (void) endpoint;
 }
+void __attribute__((weak)) emberAfUnitTestingClusterInitCallback(EndpointId endpoint)
+{
+    // To prevent warning
+    (void) endpoint;
+}
 void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
index aebb585afcb68a..4f746370fccee4 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
@@ -54,7 +54,7 @@
             /* 20 - Description, */                                                                                                \
             6, 'C', 'o', 'f', 'f', 'e', 'e',                                                                                       \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server), big-endian */                                                          \
+            /* Endpoint: 1, Cluster: Unit Testing (server), big-endian */                                                          \
                                                                                                                                    \
             /* 27 - bitmap64, */                                                                                                   \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
@@ -154,7 +154,7 @@
             /* 20 - Description, */                                                                                                \
             6, 'C', 'o', 'f', 'f', 'e', 'e',                                                                                       \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server), little-endian */                                                       \
+            /* Endpoint: 1, Cluster: Unit Testing (server), little-endian */                                                       \
                                                                                                                                    \
             /* 27 - bitmap64, */                                                                                                   \
             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
@@ -281,7 +281,7 @@
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x1 }, /* temperature display mode */                                     \
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x5 }, /* keypad lockout */                                               \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server) */                                                                      \
+            /* Endpoint: 1, Cluster: Unit Testing (server) */                                                                      \
             { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },   /* range_restricted_int8u */                                  \
             { (uint16_t) -0x14, (uint16_t) -0x28, (uint16_t) 0x32 }, /* range_restricted_int8s */                                  \
             { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },  /* range_restricted_int16u */                                 \
@@ -831,7 +831,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Test Cluster (server) */                                                                      \
+            /* Endpoint: 1, Cluster: Unit Testing (server) */                                                                      \
             { 0x00000000, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(false) },    /* boolean */        \
             { 0x00000001, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) },        /* bitmap8 */        \
             { 0x00000002, ZAP_TYPE(BITMAP16), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0) },       /* bitmap16 */       \
@@ -1319,7 +1319,7 @@
   /*   GeneratedCommandList (index=156)*/ \
   0x00000001 /* GetSetupPINResponse */, \
   chip::kInvalidCommandId /* end of list */, \
-  /* Endpoint: 1, Cluster: Test Cluster (server) */\
+  /* Endpoint: 1, Cluster: Unit Testing (server) */\
   /*   AcceptedCommandList (index=158) */ \
   0x00000000 /* Test */, \
   0x00000001 /* TestNotHandled */, \
@@ -2122,7 +2122,7 @@
       .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 156 ) ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Test Cluster (server) */ \
+      /* Endpoint: 1, Cluster: Unit Testing (server) */ \
       .clusterId = 0xFFF1FC05,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(323), \
       .attributeCount = 82, \
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
index 1f7d89b375cdb3..024f58e2bb4c25 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
@@ -87,7 +87,7 @@
 #define EMBER_AF_APPLICATION_LAUNCHER_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_APPLICATION_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_TEST_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_UNIT_TESTING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 
 /**** Cluster Plugins ****/
 
@@ -400,7 +400,7 @@
 #define EMBER_AF_PLUGIN_ACCOUNT_LOGIN_SERVER
 #define EMBER_AF_PLUGIN_ACCOUNT_LOGIN
 
-// Use this macro to check if the server side of the Test Cluster cluster is included
-#define ZCL_USING_TEST_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_TEST_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_TEST_CLUSTER
+// Use this macro to check if the server side of the Unit Testing cluster is included
+#define ZCL_USING_UNIT_TESTING_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_UNIT_TESTING_SERVER
+#define EMBER_AF_PLUGIN_UNIT_TESTING
diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
index 7a0ec247317e58..ae5e84a0245133 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
@@ -1133,7 +1133,7 @@
 #define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A16)
 #define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_C_ATTRIBUTE_ID (0x0A17)
 
-// Attribute ids for cluster: Test Cluster
+// Attribute ids for cluster: Unit Testing
 
 // Client attributes
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index ec5fc6f0b6d990..26b721b92c7375 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -27727,7 +27727,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
 } // namespace Attributes
 } // namespace ElectricalMeasurement
 
-namespace TestCluster {
+namespace UnitTesting {
 namespace Attributes {
 
 namespace Boolean {
@@ -27737,7 +27737,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, bool * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27756,19 +27756,19 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace Boolean
 
 namespace Bitmap8 {
 
-EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask * value)
+EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask * value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27777,9 +27777,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -27787,19 +27787,19 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask * value)
+EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask * value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27808,9 +27808,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -27818,19 +27818,19 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask * value)
+EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask * value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27839,9 +27839,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -27849,19 +27849,19 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask * value)
+EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask * value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27870,9 +27870,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -27880,7 +27880,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27911,7 +27911,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int8u
@@ -27923,7 +27923,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27942,7 +27942,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int16u
@@ -27954,7 +27954,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -27973,7 +27973,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int24u
@@ -27985,7 +27985,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28004,7 +28004,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int32u
@@ -28016,7 +28016,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28035,7 +28035,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int40u
@@ -28047,7 +28047,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28066,7 +28066,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int48u
@@ -28078,7 +28078,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28097,7 +28097,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int56u
@@ -28109,7 +28109,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28128,7 +28128,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int64u
@@ -28140,7 +28140,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int8_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28159,7 +28159,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int8s
@@ -28171,7 +28171,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28190,7 +28190,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int16s
@@ -28202,7 +28202,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int32_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28221,7 +28221,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int24s
@@ -28233,7 +28233,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int32_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28252,7 +28252,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int32s
@@ -28264,7 +28264,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28283,7 +28283,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int40s
@@ -28295,7 +28295,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28314,7 +28314,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int48s
@@ -28326,7 +28326,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value)
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28345,7 +28345,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int56s
@@ -28357,7 +28357,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int64_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28376,7 +28376,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
 }
 
 } // namespace Int64s
@@ -28388,7 +28388,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28407,7 +28407,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 } // namespace Enum8
@@ -28419,7 +28419,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28438,7 +28438,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
 }
 
 } // namespace Enum16
@@ -28450,7 +28450,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, float * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28469,7 +28469,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, float value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
 }
 
 } // namespace FloatSingle
@@ -28481,7 +28481,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, double * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28500,7 +28500,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, double value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
 }
 
 } // namespace FloatDouble
@@ -28510,7 +28510,7 @@ namespace OctetString {
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableByteSpan value)
 {
     uint8_t zclString[10 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -28530,7 +28530,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::ByteSpan value)
     uint8_t zclString[10 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace OctetString
@@ -28540,7 +28540,7 @@ namespace LongOctetString {
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableByteSpan value)
 {
     uint8_t zclString[1000 + 2];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfLongStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -28560,7 +28560,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::ByteSpan value)
     uint8_t zclString[1000 + 2];
     emberAfCopyInt16u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[2], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace LongOctetString
@@ -28570,7 +28570,7 @@ namespace CharString {
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[10 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -28590,7 +28590,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value)
     uint8_t zclString[10 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace CharString
@@ -28600,7 +28600,7 @@ namespace LongCharString {
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[1000 + 2];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfLongStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -28620,7 +28620,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value)
     uint8_t zclString[1000 + 2];
     emberAfCopyInt16u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[2], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace LongCharString
@@ -28632,7 +28632,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28651,7 +28651,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE);
 }
 
 } // namespace EpochUs
@@ -28663,7 +28663,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28682,7 +28682,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE);
 }
 
 } // namespace EpochS
@@ -28694,7 +28694,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::VendorId * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28713,19 +28713,19 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::VendorId value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE);
 }
 
 } // namespace VendorId
 
 namespace EnumAttr {
 
-EmberAfStatus Get(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::SimpleEnum * value)
+EmberAfStatus Get(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum * value)
 {
-    using Traits = NumericAttributeTraits;
+    using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28734,9 +28734,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::S
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::SimpleEnum value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value)
 {
-    using Traits = NumericAttributeTraits;
+    using Traits = NumericAttributeTraits;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -28744,7 +28744,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::S
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 } // namespace EnumAttr
@@ -28756,7 +28756,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28775,7 +28775,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 } // namespace RangeRestrictedInt8u
@@ -28787,7 +28787,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int8_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28806,7 +28806,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 } // namespace RangeRestrictedInt8s
@@ -28818,7 +28818,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28837,7 +28837,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace RangeRestrictedInt16u
@@ -28849,7 +28849,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, int16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28868,7 +28868,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 } // namespace RangeRestrictedInt16s
@@ -28880,7 +28880,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, bool * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28899,7 +28899,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace TimedWriteBoolean
@@ -28911,7 +28911,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, bool * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28930,7 +28930,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace GeneralErrorBoolean
@@ -28942,7 +28942,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, bool * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28961,7 +28961,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace ClusterErrorBoolean
@@ -28973,7 +28973,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, bool * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -28992,7 +28992,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace Unsupported
@@ -29004,7 +29004,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29026,7 +29026,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29035,7 +29035,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29053,12 +29053,12 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl
 namespace NullableBitmap8 {
 
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value)
+                  DataModel::Nullable> & value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29070,9 +29070,9 @@ EmberAfStatus Get(chip::EndpointId endpoint,
     }
     return status;
 }
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -29080,20 +29080,20 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value)
+                  const chip::app::DataModel::Nullable> & value)
 {
     if (value.IsNull())
     {
@@ -29108,12 +29108,12 @@ EmberAfStatus Set(chip::EndpointId endpoint,
 namespace NullableBitmap16 {
 
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value)
+                  DataModel::Nullable> & value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29125,9 +29125,9 @@ EmberAfStatus Get(chip::EndpointId endpoint,
     }
     return status;
 }
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -29135,20 +29135,20 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value)
+                  const chip::app::DataModel::Nullable> & value)
 {
     if (value.IsNull())
     {
@@ -29163,12 +29163,12 @@ EmberAfStatus Set(chip::EndpointId endpoint,
 namespace NullableBitmap32 {
 
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value)
+                  DataModel::Nullable> & value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29180,9 +29180,9 @@ EmberAfStatus Get(chip::EndpointId endpoint,
     }
     return status;
 }
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -29190,20 +29190,20 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value)
+                  const chip::app::DataModel::Nullable> & value)
 {
     if (value.IsNull())
     {
@@ -29218,12 +29218,12 @@ EmberAfStatus Set(chip::EndpointId endpoint,
 namespace NullableBitmap64 {
 
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value)
+                  DataModel::Nullable> & value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29235,9 +29235,9 @@ EmberAfStatus Get(chip::EndpointId endpoint,
     }
     return status;
 }
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value)
 {
-    using Traits = NumericAttributeTraits>;
+    using Traits = NumericAttributeTraits>;
     if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -29245,20 +29245,20 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask>;
+    using Traits = NumericAttributeTraits>;
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BITMAP64_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP64_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value)
+                  const chip::app::DataModel::Nullable> & value)
 {
     if (value.IsNull())
     {
@@ -29277,7 +29277,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29299,7 +29299,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29308,7 +29308,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29330,7 +29330,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29352,7 +29352,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29361,7 +29361,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29383,7 +29383,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29405,7 +29405,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29414,7 +29414,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29436,7 +29436,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29458,7 +29458,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29467,7 +29467,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29489,7 +29489,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29511,7 +29511,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29520,7 +29520,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29542,7 +29542,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29564,7 +29564,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29573,7 +29573,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29595,7 +29595,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29617,7 +29617,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29626,7 +29626,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29648,7 +29648,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29670,7 +29670,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29679,7 +29679,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29701,7 +29701,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29723,7 +29723,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29732,7 +29732,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29754,7 +29754,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29776,7 +29776,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29785,7 +29785,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29807,7 +29807,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29829,7 +29829,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29838,7 +29838,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29860,7 +29860,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29882,7 +29882,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29891,7 +29891,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29913,7 +29913,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29935,7 +29935,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29944,7 +29944,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -29966,7 +29966,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -29988,7 +29988,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -29997,7 +29997,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30019,7 +30019,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30041,7 +30041,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30050,7 +30050,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30072,7 +30072,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30094,7 +30094,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int64_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30103,7 +30103,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30125,7 +30125,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30147,7 +30147,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30156,7 +30156,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30178,7 +30178,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30200,7 +30200,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30209,7 +30209,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30231,7 +30231,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30253,7 +30253,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, float value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30262,7 +30262,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30284,7 +30284,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30306,7 +30306,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, double value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30315,7 +30315,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30335,7 +30335,7 @@ namespace NullableOctetString {
 EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
 {
     uint8_t zclString[10 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -30357,13 +30357,13 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::ByteSpan value)
     uint8_t zclString[10 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
 {
     uint8_t zclString[1] = { 0xFF };
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30383,7 +30383,7 @@ namespace NullableCharString {
 EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
 {
     uint8_t zclString[10 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits::kNullValue)
@@ -30405,13 +30405,13 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value)
     uint8_t zclString[10 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
 {
     uint8_t zclString[1] = { 0xFF };
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30428,12 +30428,12 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl
 
 namespace NullableEnumAttr {
 
-EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value)
 {
-    using Traits = NumericAttributeTraits;
+    using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30445,9 +30445,9 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable;
+    using Traits = NumericAttributeTraits;
     if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
     {
         return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
@@ -30455,20 +30455,20 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::S
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
 {
-    using Traits = NumericAttributeTraits;
+    using Traits = NumericAttributeTraits;
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable & value)
+                  const chip::app::DataModel::Nullable & value)
 {
     if (value.IsNull())
     {
@@ -30487,7 +30487,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30509,7 +30509,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30518,7 +30518,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30540,7 +30540,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30562,7 +30562,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30571,7 +30571,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30593,7 +30593,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & val
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30615,7 +30615,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30624,7 +30624,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30646,7 +30646,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & valu
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (Traits::IsNullValue(temp))
     {
@@ -30668,7 +30668,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, int16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus SetNull(chip::EndpointId endpoint)
@@ -30677,7 +30677,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
     Traits::StorageType value;
     Traits::SetNull(value);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
 }
 
 EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value)
@@ -30699,7 +30699,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -30718,7 +30718,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
 }
 
 } // namespace WriteOnlyInt8u
@@ -30730,7 +30730,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -30749,7 +30749,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
 }
 
 } // namespace FeatureMap
@@ -30761,7 +30761,7 @@ EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
     using Traits = NumericAttributeTraits;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::TestCluster::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -30780,13 +30780,13 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::TestCluster::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace TestCluster
+} // namespace UnitTesting
 
 namespace FaultInjection {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index c7543c2a5c9ff7..9f533ae0ec0007 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -4651,7 +4651,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value);
 } // namespace Attributes
 } // namespace ElectricalMeasurement
 
-namespace TestCluster {
+namespace UnitTesting {
 namespace Attributes {
 
 namespace Boolean {
@@ -4661,26 +4661,26 @@ EmberAfStatus Set(chip::EndpointId endpoint, bool value);
 
 namespace Bitmap8 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  chip::BitMask * value); // Bitmap8MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  chip::BitMask * value); // Bitmap8MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 } // namespace Bitmap8
 
 namespace Bitmap16 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  chip::BitMask * value); // Bitmap16MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  chip::BitMask * value); // Bitmap16MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 } // namespace Bitmap16
 
 namespace Bitmap32 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  chip::BitMask * value); // Bitmap32MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  chip::BitMask * value); // Bitmap32MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 } // namespace Bitmap32
 
 namespace Bitmap64 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  chip::BitMask * value); // Bitmap64MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  chip::BitMask * value); // Bitmap64MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 } // namespace Bitmap64
 
 namespace Int8u {
@@ -4819,8 +4819,8 @@ EmberAfStatus Set(chip::EndpointId endpoint, chip::VendorId value);
 } // namespace VendorId
 
 namespace EnumAttr {
-EmberAfStatus Get(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::SimpleEnum * value); // SimpleEnum
-EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::SimpleEnum value);
+EmberAfStatus Get(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum * value); // SimpleEnum
+EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value);
 } // namespace EnumAttr
 
 namespace RangeRestrictedInt8u {
@@ -4872,38 +4872,38 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl
 
 namespace NullableBitmap8 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value); // Bitmap8MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  DataModel::Nullable> & value); // Bitmap8MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 EmberAfStatus SetNull(chip::EndpointId endpoint);
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value);
+                  const chip::app::DataModel::Nullable> & value);
 } // namespace NullableBitmap8
 
 namespace NullableBitmap16 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value); // Bitmap16MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  DataModel::Nullable> & value); // Bitmap16MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 EmberAfStatus SetNull(chip::EndpointId endpoint);
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value);
+                  const chip::app::DataModel::Nullable> & value);
 } // namespace NullableBitmap16
 
 namespace NullableBitmap32 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value); // Bitmap32MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  DataModel::Nullable> & value); // Bitmap32MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 EmberAfStatus SetNull(chip::EndpointId endpoint);
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value);
+                  const chip::app::DataModel::Nullable> & value);
 } // namespace NullableBitmap32
 
 namespace NullableBitmap64 {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable> & value); // Bitmap64MaskMap
-EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
+                  DataModel::Nullable> & value); // Bitmap64MaskMap
+EmberAfStatus Set(chip::EndpointId endpoint, chip::BitMask value);
 EmberAfStatus SetNull(chip::EndpointId endpoint);
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable> & value);
+                  const chip::app::DataModel::Nullable> & value);
 } // namespace NullableBitmap64
 
 namespace NullableInt8u {
@@ -5062,11 +5062,11 @@ EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullabl
 
 namespace NullableEnumAttr {
 EmberAfStatus Get(chip::EndpointId endpoint,
-                  DataModel::Nullable & value); // SimpleEnum
-EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::TestCluster::SimpleEnum value);
+                  DataModel::Nullable & value); // SimpleEnum
+EmberAfStatus Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value);
 EmberAfStatus SetNull(chip::EndpointId endpoint);
 EmberAfStatus Set(chip::EndpointId endpoint,
-                  const chip::app::DataModel::Nullable & value);
+                  const chip::app::DataModel::Nullable & value);
 } // namespace NullableEnumAttr
 
 namespace NullableRangeRestrictedInt8u {
@@ -5113,7 +5113,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value);
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace TestCluster
+} // namespace UnitTesting
 
 namespace FaultInjection {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h
index 88e38534e84372..b10f7a4a86c432 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callback.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callback.h
@@ -597,13 +597,13 @@ void emberAfAccountLoginClusterInitCallback(chip::EndpointId endpoint);
  */
 void emberAfElectricalMeasurementClusterInitCallback(chip::EndpointId endpoint);
 
-/** @brief Test Cluster Cluster Init
+/** @brief Unit Testing Cluster Init
  *
  * Cluster Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfTestClusterClusterInitCallback(chip::EndpointId endpoint);
+void emberAfUnitTestingClusterInitCallback(chip::EndpointId endpoint);
 
 /** @brief Fault Injection Cluster Init
  *
@@ -7267,34 +7267,34 @@ void emberAfElectricalMeasurementClusterServerTickCallback(chip::EndpointId endp
 void emberAfElectricalMeasurementClusterClientTickCallback(chip::EndpointId endpoint);
 
 //
-// Test Cluster Cluster
+// Unit Testing Cluster
 //
 
-/** @brief Test Cluster Cluster Server Init
+/** @brief Unit Testing Cluster Server Init
  *
  * Server Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfTestClusterClusterServerInitCallback(chip::EndpointId endpoint);
+void emberAfUnitTestingClusterServerInitCallback(chip::EndpointId endpoint);
 
-/** @brief Test Cluster Cluster Client Init
+/** @brief Unit Testing Cluster Client Init
  *
  * Client Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfTestClusterClusterClientInitCallback(chip::EndpointId endpoint);
+void emberAfUnitTestingClusterClientInitCallback(chip::EndpointId endpoint);
 
-/** @brief Test Cluster Cluster Server Attribute Changed
+/** @brief Unit Testing Cluster Server Attribute Changed
  *
  * Server Attribute Changed
  *
  * @param attributePath Concrete attribute path that changed
  */
-void MatterTestClusterClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
+void MatterUnitTestingClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
 
-/** @brief Test Cluster Cluster Server Message Sent
+/** @brief Unit Testing Cluster Server Message Sent
  *
  * Server Message Sent
  *
@@ -7304,10 +7304,10 @@ void MatterTestClusterClusterServerAttributeChangedCallback(const chip::app::Con
  * @param message            The message that was sent
  * @param status             The status of the sent message
  */
-void emberAfTestClusterClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
+void emberAfUnitTestingClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);
 
-/** @brief Test Cluster Cluster Client Message Sent
+/** @brief Unit Testing Cluster Client Message Sent
  *
  * Client Message Sent
  *
@@ -7317,10 +7317,10 @@ void emberAfTestClusterClusterServerMessageSentCallback(const chip::MessageSendD
  * @param message            The message that was sent
  * @param status             The status of the sent message
  */
-void emberAfTestClusterClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
+void emberAfUnitTestingClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);
 
-/** @brief Test Cluster Cluster Server Pre Attribute Changed
+/** @brief Unit Testing Cluster Server Pre Attribute Changed
  *
  * Server Pre Attribute Changed
  *
@@ -7330,10 +7330,10 @@ void emberAfTestClusterClusterClientMessageSentCallback(const chip::MessageSendD
  * @param value         Attribute value
  */
 chip::Protocols::InteractionModel::Status
-MatterTestClusterClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+MatterUnitTestingClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
 
-/** @brief Test Cluster Cluster Client Pre Attribute Changed
+/** @brief Unit Testing Cluster Client Pre Attribute Changed
  *
  * Client Pre Attribute Changed
  *
@@ -7343,24 +7343,24 @@ MatterTestClusterClusterServerPreAttributeChangedCallback(const chip::app::Concr
  * @param value         Attribute value
  */
 chip::Protocols::InteractionModel::Status
-MatterTestClusterClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+MatterUnitTestingClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
 
-/** @brief Test Cluster Cluster Server Tick
+/** @brief Unit Testing Cluster Server Tick
  *
  * Server Tick
  *
  * @param endpoint  Endpoint that is being served
  */
-void emberAfTestClusterClusterServerTickCallback(chip::EndpointId endpoint);
+void emberAfUnitTestingClusterServerTickCallback(chip::EndpointId endpoint);
 
-/** @brief Test Cluster Cluster Client Tick
+/** @brief Unit Testing Cluster Client Tick
  *
  * Client Tick
  *
  * @param endpoint  Endpoint that is being served
  */
-void emberAfTestClusterClusterClientTickCallback(chip::EndpointId endpoint);
+void emberAfUnitTestingClusterClientTickCallback(chip::EndpointId endpoint);
 
 //
 // Fault Injection Cluster
@@ -8707,212 +8707,212 @@ bool emberAfElectricalMeasurementClusterGetMeasurementProfileCommandCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
     const chip::app::Clusters::ElectricalMeasurement::Commands::GetMeasurementProfileCommand::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster Test Command callback (from client)
+ * @brief Unit Testing Cluster Test Command callback (from client)
  */
-bool emberAfTestClusterClusterTestCallback(chip::app::CommandHandler * commandObj,
+bool emberAfUnitTestingClusterTestCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
-                                           const chip::app::Clusters::TestCluster::Commands::Test::DecodableType & commandData);
+                                           const chip::app::Clusters::UnitTesting::Commands::Test::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestSpecificResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestSpecificResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestSpecificResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestSpecificResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t returnValue);
 /**
- * @brief Test Cluster Cluster TestNotHandled Command callback (from client)
+ * @brief Unit Testing Cluster TestNotHandled Command callback (from client)
  */
-bool emberAfTestClusterClusterTestNotHandledCallback(
+bool emberAfUnitTestingClusterTestNotHandledCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestNotHandled::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestNotHandled::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestAddArgumentsResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestAddArgumentsResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestAddArgumentsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestAddArgumentsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t returnValue);
 /**
- * @brief Test Cluster Cluster TestSpecific Command callback (from client)
+ * @brief Unit Testing Cluster TestSpecific Command callback (from client)
  */
-bool emberAfTestClusterClusterTestSpecificCallback(
+bool emberAfUnitTestingClusterTestSpecificCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestSpecific::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestSpecific::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestSimpleArgumentResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestSimpleArgumentResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestSimpleArgumentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestSimpleArgumentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  bool returnValue);
 /**
- * @brief Test Cluster Cluster TestUnknownCommand Command callback (from client)
+ * @brief Unit Testing Cluster TestUnknownCommand Command callback (from client)
  */
-bool emberAfTestClusterClusterTestUnknownCommandCallback(
+bool emberAfUnitTestingClusterTestUnknownCommandCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestUnknownCommand::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestUnknownCommand::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestStructArrayArgumentResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestStructArrayArgumentResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestStructArrayArgumentResponseCallback(
+bool emberAfUnitTestingClusterTestStructArrayArgumentResponseCallback(
     chip::EndpointId endpoint, chip::app::CommandSender * commandObj, /* TYPE WARNING: array array defaults to */ uint8_t * arg1,
     /* TYPE WARNING: array array defaults to */ uint8_t * arg2, /* TYPE WARNING: array array defaults to */ uint8_t * arg3,
     /* TYPE WARNING: array array defaults to */ uint8_t * arg4, uint8_t arg5, bool arg6);
 /**
- * @brief Test Cluster Cluster TestAddArguments Command callback (from client)
+ * @brief Unit Testing Cluster TestAddArguments Command callback (from client)
  */
-bool emberAfTestClusterClusterTestAddArgumentsCallback(
+bool emberAfUnitTestingClusterTestAddArgumentsCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestAddArguments::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestAddArguments::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestListInt8UReverseResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestListInt8UReverseResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestListInt8UReverseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestListInt8UReverseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                    /* TYPE WARNING: array array defaults to */ uint8_t * arg1);
 /**
- * @brief Test Cluster Cluster TestSimpleArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestSimpleArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestSimpleArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestSimpleArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEnumsResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestEnumsResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestEnumsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestEnumsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         chip::VendorId arg1, uint8_t arg2);
 /**
- * @brief Test Cluster Cluster TestStructArrayArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestStructArrayArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestStructArrayArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestStructArrayArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestNullableOptionalResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestNullableOptionalResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestNullableOptionalResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestNullableOptionalResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                    bool wasPresent, bool wasNull, uint8_t value,
                                                                    uint8_t originalValue);
 /**
- * @brief Test Cluster Cluster TestStructArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestStructArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestStructArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestStructArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestComplexNullableOptionalResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestComplexNullableOptionalResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestComplexNullableOptionalResponseCallback(
+bool emberAfUnitTestingClusterTestComplexNullableOptionalResponseCallback(
     chip::EndpointId endpoint, chip::app::CommandSender * commandObj, bool NullableIntWasNull, uint16_t NullableIntValue,
     bool OptionalIntWasPresent, uint16_t OptionalIntValue, bool NullableOptionalIntWasPresent, bool NullableOptionalIntWasNull,
     uint16_t NullableOptionalIntValue, bool NullableStringWasNull, chip::CharSpan NullableStringValue,
     bool OptionalStringWasPresent, chip::CharSpan OptionalStringValue, bool NullableOptionalStringWasPresent,
     bool NullableOptionalStringWasNull, chip::CharSpan NullableOptionalStringValue, bool NullableStructWasNull,
-    chip::Optional NullableStructValue,
+    chip::Optional NullableStructValue,
     bool OptionalStructWasPresent,
-    chip::Optional OptionalStructValue,
+    chip::Optional OptionalStructValue,
     bool NullableOptionalStructWasPresent, bool NullableOptionalStructWasNull,
-    chip::Optional NullableOptionalStructValue,
+    chip::Optional NullableOptionalStructValue,
     bool NullableListWasNull, /* TYPE WARNING: array array defaults to */ uint8_t * NullableListValue, bool OptionalListWasPresent,
     /* TYPE WARNING: array array defaults to */ uint8_t * OptionalListValue, bool NullableOptionalListWasPresent,
     bool NullableOptionalListWasNull, /* TYPE WARNING: array array defaults to */ uint8_t * NullableOptionalListValue);
 /**
- * @brief Test Cluster Cluster TestNestedStructArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestNestedStructArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestNestedStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestNestedStructArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestNestedStructArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster BooleanResponse Command callback (from server)
+ * @brief Unit Testing Cluster BooleanResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterBooleanResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, bool value);
+bool emberAfUnitTestingClusterBooleanResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, bool value);
 /**
- * @brief Test Cluster Cluster TestListStructArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestListStructArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestListStructArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListStructArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestListStructArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster SimpleStructResponse Command callback (from server)
+ * @brief Unit Testing Cluster SimpleStructResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterSimpleStructResponseCallback(
+bool emberAfUnitTestingClusterSimpleStructResponseCallback(
     chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
-    chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType arg1);
+    chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType arg1);
 /**
- * @brief Test Cluster Cluster TestListInt8UArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestListInt8UArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListInt8UArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestListInt8UArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEmitTestEventResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestEmitTestEventResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestEmitTestEventResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
+bool emberAfUnitTestingClusterTestEmitTestEventResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint64_t value);
 /**
- * @brief Test Cluster Cluster TestNestedStructListArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestNestedStructListArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestNestedStructListArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestNestedStructListArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEmitTestFabricScopedEventResponse Command callback (from server)
+ * @brief Unit Testing Cluster TestEmitTestFabricScopedEventResponse Command callback (from server)
  */
-bool emberAfTestClusterClusterTestEmitTestFabricScopedEventResponseCallback(chip::EndpointId endpoint,
+bool emberAfUnitTestingClusterTestEmitTestFabricScopedEventResponseCallback(chip::EndpointId endpoint,
                                                                             chip::app::CommandSender * commandObj, uint64_t value);
 /**
- * @brief Test Cluster Cluster TestListNestedStructListArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestListNestedStructListArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestListNestedStructListArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestListNestedStructListArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestListInt8UReverseRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestListInt8UReverseRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestListInt8UReverseRequestCallback(
+bool emberAfUnitTestingClusterTestListInt8UReverseRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEnumsRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestEnumsRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestEnumsRequestCallback(
+bool emberAfUnitTestingClusterTestEnumsRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestEnumsRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestEnumsRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestNullableOptionalRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestNullableOptionalRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestNullableOptionalRequestCallback(
+bool emberAfUnitTestingClusterTestNullableOptionalRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestComplexNullableOptionalRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestComplexNullableOptionalRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestComplexNullableOptionalRequestCallback(
+bool emberAfUnitTestingClusterTestComplexNullableOptionalRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster SimpleStructEchoRequest Command callback (from client)
+ * @brief Unit Testing Cluster SimpleStructEchoRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterSimpleStructEchoRequestCallback(
+bool emberAfUnitTestingClusterSimpleStructEchoRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::SimpleStructEchoRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::SimpleStructEchoRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TimedInvokeRequest Command callback (from client)
+ * @brief Unit Testing Cluster TimedInvokeRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTimedInvokeRequestCallback(
+bool emberAfUnitTestingClusterTimedInvokeRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TimedInvokeRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TimedInvokeRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestSimpleOptionalArgumentRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestSimpleOptionalArgumentRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestSimpleOptionalArgumentRequestCallback(
+bool emberAfUnitTestingClusterTestSimpleOptionalArgumentRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestSimpleOptionalArgumentRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestSimpleOptionalArgumentRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEmitTestEventRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestEmitTestEventRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestEmitTestEventRequestCallback(
+bool emberAfUnitTestingClusterTestEmitTestEventRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::DecodableType & commandData);
 /**
- * @brief Test Cluster Cluster TestEmitTestFabricScopedEventRequest Command callback (from client)
+ * @brief Unit Testing Cluster TestEmitTestFabricScopedEventRequest Command callback (from client)
  */
-bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback(
+bool emberAfUnitTestingClusterTestEmitTestFabricScopedEventRequestCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventRequest::DecodableType & commandData);
+    const chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::DecodableType & commandData);
 /**
  * @brief Fault Injection Cluster FailAtFault Command callback (from client)
  */
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
index df67872fcb78ed..a56e91bd7e7ebe 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
@@ -2081,9 +2081,9 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ApplicationBasic::Appli
     }
 }
 
-static auto __attribute__((unused)) EnsureKnownEnumValue(TestCluster::SimpleEnum val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(UnitTesting::SimpleEnum val)
 {
-    using EnumType = TestCluster::SimpleEnum;
+    using EnumType = UnitTesting::SimpleEnum;
     switch (val)
     {
     case EnumType::kUnspecified:
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 52bf6e3ff7ac29..48eb4666e58f21 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -2266,7 +2266,7 @@ namespace AccountLogin {
 namespace ElectricalMeasurement {
 } // namespace ElectricalMeasurement
 
-namespace TestCluster {
+namespace UnitTesting {
 
 // Enum for SimpleEnum
 enum class SimpleEnum : uint8_t
@@ -2321,7 +2321,7 @@ enum class SimpleBitmap : uint8_t
     kValueB = 0x2,
     kValueC = 0x4,
 };
-} // namespace TestCluster
+} // namespace UnitTesting
 
 namespace FaultInjection {
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-id.h b/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
index 8a47a11f50b7e2..5833b9fadd0453 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-id.h
@@ -229,8 +229,8 @@ static constexpr chip::ClusterId ZCL_ACCOUNT_LOGIN_CLUSTER_ID = 0x050E;
 // Definitions for cluster: Electrical Measurement
 static constexpr chip::ClusterId ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID = 0x0B04;
 
-// Definitions for cluster: Test Cluster
-static constexpr chip::ClusterId ZCL_TEST_CLUSTER_ID = 0xFFF1FC05;
+// Definitions for cluster: Unit Testing
+static constexpr chip::ClusterId ZCL_UNIT_TESTING_CLUSTER_ID = 0xFFF1FC05;
 
 // Definitions for cluster: Fault Injection
 static constexpr chip::ClusterId ZCL_FAULT_INJECTION_CLUSTER_ID = 0xFFF1FC06;
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index c265db1a4443fe..37fdb4628962f7 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -18554,7 +18554,7 @@ namespace Events {
 } // namespace Events
 
 } // namespace ElectricalMeasurement
-namespace TestCluster {
+namespace UnitTesting {
 namespace Structs {
 namespace SimpleStruct {
 CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
@@ -20885,7 +20885,7 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
 } // namespace TestFabricScopedEvent.
 } // namespace Events
 
-} // namespace TestCluster
+} // namespace UnitTesting
 namespace FaultInjection {
 
 namespace Commands {
@@ -21067,10 +21067,10 @@ bool CommandNeedsTimedInvoke(ClusterId aCluster, CommandId aCommand)
             return false;
         }
     }
-    case Clusters::TestCluster::Id: {
+    case Clusters::UnitTesting::Id: {
         switch (aCommand)
         {
-        case Clusters::TestCluster::Commands::TimedInvokeRequest::Id:
+        case Clusters::UnitTesting::Commands::TimedInvokeRequest::Id:
             return true;
         default:
             return false;
@@ -21401,7 +21401,7 @@ bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand)
             return false;
         }
     }
-    case Clusters::TestCluster::Id: {
+    case Clusters::UnitTesting::Id: {
         switch (aCommand)
         {
         default:
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index 38aa0198ee1a22..29465aede3a846 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -25184,7 +25184,7 @@ struct TypeInfo
 };
 } // namespace Attributes
 } // namespace ElectricalMeasurement
-namespace TestCluster {
+namespace UnitTesting {
 namespace Structs {
 namespace SimpleStruct {
 enum class Fields
@@ -25649,7 +25649,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::Test::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
@@ -25662,7 +25662,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::Test::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -25678,7 +25678,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestSpecificResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t returnValue = static_cast(0);
 
@@ -25693,7 +25693,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestSpecificResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t returnValue = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -25709,7 +25709,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestNotHandled::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
@@ -25722,7 +25722,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestNotHandled::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -25738,7 +25738,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestAddArgumentsResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t returnValue = static_cast(0);
 
@@ -25753,7 +25753,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestAddArgumentsResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t returnValue = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -25769,11 +25769,11 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestSpecific::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -25782,7 +25782,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestSpecific::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -25798,7 +25798,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleArgumentResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool returnValue = static_cast(0);
 
@@ -25813,7 +25813,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleArgumentResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool returnValue = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -25829,7 +25829,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestUnknownCommand::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
@@ -25842,7 +25842,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestUnknownCommand::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -25863,7 +25863,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestStructArrayArgumentResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
     DataModel::List arg2;
@@ -25883,7 +25883,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestStructArrayArgumentResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     DataModel::DecodableList arg2;
@@ -25906,14 +25906,14 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestAddArguments::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1 = static_cast(0);
     uint8_t arg2 = static_cast(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -25922,7 +25922,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestAddArguments::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1 = static_cast(0);
     uint8_t arg2 = static_cast(0);
@@ -25940,7 +25940,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UReverseResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
 
@@ -25955,7 +25955,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UReverseResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -25972,13 +25972,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool arg1 = static_cast(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestSimpleArgumentResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -25987,7 +25987,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool arg1 = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26005,7 +26005,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEnumsResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     chip::VendorId arg1 = static_cast(0);
     SimpleEnum arg2     = static_cast(0);
@@ -26021,7 +26021,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEnumsResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     chip::VendorId arg1 = static_cast(0);
     SimpleEnum arg2     = static_cast(0);
@@ -26044,7 +26044,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestStructArrayArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
     DataModel::List arg2;
@@ -26055,7 +26055,7 @@ struct Type
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26064,7 +26064,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestStructArrayArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     DataModel::DecodableList arg2;
@@ -26089,7 +26089,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestNullableOptionalResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool wasPresent = static_cast(0);
     Optional wasNull;
@@ -26107,7 +26107,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestNullableOptionalResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool wasPresent = static_cast(0);
     Optional wasNull;
@@ -26127,13 +26127,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::Type arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26142,7 +26142,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::DecodableType arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26186,7 +26186,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestComplexNullableOptionalResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool nullableIntWasNull = static_cast(0);
     Optional nullableIntValue;
@@ -26228,7 +26228,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestComplexNullableOptionalResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool nullableIntWasNull = static_cast(0);
     Optional nullableIntValue;
@@ -26272,13 +26272,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestNestedStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::NestedStruct::Type arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26287,7 +26287,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestNestedStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::NestedStruct::DecodableType arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26304,7 +26304,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::BooleanResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool value = static_cast(0);
 
@@ -26319,7 +26319,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::BooleanResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     bool value = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26336,13 +26336,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestListStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26351,7 +26351,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestListStructArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26368,7 +26368,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::SimpleStructResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::Type arg1;
 
@@ -26383,7 +26383,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::SimpleStructResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::DecodableType arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26400,13 +26400,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26415,7 +26415,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26432,7 +26432,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestEventResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint64_t value = static_cast(0);
 
@@ -26447,7 +26447,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestEventResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint64_t value = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26464,13 +26464,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestNestedStructListArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::NestedStructList::Type arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26479,7 +26479,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestNestedStructListArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::NestedStructList::DecodableType arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26496,7 +26496,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestFabricScopedEventResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint64_t value = static_cast(0);
 
@@ -26511,7 +26511,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestFabricScopedEventResponse::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint64_t value = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26528,13 +26528,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestListNestedStructListArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::BooleanResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::BooleanResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26543,7 +26543,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestListNestedStructListArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26560,13 +26560,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UReverseRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::List arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26575,7 +26575,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestListInt8UReverseRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::DecodableList arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26593,14 +26593,14 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEnumsRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     chip::VendorId arg1 = static_cast(0);
     SimpleEnum arg2     = static_cast(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26609,7 +26609,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEnumsRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     chip::VendorId arg1 = static_cast(0);
     SimpleEnum arg2     = static_cast(0);
@@ -26627,13 +26627,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestNullableOptionalRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Optional> arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26642,7 +26642,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestNullableOptionalRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Optional> arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26670,7 +26670,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestComplexNullableOptionalRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::Nullable nullableInt;
     Optional optionalInt;
@@ -26687,7 +26687,7 @@ struct Type
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26696,7 +26696,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestComplexNullableOptionalRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     DataModel::Nullable nullableInt;
     Optional optionalInt;
@@ -26724,13 +26724,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::SimpleStructEchoRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::Type arg1;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26739,7 +26739,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::SimpleStructEchoRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Structs::SimpleStruct::DecodableType arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26755,7 +26755,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TimedInvokeRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
@@ -26768,7 +26768,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TimedInvokeRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -26784,7 +26784,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleOptionalArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Optional arg1;
 
@@ -26799,7 +26799,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestSimpleOptionalArgumentRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     Optional arg1;
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26818,7 +26818,7 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestEventRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1    = static_cast(0);
     SimpleEnum arg2 = static_cast(0);
@@ -26826,7 +26826,7 @@ struct Type
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26835,7 +26835,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestEventRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1    = static_cast(0);
     SimpleEnum arg2 = static_cast(0);
@@ -26854,13 +26854,13 @@ struct Type
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestFabricScopedEventRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1 = static_cast(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
-    using ResponseType = Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType;
+    using ResponseType = Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType;
 
     static constexpr bool MustUseTimedInvoke() { return false; }
 };
@@ -26869,7 +26869,7 @@ struct DecodableType
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::TestEmitTestFabricScopedEventRequest::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1 = static_cast(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -26886,7 +26886,7 @@ struct TypeInfo
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Boolean::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26894,11 +26894,11 @@ struct TypeInfo
 namespace Bitmap8 {
 struct TypeInfo
 {
-    using Type             = chip::BitMask;
-    using DecodableType    = chip::BitMask;
-    using DecodableArgType = chip::BitMask;
+    using Type             = chip::BitMask;
+    using DecodableType    = chip::BitMask;
+    using DecodableArgType = chip::BitMask;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Bitmap8::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26906,11 +26906,11 @@ struct TypeInfo
 namespace Bitmap16 {
 struct TypeInfo
 {
-    using Type             = chip::BitMask;
-    using DecodableType    = chip::BitMask;
-    using DecodableArgType = chip::BitMask;
+    using Type             = chip::BitMask;
+    using DecodableType    = chip::BitMask;
+    using DecodableArgType = chip::BitMask;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Bitmap16::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26918,11 +26918,11 @@ struct TypeInfo
 namespace Bitmap32 {
 struct TypeInfo
 {
-    using Type             = chip::BitMask;
-    using DecodableType    = chip::BitMask;
-    using DecodableArgType = chip::BitMask;
+    using Type             = chip::BitMask;
+    using DecodableType    = chip::BitMask;
+    using DecodableArgType = chip::BitMask;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Bitmap32::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26930,11 +26930,11 @@ struct TypeInfo
 namespace Bitmap64 {
 struct TypeInfo
 {
-    using Type             = chip::BitMask;
-    using DecodableType    = chip::BitMask;
-    using DecodableArgType = chip::BitMask;
+    using Type             = chip::BitMask;
+    using DecodableType    = chip::BitMask;
+    using DecodableArgType = chip::BitMask;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Bitmap64::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26946,7 +26946,7 @@ struct TypeInfo
     using DecodableType    = uint8_t;
     using DecodableArgType = uint8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26958,7 +26958,7 @@ struct TypeInfo
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int16u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26970,7 +26970,7 @@ struct TypeInfo
     using DecodableType    = uint32_t;
     using DecodableArgType = uint32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int24u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26982,7 +26982,7 @@ struct TypeInfo
     using DecodableType    = uint32_t;
     using DecodableArgType = uint32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int32u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -26994,7 +26994,7 @@ struct TypeInfo
     using DecodableType    = uint64_t;
     using DecodableArgType = uint64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int40u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27006,7 +27006,7 @@ struct TypeInfo
     using DecodableType    = uint64_t;
     using DecodableArgType = uint64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int48u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27018,7 +27018,7 @@ struct TypeInfo
     using DecodableType    = uint64_t;
     using DecodableArgType = uint64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int56u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27030,7 +27030,7 @@ struct TypeInfo
     using DecodableType    = uint64_t;
     using DecodableArgType = uint64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int64u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27042,7 +27042,7 @@ struct TypeInfo
     using DecodableType    = int8_t;
     using DecodableArgType = int8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int8s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27054,7 +27054,7 @@ struct TypeInfo
     using DecodableType    = int16_t;
     using DecodableArgType = int16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int16s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27066,7 +27066,7 @@ struct TypeInfo
     using DecodableType    = int32_t;
     using DecodableArgType = int32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int24s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27078,7 +27078,7 @@ struct TypeInfo
     using DecodableType    = int32_t;
     using DecodableArgType = int32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int32s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27090,7 +27090,7 @@ struct TypeInfo
     using DecodableType    = int64_t;
     using DecodableArgType = int64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int40s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27102,7 +27102,7 @@ struct TypeInfo
     using DecodableType    = int64_t;
     using DecodableArgType = int64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int48s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27114,7 +27114,7 @@ struct TypeInfo
     using DecodableType    = int64_t;
     using DecodableArgType = int64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int56s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27126,7 +27126,7 @@ struct TypeInfo
     using DecodableType    = int64_t;
     using DecodableArgType = int64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Int64s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27138,7 +27138,7 @@ struct TypeInfo
     using DecodableType    = uint8_t;
     using DecodableArgType = uint8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Enum8::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27150,7 +27150,7 @@ struct TypeInfo
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Enum16::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27162,7 +27162,7 @@ struct TypeInfo
     using DecodableType    = float;
     using DecodableArgType = float;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::FloatSingle::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27174,7 +27174,7 @@ struct TypeInfo
     using DecodableType    = double;
     using DecodableArgType = double;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::FloatDouble::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27186,7 +27186,7 @@ struct TypeInfo
     using DecodableType    = chip::ByteSpan;
     using DecodableArgType = chip::ByteSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::OctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 10; }
@@ -27199,7 +27199,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::DecodableList;
     using DecodableArgType = const chip::app::DataModel::DecodableList &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListInt8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27211,7 +27211,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::DecodableList;
     using DecodableArgType = const chip::app::DataModel::DecodableList &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListOctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27219,13 +27219,13 @@ struct TypeInfo
 namespace ListStructOctetString {
 struct TypeInfo
 {
-    using Type = chip::app::DataModel::List;
+    using Type = chip::app::DataModel::List;
     using DecodableType =
-        chip::app::DataModel::DecodableList;
+        chip::app::DataModel::DecodableList;
     using DecodableArgType =
-        const chip::app::DataModel::DecodableList &;
+        const chip::app::DataModel::DecodableList &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListStructOctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27237,7 +27237,7 @@ struct TypeInfo
     using DecodableType    = chip::ByteSpan;
     using DecodableArgType = chip::ByteSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::LongOctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 1000; }
@@ -27250,7 +27250,7 @@ struct TypeInfo
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::CharString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 10; }
@@ -27263,7 +27263,7 @@ struct TypeInfo
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::LongCharString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 1000; }
@@ -27276,7 +27276,7 @@ struct TypeInfo
     using DecodableType    = uint64_t;
     using DecodableArgType = uint64_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::EpochUs::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27288,7 +27288,7 @@ struct TypeInfo
     using DecodableType    = uint32_t;
     using DecodableArgType = uint32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::EpochS::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27300,7 +27300,7 @@ struct TypeInfo
     using DecodableType    = chip::VendorId;
     using DecodableArgType = chip::VendorId;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::VendorId::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27308,13 +27308,13 @@ struct TypeInfo
 namespace ListNullablesAndOptionalsStruct {
 struct TypeInfo
 {
-    using Type = chip::app::DataModel::List;
+    using Type = chip::app::DataModel::List;
     using DecodableType =
-        chip::app::DataModel::DecodableList;
+        chip::app::DataModel::DecodableList;
     using DecodableArgType = const chip::app::DataModel::DecodableList<
-        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> &;
+        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListNullablesAndOptionalsStruct::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27322,11 +27322,11 @@ struct TypeInfo
 namespace EnumAttr {
 struct TypeInfo
 {
-    using Type             = chip::app::Clusters::TestCluster::SimpleEnum;
-    using DecodableType    = chip::app::Clusters::TestCluster::SimpleEnum;
-    using DecodableArgType = chip::app::Clusters::TestCluster::SimpleEnum;
+    using Type             = chip::app::Clusters::UnitTesting::SimpleEnum;
+    using DecodableType    = chip::app::Clusters::UnitTesting::SimpleEnum;
+    using DecodableArgType = chip::app::Clusters::UnitTesting::SimpleEnum;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::EnumAttr::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27334,11 +27334,11 @@ struct TypeInfo
 namespace StructAttr {
 struct TypeInfo
 {
-    using Type             = chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type;
-    using DecodableType    = chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType;
-    using DecodableArgType = const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType &;
+    using Type             = chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type;
+    using DecodableType    = chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType;
+    using DecodableArgType = const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::StructAttr::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27350,7 +27350,7 @@ struct TypeInfo
     using DecodableType    = uint8_t;
     using DecodableArgType = uint8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::RangeRestrictedInt8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27362,7 +27362,7 @@ struct TypeInfo
     using DecodableType    = int8_t;
     using DecodableArgType = int8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::RangeRestrictedInt8s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27374,7 +27374,7 @@ struct TypeInfo
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::RangeRestrictedInt16u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27386,7 +27386,7 @@ struct TypeInfo
     using DecodableType    = int16_t;
     using DecodableArgType = int16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::RangeRestrictedInt16s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27398,7 +27398,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::DecodableList;
     using DecodableArgType = const chip::app::DataModel::DecodableList &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListLongOctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27406,13 +27406,13 @@ struct TypeInfo
 namespace ListFabricScoped {
 struct TypeInfo
 {
-    using Type = chip::app::DataModel::List;
+    using Type = chip::app::DataModel::List;
     using DecodableType =
-        chip::app::DataModel::DecodableList;
+        chip::app::DataModel::DecodableList;
     using DecodableArgType =
-        const chip::app::DataModel::DecodableList &;
+        const chip::app::DataModel::DecodableList &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ListFabricScoped::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27424,7 +27424,7 @@ struct TypeInfo
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::TimedWriteBoolean::Id; }
     static constexpr bool MustUseTimedWrite() { return true; }
 };
@@ -27436,7 +27436,7 @@ struct TypeInfo
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::GeneralErrorBoolean::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27448,7 +27448,7 @@ struct TypeInfo
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ClusterErrorBoolean::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27460,7 +27460,7 @@ struct TypeInfo
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Unsupported::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27472,7 +27472,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableBoolean::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27480,12 +27480,12 @@ struct TypeInfo
 namespace NullableBitmap8 {
 struct TypeInfo
 {
-    using Type          = chip::app::DataModel::Nullable>;
-    using DecodableType = chip::app::DataModel::Nullable>;
+    using Type          = chip::app::DataModel::Nullable>;
+    using DecodableType = chip::app::DataModel::Nullable>;
     using DecodableArgType =
-        const chip::app::DataModel::Nullable> &;
+        const chip::app::DataModel::Nullable> &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableBitmap8::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27493,12 +27493,12 @@ struct TypeInfo
 namespace NullableBitmap16 {
 struct TypeInfo
 {
-    using Type          = chip::app::DataModel::Nullable>;
-    using DecodableType = chip::app::DataModel::Nullable>;
+    using Type          = chip::app::DataModel::Nullable>;
+    using DecodableType = chip::app::DataModel::Nullable>;
     using DecodableArgType =
-        const chip::app::DataModel::Nullable> &;
+        const chip::app::DataModel::Nullable> &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableBitmap16::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27506,12 +27506,12 @@ struct TypeInfo
 namespace NullableBitmap32 {
 struct TypeInfo
 {
-    using Type          = chip::app::DataModel::Nullable>;
-    using DecodableType = chip::app::DataModel::Nullable>;
+    using Type          = chip::app::DataModel::Nullable>;
+    using DecodableType = chip::app::DataModel::Nullable>;
     using DecodableArgType =
-        const chip::app::DataModel::Nullable> &;
+        const chip::app::DataModel::Nullable> &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableBitmap32::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27519,12 +27519,12 @@ struct TypeInfo
 namespace NullableBitmap64 {
 struct TypeInfo
 {
-    using Type          = chip::app::DataModel::Nullable>;
-    using DecodableType = chip::app::DataModel::Nullable>;
+    using Type          = chip::app::DataModel::Nullable>;
+    using DecodableType = chip::app::DataModel::Nullable>;
     using DecodableArgType =
-        const chip::app::DataModel::Nullable> &;
+        const chip::app::DataModel::Nullable> &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableBitmap64::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27536,7 +27536,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27548,7 +27548,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt16u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27560,7 +27560,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt24u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27572,7 +27572,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt32u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27584,7 +27584,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt40u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27596,7 +27596,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt48u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27608,7 +27608,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt56u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27620,7 +27620,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt64u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27632,7 +27632,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt8s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27644,7 +27644,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt16s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27656,7 +27656,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt24s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27668,7 +27668,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt32s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27680,7 +27680,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt40s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27692,7 +27692,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt48s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27704,7 +27704,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt56s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27716,7 +27716,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableInt64s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27728,7 +27728,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableEnum8::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27740,7 +27740,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableEnum16::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27752,7 +27752,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableFloatSingle::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27764,7 +27764,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableFloatDouble::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27776,7 +27776,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableOctetString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 10; }
@@ -27789,7 +27789,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableCharString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 10; }
@@ -27798,11 +27798,11 @@ struct TypeInfo
 namespace NullableEnumAttr {
 struct TypeInfo
 {
-    using Type             = chip::app::DataModel::Nullable;
-    using DecodableType    = chip::app::DataModel::Nullable;
-    using DecodableArgType = const chip::app::DataModel::Nullable &;
+    using Type             = chip::app::DataModel::Nullable;
+    using DecodableType    = chip::app::DataModel::Nullable;
+    using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableEnumAttr::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27810,12 +27810,12 @@ struct TypeInfo
 namespace NullableStruct {
 struct TypeInfo
 {
-    using Type          = chip::app::DataModel::Nullable;
-    using DecodableType = chip::app::DataModel::Nullable;
+    using Type          = chip::app::DataModel::Nullable;
+    using DecodableType = chip::app::DataModel::Nullable;
     using DecodableArgType =
-        const chip::app::DataModel::Nullable &;
+        const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableStruct::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27827,7 +27827,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableRangeRestrictedInt8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27839,7 +27839,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableRangeRestrictedInt8s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27851,7 +27851,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableRangeRestrictedInt16u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27863,7 +27863,7 @@ struct TypeInfo
     using DecodableType    = chip::app::DataModel::Nullable;
     using DecodableArgType = const chip::app::DataModel::Nullable &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NullableRangeRestrictedInt16s::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27875,7 +27875,7 @@ struct TypeInfo
     using DecodableType    = uint8_t;
     using DecodableArgType = uint8_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::WriteOnlyInt8u::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -27883,31 +27883,31 @@ struct TypeInfo
 namespace GeneratedCommandList {
 struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 };
 } // namespace GeneratedCommandList
 namespace AcceptedCommandList {
 struct TypeInfo : public Clusters::Globals::Attributes::AcceptedCommandList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 };
 } // namespace AcceptedCommandList
 namespace AttributeList {
 struct TypeInfo : public Clusters::Globals::Attributes::AttributeList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 };
 } // namespace AttributeList
 namespace FeatureMap {
 struct TypeInfo : public Clusters::Globals::Attributes::FeatureMap::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 };
 } // namespace FeatureMap
 namespace ClusterRevision {
 struct TypeInfo : public Clusters::Globals::Attributes::ClusterRevision::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 };
 } // namespace ClusterRevision
 
@@ -27915,19 +27915,19 @@ struct TypeInfo
 {
     struct DecodableType
     {
-        static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+        static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
         CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path);
 
         Attributes::Boolean::TypeInfo::DecodableType boolean = static_cast(0);
         Attributes::Bitmap8::TypeInfo::DecodableType bitmap8 =
-            static_cast>(0);
+            static_cast>(0);
         Attributes::Bitmap16::TypeInfo::DecodableType bitmap16 =
-            static_cast>(0);
+            static_cast>(0);
         Attributes::Bitmap32::TypeInfo::DecodableType bitmap32 =
-            static_cast>(0);
+            static_cast>(0);
         Attributes::Bitmap64::TypeInfo::DecodableType bitmap64 =
-            static_cast>(0);
+            static_cast>(0);
         Attributes::Int8u::TypeInfo::DecodableType int8u             = static_cast(0);
         Attributes::Int16u::TypeInfo::DecodableType int16u           = static_cast(0);
         Attributes::Int24u::TypeInfo::DecodableType int24u           = static_cast(0);
@@ -27959,7 +27959,7 @@ struct TypeInfo
         Attributes::EpochS::TypeInfo::DecodableType epochS     = static_cast(0);
         Attributes::VendorId::TypeInfo::DecodableType vendorId = static_cast(0);
         Attributes::ListNullablesAndOptionalsStruct::TypeInfo::DecodableType listNullablesAndOptionalsStruct;
-        Attributes::EnumAttr::TypeInfo::DecodableType enumAttr = static_cast(0);
+        Attributes::EnumAttr::TypeInfo::DecodableType enumAttr = static_cast(0);
         Attributes::StructAttr::TypeInfo::DecodableType structAttr;
         Attributes::RangeRestrictedInt8u::TypeInfo::DecodableType rangeRestrictedInt8u   = static_cast(0);
         Attributes::RangeRestrictedInt8s::TypeInfo::DecodableType rangeRestrictedInt8s   = static_cast(0);
@@ -28032,7 +28032,7 @@ struct Type
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::TestEvent::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr bool kIsFabricScoped = false;
 
     uint8_t arg1    = static_cast(0);
@@ -28050,7 +28050,7 @@ struct DecodableType
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::TestEvent::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     uint8_t arg1    = static_cast(0);
     SimpleEnum arg2 = static_cast(0);
@@ -28075,7 +28075,7 @@ struct Type
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::TestFabricScopedEvent::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
     static constexpr bool kIsFabricScoped = true;
 
     chip::FabricIndex fabricIndex = static_cast(0);
@@ -28090,7 +28090,7 @@ struct DecodableType
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::TestFabricScopedEvent::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::TestCluster::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::UnitTesting::Id; }
 
     chip::FabricIndex fabricIndex = static_cast(0);
 
@@ -28098,7 +28098,7 @@ struct DecodableType
 };
 } // namespace TestFabricScopedEvent
 } // namespace Events
-} // namespace TestCluster
+} // namespace UnitTesting
 namespace FaultInjection {
 
 namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/command-id.h b/zzz_generated/app-common/app-common/zap-generated/command-id.h
index 9dea02553be7cb..45c8decb6fdc72 100644
--- a/zzz_generated/app-common/app-common/zap-generated/command-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/command-id.h
@@ -317,7 +317,7 @@
 #define ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID (0x01)
 #define ZCL_GET_MEASUREMENT_PROFILE_COMMAND_COMMAND_ID (0x01)
 
-// Commands for cluster: Test Cluster
+// Commands for cluster: Unit Testing
 #define ZCL_TEST_COMMAND_ID (0x00)
 #define ZCL_TEST_SPECIFIC_RESPONSE_COMMAND_ID (0x00)
 #define ZCL_TEST_NOT_HANDLED_COMMAND_ID (0x01)
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
index d61a60453231ba..c7dce39a648afe 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
@@ -4605,7 +4605,7 @@ static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id;
 } // namespace Attributes
 } // namespace ElectricalMeasurement
 
-namespace TestCluster {
+namespace UnitTesting {
 namespace Attributes {
 
 namespace Boolean {
@@ -4957,7 +4957,7 @@ static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id;
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace TestCluster
+} // namespace UnitTesting
 
 namespace FaultInjection {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
index 1ac3f6831081e6..a5d2738c08311f 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
@@ -232,9 +232,9 @@ static constexpr ClusterId Id = 0x0000050E;
 namespace ElectricalMeasurement {
 static constexpr ClusterId Id = 0x00000B04;
 } // namespace ElectricalMeasurement
-namespace TestCluster {
+namespace UnitTesting {
 static constexpr ClusterId Id = 0xFFF1FC05;
-} // namespace TestCluster
+} // namespace UnitTesting
 namespace FaultInjection {
 static constexpr ClusterId Id = 0xFFF1FC06;
 } // namespace FaultInjection
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
index 41c5ed62ddb1f0..d7430e8e41f21b 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
@@ -1091,7 +1091,7 @@ static constexpr CommandId Id = 0x00000001;
 } // namespace Commands
 } // namespace ElectricalMeasurement
 
-namespace TestCluster {
+namespace UnitTesting {
 namespace Commands {
 
 namespace Test {
@@ -1231,7 +1231,7 @@ static constexpr CommandId Id = 0x00000015;
 } // namespace TestEmitTestFabricScopedEventRequest
 
 } // namespace Commands
-} // namespace TestCluster
+} // namespace UnitTesting
 
 namespace FaultInjection {
 namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Events.h b/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
index 0304e45f255d01..f466ccbca83c1f 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
@@ -323,7 +323,7 @@ static constexpr EventId Id = 0x00000010;
 } // namespace Events
 } // namespace PumpConfigurationAndControl
 
-namespace TestCluster {
+namespace UnitTesting {
 namespace Events {
 
 namespace TestEvent {
@@ -335,7 +335,7 @@ static constexpr EventId Id = 0x00000002;
 } // namespace TestFabricScopedEvent
 
 } // namespace Events
-} // namespace TestCluster
+} // namespace UnitTesting
 
 } // namespace Clusters
 } // namespace app
diff --git a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
index b9d539a8aada9d..4ab05c73ae61de 100644
--- a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
+++ b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
@@ -453,10 +453,10 @@
 #define CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER
 #endif
 
-#if defined(ZCL_USING_TEST_CLUSTER_SERVER) || defined(ZCL_USING_TEST_CLUSTER_CLIENT)
-#define CHIP_PRINTCLUSTER_TEST_CLUSTER { ZCL_TEST_CLUSTER_ID, "Test Cluster" },
+#if defined(ZCL_USING_UNIT_TESTING_CLUSTER_SERVER) || defined(ZCL_USING_UNIT_TESTING_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_UNIT_TESTING_CLUSTER { ZCL_UNIT_TESTING_CLUSTER_ID, "Unit Testing" },
 #else
-#define CHIP_PRINTCLUSTER_TEST_CLUSTER
+#define CHIP_PRINTCLUSTER_UNIT_TESTING_CLUSTER
 #endif
 
 #if defined(ZCL_USING_FAULT_INJECTION_CLUSTER_SERVER) || defined(ZCL_USING_FAULT_INJECTION_CLUSTER_CLIENT)
@@ -535,7 +535,7 @@
     CHIP_PRINTCLUSTER_APPLICATION_BASIC_CLUSTER                                                                                    \
     CHIP_PRINTCLUSTER_ACCOUNT_LOGIN_CLUSTER                                                                                        \
     CHIP_PRINTCLUSTER_ELECTRICAL_MEASUREMENT_CLUSTER                                                                               \
-    CHIP_PRINTCLUSTER_TEST_CLUSTER                                                                                                 \
+    CHIP_PRINTCLUSTER_UNIT_TESTING_CLUSTER                                                                                         \
     CHIP_PRINTCLUSTER_FAULT_INJECTION_CLUSTER
 
 #define MAX_CLUSTER_NAME_LENGTH 39
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 78b66ba4b6d5eb..b437a3697fca4d 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -102,7 +102,7 @@
 | ApplicationBasic                                                    | 0x050D |
 | AccountLogin                                                        | 0x050E |
 | ElectricalMeasurement                                               | 0x0B04 |
-| TestCluster                                                         | 0xFFF1FC05|
+| UnitTesting                                                         | 0xFFF1FC05|
 | FaultInjection                                                      | 0xFFF1FC06|
 \*----------------------------------------------------------------------------*/
 
@@ -7297,7 +7297,7 @@ class ElectricalMeasurementGetMeasurementProfileCommand : public ClusterCommand
 };
 
 /*----------------------------------------------------------------------------*\
-| Cluster TestCluster                                                 | 0xFFF1FC05|
+| Cluster UnitTesting                                                 | 0xFFF1FC05|
 |------------------------------------------------------------------------------|
 | Commands:                                                           |        |
 | * Test                                                              |   0x00 |
@@ -7420,10 +7420,10 @@ class ElectricalMeasurementGetMeasurementProfileCommand : public ClusterCommand
 /*
  * Command Test
  */
-class TestClusterTest : public ClusterCommand
+class UnitTestingTest : public ClusterCommand
 {
 public:
-    TestClusterTest(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test", credsIssuerConfig)
+    UnitTestingTest(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
     }
@@ -7443,16 +7443,16 @@ class TestClusterTest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::Test::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::Test::Type mRequest;
 };
 
 /*
  * Command TestNotHandled
  */
-class TestClusterTestNotHandled : public ClusterCommand
+class UnitTestingTestNotHandled : public ClusterCommand
 {
 public:
-    TestClusterTestNotHandled(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test-not-handled", credsIssuerConfig)
+    UnitTestingTestNotHandled(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test-not-handled", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
     }
@@ -7472,16 +7472,16 @@ class TestClusterTestNotHandled : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNotHandled::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestNotHandled::Type mRequest;
 };
 
 /*
  * Command TestSpecific
  */
-class TestClusterTestSpecific : public ClusterCommand
+class UnitTestingTestSpecific : public ClusterCommand
 {
 public:
-    TestClusterTestSpecific(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test-specific", credsIssuerConfig)
+    UnitTestingTestSpecific(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("test-specific", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
     }
@@ -7501,16 +7501,16 @@ class TestClusterTestSpecific : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestSpecific::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestSpecific::Type mRequest;
 };
 
 /*
  * Command TestUnknownCommand
  */
-class TestClusterTestUnknownCommand : public ClusterCommand
+class UnitTestingTestUnknownCommand : public ClusterCommand
 {
 public:
-    TestClusterTestUnknownCommand(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestUnknownCommand(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-unknown-command", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
@@ -7531,16 +7531,16 @@ class TestClusterTestUnknownCommand : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestUnknownCommand::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestUnknownCommand::Type mRequest;
 };
 
 /*
  * Command TestAddArguments
  */
-class TestClusterTestAddArguments : public ClusterCommand
+class UnitTestingTestAddArguments : public ClusterCommand
 {
 public:
-    TestClusterTestAddArguments(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestAddArguments(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-add-arguments", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -7563,16 +7563,16 @@ class TestClusterTestAddArguments : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type mRequest;
 };
 
 /*
  * Command TestSimpleArgumentRequest
  */
-class TestClusterTestSimpleArgumentRequest : public ClusterCommand
+class UnitTestingTestSimpleArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestSimpleArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestSimpleArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-simple-argument-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, 1, &mRequest.arg1);
@@ -7594,16 +7594,16 @@ class TestClusterTestSimpleArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type mRequest;
 };
 
 /*
  * Command TestStructArrayArgumentRequest
  */
-class TestClusterTestStructArrayArgumentRequest : public ClusterCommand
+class UnitTestingTestStructArrayArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestStructArrayArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestStructArrayArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-struct-array-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1),
         mComplex_Arg2(&mRequest.arg2), mComplex_Arg3(&mRequest.arg3), mComplex_Arg4(&mRequest.arg4)
     {
@@ -7631,22 +7631,22 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
-    TypedComplexArgument>
+    TypedComplexArgument>
         mComplex_Arg2;
-    TypedComplexArgument> mComplex_Arg3;
+    TypedComplexArgument> mComplex_Arg3;
     TypedComplexArgument> mComplex_Arg4;
 };
 
 /*
  * Command TestStructArgumentRequest
  */
-class TestClusterTestStructArgumentRequest : public ClusterCommand
+class UnitTestingTestStructArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-struct-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7668,17 +7668,17 @@ class TestClusterTestStructArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestStructArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestNestedStructArgumentRequest
  */
-class TestClusterTestNestedStructArgumentRequest : public ClusterCommand
+class UnitTestingTestNestedStructArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestNestedStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestNestedStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-nested-struct-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7700,17 +7700,17 @@ class TestClusterTestNestedStructArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestNestedStructArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestListStructArgumentRequest
  */
-class TestClusterTestListStructArgumentRequest : public ClusterCommand
+class UnitTestingTestListStructArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestListStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestListStructArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-list-struct-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7732,18 +7732,18 @@ class TestClusterTestListStructArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestListStructArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
 };
 
 /*
  * Command TestListInt8UArgumentRequest
  */
-class TestClusterTestListInt8UArgumentRequest : public ClusterCommand
+class UnitTestingTestListInt8UArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestListInt8UArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestListInt8UArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-list-int8uargument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7765,17 +7765,17 @@ class TestClusterTestListInt8UArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestListInt8UArgumentRequest::Type mRequest;
     TypedComplexArgument> mComplex_Arg1;
 };
 
 /*
  * Command TestNestedStructListArgumentRequest
  */
-class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand
+class UnitTestingTestNestedStructListArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestNestedStructListArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestNestedStructListArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-nested-struct-list-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7797,17 +7797,17 @@ class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestNestedStructListArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestListNestedStructListArgumentRequest
  */
-class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
+class UnitTestingTestListNestedStructListArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestListNestedStructListArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestListNestedStructListArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-list-nested-struct-list-argument-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7829,18 +7829,18 @@ class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
 };
 
 /*
  * Command TestListInt8UReverseRequest
  */
-class TestClusterTestListInt8UReverseRequest : public ClusterCommand
+class UnitTestingTestListInt8UReverseRequest : public ClusterCommand
 {
 public:
-    TestClusterTestListInt8UReverseRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestListInt8UReverseRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-list-int8ureverse-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -7862,17 +7862,17 @@ class TestClusterTestListInt8UReverseRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseRequest::Type mRequest;
     TypedComplexArgument> mComplex_Arg1;
 };
 
 /*
  * Command TestEnumsRequest
  */
-class TestClusterTestEnumsRequest : public ClusterCommand
+class UnitTestingTestEnumsRequest : public ClusterCommand
 {
 public:
-    TestClusterTestEnumsRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestEnumsRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-enums-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, UINT16_MAX, &mRequest.arg1);
@@ -7895,16 +7895,16 @@ class TestClusterTestEnumsRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEnumsRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEnumsRequest::Type mRequest;
 };
 
 /*
  * Command TestNullableOptionalRequest
  */
-class TestClusterTestNullableOptionalRequest : public ClusterCommand
+class UnitTestingTestNullableOptionalRequest : public ClusterCommand
 {
 public:
-    TestClusterTestNullableOptionalRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestNullableOptionalRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-nullable-optional-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -7926,16 +7926,16 @@ class TestClusterTestNullableOptionalRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::Type mRequest;
 };
 
 /*
  * Command TestComplexNullableOptionalRequest
  */
-class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand
+class UnitTestingTestComplexNullableOptionalRequest : public ClusterCommand
 {
 public:
-    TestClusterTestComplexNullableOptionalRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestComplexNullableOptionalRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-complex-nullable-optional-request", credsIssuerConfig),
         mComplex_NullableStruct(&mRequest.nullableStruct), mComplex_OptionalStruct(&mRequest.optionalStruct),
         mComplex_NullableOptionalStruct(&mRequest.nullableOptionalStruct), mComplex_NullableList(&mRequest.nullableList),
@@ -7971,30 +7971,30 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_NullableStruct;
-    TypedComplexArgument> mComplex_OptionalStruct;
+    TypedComplexArgument> mComplex_OptionalStruct;
     TypedComplexArgument<
-        chip::Optional>>
+        chip::Optional>>
         mComplex_NullableOptionalStruct;
     TypedComplexArgument<
-        chip::app::DataModel::Nullable>>
+        chip::app::DataModel::Nullable>>
         mComplex_NullableList;
-    TypedComplexArgument>>
+    TypedComplexArgument>>
         mComplex_OptionalList;
     TypedComplexArgument>>>
+        chip::app::DataModel::Nullable>>>
         mComplex_NullableOptionalList;
 };
 
 /*
  * Command SimpleStructEchoRequest
  */
-class TestClusterSimpleStructEchoRequest : public ClusterCommand
+class UnitTestingSimpleStructEchoRequest : public ClusterCommand
 {
 public:
-    TestClusterSimpleStructEchoRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingSimpleStructEchoRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("simple-struct-echo-request", credsIssuerConfig), mComplex_Arg1(&mRequest.arg1)
     {
         AddArgument("Arg1", &mComplex_Arg1);
@@ -8016,17 +8016,17 @@ class TestClusterSimpleStructEchoRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::SimpleStructEchoRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::SimpleStructEchoRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TimedInvokeRequest
  */
-class TestClusterTimedInvokeRequest : public ClusterCommand
+class UnitTestingTimedInvokeRequest : public ClusterCommand
 {
 public:
-    TestClusterTimedInvokeRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTimedInvokeRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("timed-invoke-request", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
@@ -8047,16 +8047,16 @@ class TestClusterTimedInvokeRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TimedInvokeRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TimedInvokeRequest::Type mRequest;
 };
 
 /*
  * Command TestSimpleOptionalArgumentRequest
  */
-class TestClusterTestSimpleOptionalArgumentRequest : public ClusterCommand
+class UnitTestingTestSimpleOptionalArgumentRequest : public ClusterCommand
 {
 public:
-    TestClusterTestSimpleOptionalArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestSimpleOptionalArgumentRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-simple-optional-argument-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, 1, &mRequest.arg1);
@@ -8078,16 +8078,16 @@ class TestClusterTestSimpleOptionalArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type mRequest;
 };
 
 /*
  * Command TestEmitTestEventRequest
  */
-class TestClusterTestEmitTestEventRequest : public ClusterCommand
+class UnitTestingTestEmitTestEventRequest : public ClusterCommand
 {
 public:
-    TestClusterTestEmitTestEventRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestEmitTestEventRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-emit-test-event-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -8111,16 +8111,16 @@ class TestClusterTestEmitTestEventRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::Type mRequest;
 };
 
 /*
  * Command TestEmitTestFabricScopedEventRequest
  */
-class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand
+class UnitTestingTestEmitTestFabricScopedEventRequest : public ClusterCommand
 {
 public:
-    TestClusterTestEmitTestFabricScopedEventRequest(CredentialIssuerCommands * credsIssuerConfig) :
+    UnitTestingTestEmitTestFabricScopedEventRequest(CredentialIssuerCommands * credsIssuerConfig) :
         ClusterCommand("test-emit-test-fabric-scoped-event-request", credsIssuerConfig)
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -8142,7 +8142,7 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::Type mRequest;
 };
 
 /*----------------------------------------------------------------------------*\
@@ -12908,39 +12908,39 @@ void registerClusterElectricalMeasurement(Commands & commands, CredentialIssuerC
 
     commands.Register(clusterName, clusterCommands);
 }
-void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands * credsIssuerConfig)
+void registerClusterUnitTesting(Commands & commands, CredentialIssuerCommands * credsIssuerConfig)
 {
-    using namespace chip::app::Clusters::TestCluster;
+    using namespace chip::app::Clusters::UnitTesting;
 
-    const char * clusterName = "TestCluster";
+    const char * clusterName = "UnitTesting";
 
     commands_list clusterCommands = {
         //
         // Commands
         //
         make_unique(Id, credsIssuerConfig),                                 //
-        make_unique(credsIssuerConfig),                                    //
-        make_unique(credsIssuerConfig),                          //
-        make_unique(credsIssuerConfig),                            //
-        make_unique(credsIssuerConfig),                      //
-        make_unique(credsIssuerConfig),                        //
-        make_unique(credsIssuerConfig),               //
-        make_unique(credsIssuerConfig),          //
-        make_unique(credsIssuerConfig),               //
-        make_unique(credsIssuerConfig),         //
-        make_unique(credsIssuerConfig),           //
-        make_unique(credsIssuerConfig),            //
-        make_unique(credsIssuerConfig),     //
-        make_unique(credsIssuerConfig), //
-        make_unique(credsIssuerConfig),             //
-        make_unique(credsIssuerConfig),                        //
-        make_unique(credsIssuerConfig),             //
-        make_unique(credsIssuerConfig),      //
-        make_unique(credsIssuerConfig),                 //
-        make_unique(credsIssuerConfig),                      //
-        make_unique(credsIssuerConfig),       //
-        make_unique(credsIssuerConfig),                //
-        make_unique(credsIssuerConfig),    //
+        make_unique(credsIssuerConfig),                                    //
+        make_unique(credsIssuerConfig),                          //
+        make_unique(credsIssuerConfig),                            //
+        make_unique(credsIssuerConfig),                      //
+        make_unique(credsIssuerConfig),                        //
+        make_unique(credsIssuerConfig),               //
+        make_unique(credsIssuerConfig),          //
+        make_unique(credsIssuerConfig),               //
+        make_unique(credsIssuerConfig),         //
+        make_unique(credsIssuerConfig),           //
+        make_unique(credsIssuerConfig),            //
+        make_unique(credsIssuerConfig),     //
+        make_unique(credsIssuerConfig), //
+        make_unique(credsIssuerConfig),             //
+        make_unique(credsIssuerConfig),                        //
+        make_unique(credsIssuerConfig),             //
+        make_unique(credsIssuerConfig),      //
+        make_unique(credsIssuerConfig),                 //
+        make_unique(credsIssuerConfig),                      //
+        make_unique(credsIssuerConfig),       //
+        make_unique(credsIssuerConfig),                //
+        make_unique(credsIssuerConfig),    //
         //
         // Attributes
         //
@@ -13039,13 +13039,13 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
         make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig),            //
         make_unique>(Id, credsIssuerConfig),                                                              //
         make_unique>(Id, "boolean", 0, 1, Attributes::Boolean::Id, credsIssuerConfig),                //
-        make_unique>>(
+        make_unique>>(
             Id, "bitmap8", 0, UINT8_MAX, Attributes::Bitmap8::Id, credsIssuerConfig), //
-        make_unique>>(
+        make_unique>>(
             Id, "bitmap16", 0, UINT16_MAX, Attributes::Bitmap16::Id, credsIssuerConfig), //
-        make_unique>>(
+        make_unique>>(
             Id, "bitmap32", 0, UINT32_MAX, Attributes::Bitmap32::Id, credsIssuerConfig), //
-        make_unique>>(
+        make_unique>>(
             Id, "bitmap64", 0, UINT64_MAX, Attributes::Bitmap64::Id, credsIssuerConfig),                                     //
         make_unique>(Id, "int8u", 0, UINT8_MAX, Attributes::Int8u::Id, credsIssuerConfig),           //
         make_unique>(Id, "int16u", 0, UINT16_MAX, Attributes::Int16u::Id, credsIssuerConfig),       //
@@ -13077,7 +13077,7 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
         make_unique>>(
             Id, "list-octet-string", Attributes::ListOctetString::Id, credsIssuerConfig), //
         make_unique>>(
+            chip::app::DataModel::List>>(
             Id, "list-struct-octet-string", Attributes::ListStructOctetString::Id, credsIssuerConfig),                            //
         make_unique>(Id, "long-octet-string", Attributes::LongOctetString::Id, credsIssuerConfig), //
         make_unique>(Id, "char-string", Attributes::CharString::Id, credsIssuerConfig),            //
@@ -13086,11 +13086,11 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
         make_unique>(Id, "epoch-s", 0, UINT32_MAX, Attributes::EpochS::Id, credsIssuerConfig),           //
         make_unique>(Id, "vendor-id", 0, UINT16_MAX, Attributes::VendorId::Id, credsIssuerConfig), //
         make_unique>>(
+            chip::app::DataModel::List>>(
             Id, "list-nullables-and-optionals-struct", Attributes::ListNullablesAndOptionalsStruct::Id, credsIssuerConfig), //
-        make_unique>(Id, "enum-attr", 0, UINT8_MAX,
+        make_unique>(Id, "enum-attr", 0, UINT8_MAX,
                                                                                   Attributes::EnumAttr::Id, credsIssuerConfig), //
-        make_unique>(
+        make_unique>(
             Id, "struct-attr", Attributes::StructAttr::Id, credsIssuerConfig), //
         make_unique>(Id, "range-restricted-int8u", 0, UINT8_MAX, Attributes::RangeRestrictedInt8u::Id,
                                              credsIssuerConfig), //
@@ -13103,7 +13103,7 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
         make_unique>>(
             Id, "list-long-octet-string", Attributes::ListLongOctetString::Id, credsIssuerConfig), //
         make_unique>>(
+            chip::app::DataModel::List>>(
             Id, "list-fabric-scoped", Attributes::ListFabricScoped::Id, credsIssuerConfig),                                       //
         make_unique>(Id, "timed-write-boolean", 0, 1, Attributes::TimedWriteBoolean::Id, credsIssuerConfig), //
         make_unique>(Id, "general-error-boolean", 0, 1, Attributes::GeneralErrorBoolean::Id,
@@ -13114,16 +13114,16 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
         make_unique>>(Id, "nullable-boolean", 0, 1,
                                                                           Attributes::NullableBoolean::Id, credsIssuerConfig), //
         make_unique<
-            WriteAttribute>>>(
+            WriteAttribute>>>(
             Id, "nullable-bitmap8", 0, UINT8_MAX, Attributes::NullableBitmap8::Id, credsIssuerConfig), //
         make_unique<
-            WriteAttribute>>>(
+            WriteAttribute>>>(
             Id, "nullable-bitmap16", 0, UINT16_MAX, Attributes::NullableBitmap16::Id, credsIssuerConfig), //
         make_unique<
-            WriteAttribute>>>(
+            WriteAttribute>>>(
             Id, "nullable-bitmap32", 0, UINT32_MAX, Attributes::NullableBitmap32::Id, credsIssuerConfig), //
         make_unique<
-            WriteAttribute>>>(
+            WriteAttribute>>>(
             Id, "nullable-bitmap64", 0, UINT64_MAX, Attributes::NullableBitmap64::Id, credsIssuerConfig), //
         make_unique>>(Id, "nullable-int8u", 0, UINT8_MAX,
                                                                              Attributes::NullableInt8u::Id, credsIssuerConfig), //
@@ -13171,10 +13171,10 @@ void registerClusterTestCluster(Commands & commands, CredentialIssuerCommands *
             Id, "nullable-octet-string", Attributes::NullableOctetString::Id, credsIssuerConfig), //
         make_unique>>(
             Id, "nullable-char-string", Attributes::NullableCharString::Id, credsIssuerConfig), //
-        make_unique>>(
+        make_unique>>(
             Id, "nullable-enum-attr", 0, UINT8_MAX, Attributes::NullableEnumAttr::Id, credsIssuerConfig), //
         make_unique<
-            WriteAttributeAsComplex>>(
+            WriteAttributeAsComplex>>(
             Id, "nullable-struct", Attributes::NullableStruct::Id, credsIssuerConfig), //
         make_unique>>(Id, "nullable-range-restricted-int8u", 0, UINT8_MAX,
                                                                              Attributes::NullableRangeRestrictedInt8u::Id,
@@ -13426,7 +13426,7 @@ void registerClusters(Commands & commands, CredentialIssuerCommands * credsIssue
     registerClusterApplicationBasic(commands, credsIssuerConfig);
     registerClusterAccountLogin(commands, credsIssuerConfig);
     registerClusterElectricalMeasurement(commands, credsIssuerConfig);
-    registerClusterTestCluster(commands, credsIssuerConfig);
+    registerClusterUnitTesting(commands, credsIssuerConfig);
     registerClusterFaultInjection(commands, credsIssuerConfig);
     registerClusterSubscriptions(commands, credsIssuerConfig);
 }
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
index 89ee4ac83df02d..5fec5e0a074e79 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
@@ -550,7 +550,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::DoorLock::Structs::DlC
     ComplexArgumentParser::Finalize(request.credentialIndex);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::Type & request,
+                                        chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -564,7 +564,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::Type & request)
 {
     ComplexArgumentParser::Finalize(request.a);
 }
@@ -1122,7 +1122,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::ThreadNetworkDiagnosti
     ComplexArgumentParser::Finalize(request.fullNetworkData);
     ComplexArgumentParser::Finalize(request.isChild);
 }
-CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::TestCluster::Structs::NestedStruct::Type & request,
+CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::NestedStruct::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1144,14 +1144,14 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters:
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::NestedStruct::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::NestedStruct::Type & request)
 {
     ComplexArgumentParser::Finalize(request.a);
     ComplexArgumentParser::Finalize(request.b);
     ComplexArgumentParser::Finalize(request.c);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::TestCluster::Structs::NestedStructList::Type & request,
+                                        chip::app::Clusters::UnitTesting::Structs::NestedStructList::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1189,7 +1189,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::NestedStructList::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::NestedStructList::Type & request)
 {
     ComplexArgumentParser::Finalize(request.a);
     ComplexArgumentParser::Finalize(request.b);
@@ -1290,7 +1290,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::GeneralDiagnostics::St
     ComplexArgumentParser::Finalize(request.type);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::Type & request,
+                                        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1372,7 +1372,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::Type & request)
 {
     ComplexArgumentParser::Finalize(request.nullableInt);
     ComplexArgumentParser::Finalize(request.optionalInt);
@@ -1715,7 +1715,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::ModeSelect::Structs::S
     ComplexArgumentParser::Finalize(request.mfgCode);
     ComplexArgumentParser::Finalize(request.value);
 }
-CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type & request,
+CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1757,7 +1757,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters:
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type & request)
 {
     ComplexArgumentParser::Finalize(request.a);
     ComplexArgumentParser::Finalize(request.b);
@@ -1903,7 +1903,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::Binding::Structs::Targ
     ComplexArgumentParser::Finalize(request.fabricIndex);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::TestCluster::Structs::TestFabricScoped::Type & request,
+                                        chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1964,7 +1964,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::TestFabricScoped::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::Type & request)
 {
     ComplexArgumentParser::Finalize(request.fabricSensitiveInt8u);
     ComplexArgumentParser::Finalize(request.optionalFabricSensitiveInt8u);
@@ -1976,7 +1976,7 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::
     ComplexArgumentParser::Finalize(request.fabricIndex);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::TestCluster::Structs::TestListStructOctet::Type & request,
+                                        chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -1996,7 +1996,7 @@ CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::TestCluster::Structs::TestListStructOctet::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::Type & request)
 {
     ComplexArgumentParser::Finalize(request.member1);
     ComplexArgumentParser::Finalize(request.member2);
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
index d9ec10d8b9f001..7a69b9477b2d65 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
@@ -92,10 +92,10 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::DoorLock::Struc
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::DoorLock::Structs::DlCredential::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::Type & request);
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::Type & request);
 static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TimeSynchronization::Structs::DstOffsetType::Type & request,
                         Json::Value & value);
 
@@ -150,14 +150,14 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::ThreadNetworkDi
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::NestedStruct::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::NestedStruct::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::NestedStruct::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::NestedStructList::Type & request,
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::NestedStruct::Type & request);
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::NestedStructList::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::NestedStructList::Type & request);
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::NestedStructList::Type & request);
 static CHIP_ERROR Setup(const char * label, chip::app::Clusters::NetworkCommissioning::Structs::NetworkInfo::Type & request,
                         Json::Value & value);
 
@@ -166,10 +166,10 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::GeneralDiagnost
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::GeneralDiagnostics::Structs::NetworkInterfaceType::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::Type & request);
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::Type & request);
 static CHIP_ERROR Setup(const char * label,
                         chip::app::Clusters::ThreadNetworkDiagnostics::Structs::OperationalDatasetComponents::Type & request,
                         Json::Value & value);
@@ -204,10 +204,10 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::ModeSelect::Str
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::ModeSelect::Structs::SemanticTag::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type & request);
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type & request);
 static CHIP_ERROR Setup(const char * label, chip::app::Clusters::ContentLauncher::Structs::StyleInformation::Type & request,
                         Json::Value & value);
 
@@ -224,14 +224,14 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Binding::Struct
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::Binding::Structs::TargetStruct::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::TestFabricScoped::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::TestFabricScoped::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::TestCluster::Structs::TestListStructOctet::Type & request,
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::Type & request);
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::TestCluster::Structs::TestListStructOctet::Type & request);
+static void Finalize(chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::Type & request);
 static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Thermostat::Structs::ThermostatScheduleTransition::Type & request,
                         Json::Value & value);
 
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index 76ab57fe55da9c..ba839e1739c4fd 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -546,7 +546,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -1175,7 +1175,7 @@ DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::NestedStruct::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::NestedStruct::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -1207,7 +1207,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::NestedStructList::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::NestedStructList::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -1369,7 +1369,7 @@ DataModelLogger::LogValue(const char * label, size_t indent,
 }
 CHIP_ERROR
 DataModelLogger::LogValue(const char * label, size_t indent,
-                          const chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType & value)
+                          const chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -1837,7 +1837,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -2045,7 +2045,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::TestFabricScoped::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -2118,7 +2118,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::TestCluster::Structs::TestListStructOctet::DecodableType & value)
+                                     const chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -3488,7 +3488,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
 
     return CHIP_NO_ERROR;
 }
-CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const TestCluster::Events::TestEvent::DecodableType & value)
+CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const UnitTesting::Events::TestEvent::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -3544,7 +3544,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const Te
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Events::TestFabricScopedEvent::DecodableType & value)
+                                     const UnitTesting::Events::TestFabricScopedEvent::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -4015,7 +4015,7 @@ DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestSpecificResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestSpecificResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("returnValue", indent + 1, value.returnValue));
@@ -4023,7 +4023,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestAddArgumentsResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("returnValue", indent + 1, value.returnValue));
@@ -4031,7 +4031,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestSimpleArgumentResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("returnValue", indent + 1, value.returnValue));
@@ -4039,7 +4039,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("arg1", indent + 1, value.arg1));
@@ -4052,7 +4052,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("arg1", indent + 1, value.arg1));
@@ -4060,7 +4060,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestEnumsResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestEnumsResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("arg1", indent + 1, value.arg1));
@@ -4069,7 +4069,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestNullableOptionalResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("wasPresent", indent + 1, value.wasPresent));
@@ -4080,7 +4080,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("nullableIntWasNull", indent + 1, value.nullableIntWasNull));
@@ -4121,7 +4121,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::BooleanResponse::DecodableType & value)
+                                     const UnitTesting::Commands::BooleanResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("value", indent + 1, value.value));
@@ -4129,7 +4129,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::SimpleStructResponse::DecodableType & value)
+                                     const UnitTesting::Commands::SimpleStructResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("arg1", indent + 1, value.arg1));
@@ -4137,7 +4137,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestEmitTestEventResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("value", indent + 1, value.value));
@@ -4145,7 +4145,7 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & value)
+                                     const UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     ReturnErrorOnFailure(DataModelLogger::LogValue("value", indent + 1, value.value));
@@ -9563,443 +9563,443 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
         }
         break;
     }
-    case TestCluster::Id: {
+    case UnitTesting::Id: {
         switch (path.mAttributeId)
         {
-        case TestCluster::Attributes::Boolean::Id: {
+        case UnitTesting::Attributes::Boolean::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("boolean", 1, value);
         }
-        case TestCluster::Attributes::Bitmap8::Id: {
-            chip::BitMask value;
+        case UnitTesting::Attributes::Bitmap8::Id: {
+            chip::BitMask value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("bitmap8", 1, value);
         }
-        case TestCluster::Attributes::Bitmap16::Id: {
-            chip::BitMask value;
+        case UnitTesting::Attributes::Bitmap16::Id: {
+            chip::BitMask value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("bitmap16", 1, value);
         }
-        case TestCluster::Attributes::Bitmap32::Id: {
-            chip::BitMask value;
+        case UnitTesting::Attributes::Bitmap32::Id: {
+            chip::BitMask value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("bitmap32", 1, value);
         }
-        case TestCluster::Attributes::Bitmap64::Id: {
-            chip::BitMask value;
+        case UnitTesting::Attributes::Bitmap64::Id: {
+            chip::BitMask value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("bitmap64", 1, value);
         }
-        case TestCluster::Attributes::Int8u::Id: {
+        case UnitTesting::Attributes::Int8u::Id: {
             uint8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int8u", 1, value);
         }
-        case TestCluster::Attributes::Int16u::Id: {
+        case UnitTesting::Attributes::Int16u::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int16u", 1, value);
         }
-        case TestCluster::Attributes::Int24u::Id: {
+        case UnitTesting::Attributes::Int24u::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int24u", 1, value);
         }
-        case TestCluster::Attributes::Int32u::Id: {
+        case UnitTesting::Attributes::Int32u::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int32u", 1, value);
         }
-        case TestCluster::Attributes::Int40u::Id: {
+        case UnitTesting::Attributes::Int40u::Id: {
             uint64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int40u", 1, value);
         }
-        case TestCluster::Attributes::Int48u::Id: {
+        case UnitTesting::Attributes::Int48u::Id: {
             uint64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int48u", 1, value);
         }
-        case TestCluster::Attributes::Int56u::Id: {
+        case UnitTesting::Attributes::Int56u::Id: {
             uint64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int56u", 1, value);
         }
-        case TestCluster::Attributes::Int64u::Id: {
+        case UnitTesting::Attributes::Int64u::Id: {
             uint64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int64u", 1, value);
         }
-        case TestCluster::Attributes::Int8s::Id: {
+        case UnitTesting::Attributes::Int8s::Id: {
             int8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int8s", 1, value);
         }
-        case TestCluster::Attributes::Int16s::Id: {
+        case UnitTesting::Attributes::Int16s::Id: {
             int16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int16s", 1, value);
         }
-        case TestCluster::Attributes::Int24s::Id: {
+        case UnitTesting::Attributes::Int24s::Id: {
             int32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int24s", 1, value);
         }
-        case TestCluster::Attributes::Int32s::Id: {
+        case UnitTesting::Attributes::Int32s::Id: {
             int32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int32s", 1, value);
         }
-        case TestCluster::Attributes::Int40s::Id: {
+        case UnitTesting::Attributes::Int40s::Id: {
             int64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int40s", 1, value);
         }
-        case TestCluster::Attributes::Int48s::Id: {
+        case UnitTesting::Attributes::Int48s::Id: {
             int64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int48s", 1, value);
         }
-        case TestCluster::Attributes::Int56s::Id: {
+        case UnitTesting::Attributes::Int56s::Id: {
             int64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int56s", 1, value);
         }
-        case TestCluster::Attributes::Int64s::Id: {
+        case UnitTesting::Attributes::Int64s::Id: {
             int64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("int64s", 1, value);
         }
-        case TestCluster::Attributes::Enum8::Id: {
+        case UnitTesting::Attributes::Enum8::Id: {
             uint8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("enum8", 1, value);
         }
-        case TestCluster::Attributes::Enum16::Id: {
+        case UnitTesting::Attributes::Enum16::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("enum16", 1, value);
         }
-        case TestCluster::Attributes::FloatSingle::Id: {
+        case UnitTesting::Attributes::FloatSingle::Id: {
             float value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("float_single", 1, value);
         }
-        case TestCluster::Attributes::FloatDouble::Id: {
+        case UnitTesting::Attributes::FloatDouble::Id: {
             double value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("float_double", 1, value);
         }
-        case TestCluster::Attributes::OctetString::Id: {
+        case UnitTesting::Attributes::OctetString::Id: {
             chip::ByteSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("octet_string", 1, value);
         }
-        case TestCluster::Attributes::ListInt8u::Id: {
+        case UnitTesting::Attributes::ListInt8u::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_int8u", 1, value);
         }
-        case TestCluster::Attributes::ListOctetString::Id: {
+        case UnitTesting::Attributes::ListOctetString::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_octet_string", 1, value);
         }
-        case TestCluster::Attributes::ListStructOctetString::Id: {
-            chip::app::DataModel::DecodableList
+        case UnitTesting::Attributes::ListStructOctetString::Id: {
+            chip::app::DataModel::DecodableList
                 value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_struct_octet_string", 1, value);
         }
-        case TestCluster::Attributes::LongOctetString::Id: {
+        case UnitTesting::Attributes::LongOctetString::Id: {
             chip::ByteSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("long_octet_string", 1, value);
         }
-        case TestCluster::Attributes::CharString::Id: {
+        case UnitTesting::Attributes::CharString::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("char_string", 1, value);
         }
-        case TestCluster::Attributes::LongCharString::Id: {
+        case UnitTesting::Attributes::LongCharString::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("long_char_string", 1, value);
         }
-        case TestCluster::Attributes::EpochUs::Id: {
+        case UnitTesting::Attributes::EpochUs::Id: {
             uint64_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("epoch_us", 1, value);
         }
-        case TestCluster::Attributes::EpochS::Id: {
+        case UnitTesting::Attributes::EpochS::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("epoch_s", 1, value);
         }
-        case TestCluster::Attributes::VendorId::Id: {
+        case UnitTesting::Attributes::VendorId::Id: {
             chip::VendorId value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("vendor_id", 1, value);
         }
-        case TestCluster::Attributes::ListNullablesAndOptionalsStruct::Id: {
+        case UnitTesting::Attributes::ListNullablesAndOptionalsStruct::Id: {
             chip::app::DataModel::DecodableList<
-                chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType>
+                chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType>
                 value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_nullables_and_optionals_struct", 1, value);
         }
-        case TestCluster::Attributes::EnumAttr::Id: {
-            chip::app::Clusters::TestCluster::SimpleEnum value;
+        case UnitTesting::Attributes::EnumAttr::Id: {
+            chip::app::Clusters::UnitTesting::SimpleEnum value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("enum_attr", 1, value);
         }
-        case TestCluster::Attributes::StructAttr::Id: {
-            chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType value;
+        case UnitTesting::Attributes::StructAttr::Id: {
+            chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("struct_attr", 1, value);
         }
-        case TestCluster::Attributes::RangeRestrictedInt8u::Id: {
+        case UnitTesting::Attributes::RangeRestrictedInt8u::Id: {
             uint8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("range_restricted_int8u", 1, value);
         }
-        case TestCluster::Attributes::RangeRestrictedInt8s::Id: {
+        case UnitTesting::Attributes::RangeRestrictedInt8s::Id: {
             int8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("range_restricted_int8s", 1, value);
         }
-        case TestCluster::Attributes::RangeRestrictedInt16u::Id: {
+        case UnitTesting::Attributes::RangeRestrictedInt16u::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("range_restricted_int16u", 1, value);
         }
-        case TestCluster::Attributes::RangeRestrictedInt16s::Id: {
+        case UnitTesting::Attributes::RangeRestrictedInt16s::Id: {
             int16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("range_restricted_int16s", 1, value);
         }
-        case TestCluster::Attributes::ListLongOctetString::Id: {
+        case UnitTesting::Attributes::ListLongOctetString::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_long_octet_string", 1, value);
         }
-        case TestCluster::Attributes::ListFabricScoped::Id: {
-            chip::app::DataModel::DecodableList value;
+        case UnitTesting::Attributes::ListFabricScoped::Id: {
+            chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("list_fabric_scoped", 1, value);
         }
-        case TestCluster::Attributes::TimedWriteBoolean::Id: {
+        case UnitTesting::Attributes::TimedWriteBoolean::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("timed_write_boolean", 1, value);
         }
-        case TestCluster::Attributes::GeneralErrorBoolean::Id: {
+        case UnitTesting::Attributes::GeneralErrorBoolean::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("general_error_boolean", 1, value);
         }
-        case TestCluster::Attributes::ClusterErrorBoolean::Id: {
+        case UnitTesting::Attributes::ClusterErrorBoolean::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("cluster_error_boolean", 1, value);
         }
-        case TestCluster::Attributes::Unsupported::Id: {
+        case UnitTesting::Attributes::Unsupported::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("unsupported", 1, value);
         }
-        case TestCluster::Attributes::NullableBoolean::Id: {
+        case UnitTesting::Attributes::NullableBoolean::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_boolean", 1, value);
         }
-        case TestCluster::Attributes::NullableBitmap8::Id: {
-            chip::app::DataModel::Nullable> value;
+        case UnitTesting::Attributes::NullableBitmap8::Id: {
+            chip::app::DataModel::Nullable> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_bitmap8", 1, value);
         }
-        case TestCluster::Attributes::NullableBitmap16::Id: {
-            chip::app::DataModel::Nullable> value;
+        case UnitTesting::Attributes::NullableBitmap16::Id: {
+            chip::app::DataModel::Nullable> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_bitmap16", 1, value);
         }
-        case TestCluster::Attributes::NullableBitmap32::Id: {
-            chip::app::DataModel::Nullable> value;
+        case UnitTesting::Attributes::NullableBitmap32::Id: {
+            chip::app::DataModel::Nullable> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_bitmap32", 1, value);
         }
-        case TestCluster::Attributes::NullableBitmap64::Id: {
-            chip::app::DataModel::Nullable> value;
+        case UnitTesting::Attributes::NullableBitmap64::Id: {
+            chip::app::DataModel::Nullable> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_bitmap64", 1, value);
         }
-        case TestCluster::Attributes::NullableInt8u::Id: {
+        case UnitTesting::Attributes::NullableInt8u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int8u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt16u::Id: {
+        case UnitTesting::Attributes::NullableInt16u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int16u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt24u::Id: {
+        case UnitTesting::Attributes::NullableInt24u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int24u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt32u::Id: {
+        case UnitTesting::Attributes::NullableInt32u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int32u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt40u::Id: {
+        case UnitTesting::Attributes::NullableInt40u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int40u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt48u::Id: {
+        case UnitTesting::Attributes::NullableInt48u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int48u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt56u::Id: {
+        case UnitTesting::Attributes::NullableInt56u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int56u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt64u::Id: {
+        case UnitTesting::Attributes::NullableInt64u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int64u", 1, value);
         }
-        case TestCluster::Attributes::NullableInt8s::Id: {
+        case UnitTesting::Attributes::NullableInt8s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int8s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt16s::Id: {
+        case UnitTesting::Attributes::NullableInt16s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int16s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt24s::Id: {
+        case UnitTesting::Attributes::NullableInt24s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int24s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt32s::Id: {
+        case UnitTesting::Attributes::NullableInt32s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int32s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt40s::Id: {
+        case UnitTesting::Attributes::NullableInt40s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int40s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt48s::Id: {
+        case UnitTesting::Attributes::NullableInt48s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int48s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt56s::Id: {
+        case UnitTesting::Attributes::NullableInt56s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int56s", 1, value);
         }
-        case TestCluster::Attributes::NullableInt64s::Id: {
+        case UnitTesting::Attributes::NullableInt64s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_int64s", 1, value);
         }
-        case TestCluster::Attributes::NullableEnum8::Id: {
+        case UnitTesting::Attributes::NullableEnum8::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_enum8", 1, value);
         }
-        case TestCluster::Attributes::NullableEnum16::Id: {
+        case UnitTesting::Attributes::NullableEnum16::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_enum16", 1, value);
         }
-        case TestCluster::Attributes::NullableFloatSingle::Id: {
+        case UnitTesting::Attributes::NullableFloatSingle::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_float_single", 1, value);
         }
-        case TestCluster::Attributes::NullableFloatDouble::Id: {
+        case UnitTesting::Attributes::NullableFloatDouble::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_float_double", 1, value);
         }
-        case TestCluster::Attributes::NullableOctetString::Id: {
+        case UnitTesting::Attributes::NullableOctetString::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_octet_string", 1, value);
         }
-        case TestCluster::Attributes::NullableCharString::Id: {
+        case UnitTesting::Attributes::NullableCharString::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_char_string", 1, value);
         }
-        case TestCluster::Attributes::NullableEnumAttr::Id: {
-            chip::app::DataModel::Nullable value;
+        case UnitTesting::Attributes::NullableEnumAttr::Id: {
+            chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_enum_attr", 1, value);
         }
-        case TestCluster::Attributes::NullableStruct::Id: {
-            chip::app::DataModel::Nullable value;
+        case UnitTesting::Attributes::NullableStruct::Id: {
+            chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_struct", 1, value);
         }
-        case TestCluster::Attributes::NullableRangeRestrictedInt8u::Id: {
+        case UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_range_restricted_int8u", 1, value);
         }
-        case TestCluster::Attributes::NullableRangeRestrictedInt8s::Id: {
+        case UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_range_restricted_int8s", 1, value);
         }
-        case TestCluster::Attributes::NullableRangeRestrictedInt16u::Id: {
+        case UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_range_restricted_int16u", 1, value);
         }
-        case TestCluster::Attributes::NullableRangeRestrictedInt16s::Id: {
+        case UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id: {
             chip::app::DataModel::Nullable value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("nullable_range_restricted_int16s", 1, value);
         }
-        case TestCluster::Attributes::WriteOnlyInt8u::Id: {
+        case UnitTesting::Attributes::WriteOnlyInt8u::Id: {
             uint8_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("write_only_int8u", 1, value);
         }
-        case TestCluster::Attributes::GeneratedCommandList::Id: {
+        case UnitTesting::Attributes::GeneratedCommandList::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("GeneratedCommandList", 1, value);
         }
-        case TestCluster::Attributes::AcceptedCommandList::Id: {
+        case UnitTesting::Attributes::AcceptedCommandList::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("AcceptedCommandList", 1, value);
         }
-        case TestCluster::Attributes::AttributeList::Id: {
+        case UnitTesting::Attributes::AttributeList::Id: {
             chip::app::DataModel::DecodableList value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("AttributeList", 1, value);
         }
-        case TestCluster::Attributes::FeatureMap::Id: {
+        case UnitTesting::Attributes::FeatureMap::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("FeatureMap", 1, value);
         }
-        case TestCluster::Attributes::ClusterRevision::Id: {
+        case UnitTesting::Attributes::ClusterRevision::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ClusterRevision", 1, value);
@@ -10349,66 +10349,66 @@ CHIP_ERROR DataModelLogger::LogCommand(const chip::app::ConcreteCommandPath & pa
         }
         break;
     }
-    case TestCluster::Id: {
+    case UnitTesting::Id: {
         switch (path.mCommandId)
         {
-        case TestCluster::Commands::TestSpecificResponse::Id: {
-            TestCluster::Commands::TestSpecificResponse::DecodableType value;
+        case UnitTesting::Commands::TestSpecificResponse::Id: {
+            UnitTesting::Commands::TestSpecificResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestSpecificResponse", 1, value);
         }
-        case TestCluster::Commands::TestAddArgumentsResponse::Id: {
-            TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+        case UnitTesting::Commands::TestAddArgumentsResponse::Id: {
+            UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestAddArgumentsResponse", 1, value);
         }
-        case TestCluster::Commands::TestSimpleArgumentResponse::Id: {
-            TestCluster::Commands::TestSimpleArgumentResponse::DecodableType value;
+        case UnitTesting::Commands::TestSimpleArgumentResponse::Id: {
+            UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestSimpleArgumentResponse", 1, value);
         }
-        case TestCluster::Commands::TestStructArrayArgumentResponse::Id: {
-            TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType value;
+        case UnitTesting::Commands::TestStructArrayArgumentResponse::Id: {
+            UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestStructArrayArgumentResponse", 1, value);
         }
-        case TestCluster::Commands::TestListInt8UReverseResponse::Id: {
-            TestCluster::Commands::TestListInt8UReverseResponse::DecodableType value;
+        case UnitTesting::Commands::TestListInt8UReverseResponse::Id: {
+            UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestListInt8UReverseResponse", 1, value);
         }
-        case TestCluster::Commands::TestEnumsResponse::Id: {
-            TestCluster::Commands::TestEnumsResponse::DecodableType value;
+        case UnitTesting::Commands::TestEnumsResponse::Id: {
+            UnitTesting::Commands::TestEnumsResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestEnumsResponse", 1, value);
         }
-        case TestCluster::Commands::TestNullableOptionalResponse::Id: {
-            TestCluster::Commands::TestNullableOptionalResponse::DecodableType value;
+        case UnitTesting::Commands::TestNullableOptionalResponse::Id: {
+            UnitTesting::Commands::TestNullableOptionalResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestNullableOptionalResponse", 1, value);
         }
-        case TestCluster::Commands::TestComplexNullableOptionalResponse::Id: {
-            TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType value;
+        case UnitTesting::Commands::TestComplexNullableOptionalResponse::Id: {
+            UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestComplexNullableOptionalResponse", 1, value);
         }
-        case TestCluster::Commands::BooleanResponse::Id: {
-            TestCluster::Commands::BooleanResponse::DecodableType value;
+        case UnitTesting::Commands::BooleanResponse::Id: {
+            UnitTesting::Commands::BooleanResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("BooleanResponse", 1, value);
         }
-        case TestCluster::Commands::SimpleStructResponse::Id: {
-            TestCluster::Commands::SimpleStructResponse::DecodableType value;
+        case UnitTesting::Commands::SimpleStructResponse::Id: {
+            UnitTesting::Commands::SimpleStructResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("SimpleStructResponse", 1, value);
         }
-        case TestCluster::Commands::TestEmitTestEventResponse::Id: {
-            TestCluster::Commands::TestEmitTestEventResponse::DecodableType value;
+        case UnitTesting::Commands::TestEmitTestEventResponse::Id: {
+            UnitTesting::Commands::TestEmitTestEventResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestEmitTestEventResponse", 1, value);
         }
-        case TestCluster::Commands::TestEmitTestFabricScopedEventResponse::Id: {
-            TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType value;
+        case UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::Id: {
+            UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestEmitTestFabricScopedEventResponse", 1, value);
         }
@@ -10803,16 +10803,16 @@ CHIP_ERROR DataModelLogger::LogEvent(const chip::app::EventHeader & header, chip
         }
         break;
     }
-    case TestCluster::Id: {
+    case UnitTesting::Id: {
         switch (header.mPath.mEventId)
         {
-        case TestCluster::Events::TestEvent::Id: {
-            chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+        case UnitTesting::Events::TestEvent::Id: {
+            chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestEvent", 1, value);
         }
-        case TestCluster::Events::TestFabricScopedEvent::Id: {
-            chip::app::Clusters::TestCluster::Events::TestFabricScopedEvent::DecodableType value;
+        case UnitTesting::Events::TestFabricScopedEvent::Id: {
+            chip::app::Clusters::UnitTesting::Events::TestFabricScopedEvent::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("TestFabricScopedEvent", 1, value);
         }
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
index ca89b8ba33c5a2..c9b823373808fc 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
@@ -56,7 +56,7 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::DoorLock::Structs::DlCredential::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::DoubleNestedStructList::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::DoubleNestedStructList::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::TimeSynchronization::Structs::DstOffsetType::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
@@ -86,15 +86,15 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::ThreadNetworkDiagnostics::Structs::NeighborTable::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::NestedStruct::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::NestedStruct::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::NestedStructList::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::NestedStructList::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::NetworkCommissioning::Structs::NetworkInfo::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::GeneralDiagnostics::Structs::NetworkInterfaceType::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType & value);
 static CHIP_ERROR
 LogValue(const char * label, size_t indent,
          const chip::app::Clusters::ThreadNetworkDiagnostics::Structs::OperationalDatasetComponents::DecodableType & value);
@@ -113,7 +113,7 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::ModeSelect::Structs::SemanticTag::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::ContentLauncher::Structs::StyleInformation::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
@@ -123,9 +123,9 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::Binding::Structs::TargetStruct::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::TestFabricScoped::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::TestFabricScoped::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Structs::TestListStructOctet::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Structs::TestListStructOctet::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::Thermostat::Structs::ThermostatScheduleTransition::DecodableType & value);
 static CHIP_ERROR
@@ -261,9 +261,9 @@ static CHIP_ERROR LogValue(const char * label, size_t indent,
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::PumpConfigurationAndControl::Events::TurbineOperation::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Events::TestFabricScopedEvent::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Events::TestFabricScopedEvent::DecodableType & value);
 
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::Groups::Commands::AddGroupResponse::DecodableType & value);
@@ -363,29 +363,29 @@ static CHIP_ERROR
 LogValue(const char * label, size_t indent,
          const chip::app::Clusters::ElectricalMeasurement::Commands::GetMeasurementProfileResponseCommand::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentResponse::DecodableType & value);
 static CHIP_ERROR
 LogValue(const char * label, size_t indent,
-         const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentResponse::DecodableType & value);
+         const chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType & value);
 static CHIP_ERROR
 LogValue(const char * label, size_t indent,
-         const chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalResponse::DecodableType & value);
+         const chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType & value);
+                           const chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType & value);
 static CHIP_ERROR
 LogValue(const char * label, size_t indent,
-         const chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & value);
+         const chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventResponse::DecodableType & value);
diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h
index ef88de3db001b2..1c8402f90d6507 100644
--- a/zzz_generated/chip-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h
@@ -47933,8 +47933,8 @@ class TestClusterSuite : public TestCommand
     chip::Optional mTimeout;
 
     chip::app::DataModel::Nullable booValueNull;
-    chip::app::DataModel::Nullable> nullableValue254;
-    chip::app::DataModel::Nullable nullableEnumAttr3;
+    chip::app::DataModel::Nullable> nullableValue254;
+    chip::app::DataModel::Nullable nullableEnumAttr3;
     uint8_t * nullableOctetStrTestValueBuffer = nullptr;
     chip::app::DataModel::Nullable nullableOctetStrTestValue;
     char * nullableCharStringSaveBuffer = nullptr;
@@ -47965,7 +47965,7 @@ class TestClusterSuite : public TestCommand
         case 3:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestSpecificResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestSpecificResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue, 7U));
             }
@@ -47973,7 +47973,7 @@ class TestClusterSuite : public TestCommand
         case 4:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue, 20U));
             }
@@ -48014,7 +48014,7 @@ class TestClusterSuite : public TestCommand
         case 11:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap8", value, 0U));
             }
@@ -48025,7 +48025,7 @@ class TestClusterSuite : public TestCommand
         case 13:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap8", value, 255U));
             }
@@ -48036,7 +48036,7 @@ class TestClusterSuite : public TestCommand
         case 15:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap8", value, 0U));
             }
@@ -48044,7 +48044,7 @@ class TestClusterSuite : public TestCommand
         case 16:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap16", value, 0U));
             }
@@ -48055,7 +48055,7 @@ class TestClusterSuite : public TestCommand
         case 18:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap16", value, 65535U));
             }
@@ -48066,7 +48066,7 @@ class TestClusterSuite : public TestCommand
         case 20:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap16", value, 0U));
             }
@@ -48074,7 +48074,7 @@ class TestClusterSuite : public TestCommand
         case 21:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 0UL));
             }
@@ -48085,7 +48085,7 @@ class TestClusterSuite : public TestCommand
         case 23:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 4294967295UL));
             }
@@ -48096,7 +48096,7 @@ class TestClusterSuite : public TestCommand
         case 25:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 0UL));
             }
@@ -48104,7 +48104,7 @@ class TestClusterSuite : public TestCommand
         case 26:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap64", value, 0ULL));
             }
@@ -48115,7 +48115,7 @@ class TestClusterSuite : public TestCommand
         case 28:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap64", value, 18446744073709551615ULL));
             }
@@ -48126,7 +48126,7 @@ class TestClusterSuite : public TestCommand
         case 30:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap64", value, 0ULL));
             }
@@ -48974,7 +48974,7 @@ class TestClusterSuite : public TestCommand
         case 154:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("arg1", value.arg1, 20003U));
                 VerifyOrReturn(CheckValue("arg2", value.arg2, 1U));
@@ -48983,7 +48983,7 @@ class TestClusterSuite : public TestCommand
         case 155:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestEnumsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestEnumsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("arg1", value.arg1, 20003U));
                 VerifyOrReturn(CheckValue("arg2", value.arg2, 4U));
@@ -48992,7 +48992,7 @@ class TestClusterSuite : public TestCommand
         case 156:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49000,7 +49000,7 @@ class TestClusterSuite : public TestCommand
         case 157:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49008,7 +49008,7 @@ class TestClusterSuite : public TestCommand
         case 158:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49016,7 +49016,7 @@ class TestClusterSuite : public TestCommand
         case 159:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49024,7 +49024,7 @@ class TestClusterSuite : public TestCommand
         case 160:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49032,7 +49032,7 @@ class TestClusterSuite : public TestCommand
         case 161:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49040,7 +49040,7 @@ class TestClusterSuite : public TestCommand
         case 162:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::SimpleStructResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::SimpleStructResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("arg1.a", value.arg1.a, 17U));
                 VerifyOrReturn(CheckValue("arg1.b", value.arg1.b, false));
@@ -49056,7 +49056,7 @@ class TestClusterSuite : public TestCommand
         case 163:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49064,7 +49064,7 @@ class TestClusterSuite : public TestCommand
         case 164:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49072,7 +49072,7 @@ class TestClusterSuite : public TestCommand
         case 165:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
                     auto iter_0 = value.arg1.begin();
@@ -49101,7 +49101,7 @@ class TestClusterSuite : public TestCommand
         case 166:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
                     auto iter_0 = value.arg1.begin();
@@ -49112,7 +49112,7 @@ class TestClusterSuite : public TestCommand
         case 167:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49120,7 +49120,7 @@ class TestClusterSuite : public TestCommand
         case 168:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49128,7 +49128,7 @@ class TestClusterSuite : public TestCommand
         case 169:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, true));
             }
@@ -49136,7 +49136,7 @@ class TestClusterSuite : public TestCommand
         case 170:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::BooleanResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::BooleanResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, false));
             }
@@ -49195,7 +49195,7 @@ class TestClusterSuite : public TestCommand
         case 176:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::DecodableList
+                chip::app::DataModel::DecodableList
                     value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
@@ -49223,7 +49223,7 @@ class TestClusterSuite : public TestCommand
         case 177:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("wasPresent", value.wasPresent, true));
                 VerifyOrReturn(CheckValuePresent("wasNull", value.wasNull));
@@ -49238,7 +49238,7 @@ class TestClusterSuite : public TestCommand
         case 178:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("wasPresent", value.wasPresent, false));
             }
@@ -49247,7 +49247,7 @@ class TestClusterSuite : public TestCommand
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 chip::app::DataModel::DecodableList<
-                    chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType>
+                    chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType>
                     value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
@@ -49271,7 +49271,7 @@ class TestClusterSuite : public TestCommand
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
                 chip::app::DataModel::DecodableList<
-                    chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType>
+                    chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType>
                     value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 {
@@ -49339,7 +49339,7 @@ class TestClusterSuite : public TestCommand
         case 188:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap8", value));
                 VerifyOrReturn(CheckValue("nullableBitmap8.Value()", value.Value(), 254U));
@@ -49351,7 +49351,7 @@ class TestClusterSuite : public TestCommand
         case 190:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap8", value));
                 VerifyOrReturn(CheckValue("nullableBitmap8.Value()", value.Value(), 254U));
@@ -49364,7 +49364,7 @@ class TestClusterSuite : public TestCommand
         case 192:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNull("nullableBitmap8", value));
             }
@@ -49372,7 +49372,7 @@ class TestClusterSuite : public TestCommand
         case 193:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, nullableValue254));
             }
@@ -49383,7 +49383,7 @@ class TestClusterSuite : public TestCommand
         case 195:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap16", value));
                 VerifyOrReturn(CheckValue("nullableBitmap16.Value()", value.Value(), 65534U));
@@ -49395,7 +49395,7 @@ class TestClusterSuite : public TestCommand
         case 197:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap16", value));
                 VerifyOrReturn(CheckValue("nullableBitmap16.Value()", value.Value(), 65534U));
@@ -49407,7 +49407,7 @@ class TestClusterSuite : public TestCommand
         case 199:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNull("nullableBitmap16", value));
             }
@@ -49418,7 +49418,7 @@ class TestClusterSuite : public TestCommand
         case 201:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap32", value));
                 VerifyOrReturn(CheckValue("nullableBitmap32.Value()", value.Value(), 4294967294UL));
@@ -49430,7 +49430,7 @@ class TestClusterSuite : public TestCommand
         case 203:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap32", value));
                 VerifyOrReturn(CheckValue("nullableBitmap32.Value()", value.Value(), 4294967294UL));
@@ -49442,7 +49442,7 @@ class TestClusterSuite : public TestCommand
         case 205:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNull("nullableBitmap32", value));
             }
@@ -49453,7 +49453,7 @@ class TestClusterSuite : public TestCommand
         case 207:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap64", value));
                 VerifyOrReturn(CheckValue("nullableBitmap64.Value()", value.Value(), 18446744073709551614ULL));
@@ -49465,7 +49465,7 @@ class TestClusterSuite : public TestCommand
         case 209:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableBitmap64", value));
                 VerifyOrReturn(CheckValue("nullableBitmap64.Value()", value.Value(), 18446744073709551614ULL));
@@ -49477,7 +49477,7 @@ class TestClusterSuite : public TestCommand
         case 211:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable> value;
+                chip::app::DataModel::Nullable> value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNull("nullableBitmap64", value));
             }
@@ -50332,7 +50332,7 @@ class TestClusterSuite : public TestCommand
         case 346:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable value;
+                chip::app::DataModel::Nullable value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableEnumAttr", value));
                 VerifyOrReturn(CheckValue("nullableEnumAttr.Value()", value.Value(), 0U));
@@ -50344,7 +50344,7 @@ class TestClusterSuite : public TestCommand
         case 348:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable value;
+                chip::app::DataModel::Nullable value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableEnumAttr", value));
                 VerifyOrReturn(CheckValue("nullableEnumAttr.Value()", value.Value(), 3U));
@@ -50356,7 +50356,7 @@ class TestClusterSuite : public TestCommand
         case 350:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable value;
+                chip::app::DataModel::Nullable value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNonNull("nullableEnumAttr", value));
                 VerifyOrReturn(CheckValue("nullableEnumAttr.Value()", value.Value(), 3U));
@@ -50369,7 +50369,7 @@ class TestClusterSuite : public TestCommand
         case 352:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable value;
+                chip::app::DataModel::Nullable value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValueNull("nullableEnumAttr", value));
             }
@@ -50377,7 +50377,7 @@ class TestClusterSuite : public TestCommand
         case 353:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::DataModel::Nullable value;
+                chip::app::DataModel::Nullable value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, nullableEnumAttr3));
             }
@@ -51233,7 +51233,7 @@ class TestClusterSuite : public TestCommand
         case 489:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Structs::SimpleStruct::DecodableType value;
+                chip::app::Clusters::UnitTesting::Structs::SimpleStruct::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("structAttr.a", value.a, 5U));
                 VerifyOrReturn(CheckValue("structAttr.b", value.b, true));
@@ -51270,8 +51270,8 @@ class TestClusterSuite : public TestCommand
         case 1: {
             LogStep(1, "Send Test Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::Test::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::Test::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::Test::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::Test::Id, value,
                                chip::NullOptional
 
             );
@@ -51279,8 +51279,8 @@ class TestClusterSuite : public TestCommand
         case 2: {
             LogStep(2, "Send Test Not Handled Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNotHandled::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestNotHandled::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::TestNotHandled::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestNotHandled::Id, value,
                                chip::NullOptional
 
             );
@@ -51288,8 +51288,8 @@ class TestClusterSuite : public TestCommand
         case 3: {
             LogStep(3, "Send Test Specific Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestSpecific::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestSpecific::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::TestSpecific::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestSpecific::Id, value,
                                chip::NullOptional
 
             );
@@ -51297,10 +51297,10 @@ class TestClusterSuite : public TestCommand
         case 4: {
             LogStep(4, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 3U;
             value.arg2 = 17U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
@@ -51308,17 +51308,17 @@ class TestClusterSuite : public TestCommand
         case 5: {
             LogStep(5, "Send failing Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 250U;
             value.arg2 = 6U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
         }
         case 6: {
             LogStep(6, "Read attribute BOOLEAN Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 7: {
@@ -51326,12 +51326,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = 1;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "Read attribute BOOLEAN True");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 9: {
@@ -51339,141 +51339,141 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 10: {
             LogStep(10, "Read attribute BOOLEAN False");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 11: {
             LogStep(11, "Read attribute BITMAP8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 12: {
             LogStep(12, "Write attribute BITMAP8 Max Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(255U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, value,
+            chip::BitMask value;
+            value = static_cast>(255U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "Read attribute BITMAP8 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 14: {
             LogStep(14, "Write attribute BITMAP8 Min Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(0U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, value,
+            chip::BitMask value;
+            value = static_cast>(0U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "Read attribute BITMAP8 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 16: {
             LogStep(16, "Read attribute BITMAP16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 17: {
             LogStep(17, "Write attribute BITMAP16 Max Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(65535U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, value,
+            chip::BitMask value;
+            value = static_cast>(65535U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 18: {
             LogStep(18, "Read attribute BITMAP16 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 19: {
             LogStep(19, "Write attribute BITMAP16 Min Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(0U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, value,
+            chip::BitMask value;
+            value = static_cast>(0U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 20: {
             LogStep(20, "Read attribute BITMAP16 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 21: {
             LogStep(21, "Read attribute BITMAP32 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 22: {
             LogStep(22, "Write attribute BITMAP32 Max Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(4294967295UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, value,
+            chip::BitMask value;
+            value = static_cast>(4294967295UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 23: {
             LogStep(23, "Read attribute BITMAP32 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 24: {
             LogStep(24, "Write attribute BITMAP32 Min Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(0UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, value,
+            chip::BitMask value;
+            value = static_cast>(0UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 25: {
             LogStep(25, "Read attribute BITMAP32 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 26: {
             LogStep(26, "Read attribute BITMAP64 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 27: {
             LogStep(27, "Write attribute BITMAP64 Max Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(18446744073709551615ULL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, value,
+            chip::BitMask value;
+            value = static_cast>(18446744073709551615ULL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 28: {
             LogStep(28, "Read attribute BITMAP64 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 29: {
             LogStep(29, "Write attribute BITMAP64 Min Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(0ULL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, value,
+            chip::BitMask value;
+            value = static_cast>(0ULL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 30: {
             LogStep(30, "Read attribute BITMAP64 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 31: {
             LogStep(31, "Read attribute INT8U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 32: {
@@ -51481,12 +51481,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 255U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 33: {
             LogStep(33, "Read attribute INT8U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 34: {
@@ -51494,17 +51494,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 35: {
             LogStep(35, "Read attribute INT8U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 36: {
             LogStep(36, "Read attribute INT16U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 37: {
@@ -51512,12 +51512,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 65535U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 38: {
             LogStep(38, "Read attribute INT16U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 39: {
@@ -51525,17 +51525,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 40: {
             LogStep(40, "Read attribute INT16U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 41: {
             LogStep(41, "Read attribute INT32U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 42: {
@@ -51543,12 +51543,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 4294967295UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 43: {
             LogStep(43, "Read attribute INT32U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 44: {
@@ -51556,17 +51556,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 0UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 45: {
             LogStep(45, "Read attribute INT32U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 46: {
             LogStep(46, "Read attribute INT64U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 47: {
@@ -51574,12 +51574,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 18446744073709551615ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 48: {
             LogStep(48, "Read attribute INT64U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 49: {
@@ -51587,17 +51587,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 0ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 50: {
             LogStep(50, "Read attribute INT64U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 51: {
             LogStep(51, "Read attribute INT8S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 52: {
@@ -51605,12 +51605,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = 127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 53: {
             LogStep(53, "Read attribute INT8S Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 54: {
@@ -51618,12 +51618,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = -128;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 55: {
             LogStep(55, "Read attribute INT8S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 56: {
@@ -51631,17 +51631,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 57: {
             LogStep(57, "Read attribute INT8S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 58: {
             LogStep(58, "Read attribute INT16S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 59: {
@@ -51649,12 +51649,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = 32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 60: {
             LogStep(60, "Read attribute INT16S Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 61: {
@@ -51662,12 +51662,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = -32768;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 62: {
             LogStep(62, "Read attribute INT16S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 63: {
@@ -51675,17 +51675,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 64: {
             LogStep(64, "Read attribute INT16S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 65: {
             LogStep(65, "Read attribute INT32S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 66: {
@@ -51693,12 +51693,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int32_t value;
             value = 2147483647L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 67: {
             LogStep(67, "Read attribute INT32S Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 68: {
@@ -51706,12 +51706,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int32_t value;
             value = -2147483648L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 69: {
             LogStep(69, "Read attribute INT32S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 70: {
@@ -51719,17 +51719,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int32_t value;
             value = 0L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 71: {
             LogStep(71, "Read attribute INT32S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 72: {
             LogStep(72, "Read attribute INT64S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 73: {
@@ -51737,12 +51737,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int64_t value;
             value = 9223372036854775807LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 74: {
             LogStep(74, "Read attribute INT64S Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 75: {
@@ -51750,12 +51750,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int64_t value;
             value = -9223372036854775807LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 76: {
             LogStep(76, "Read attribute INT64S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 77: {
@@ -51763,17 +51763,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int64_t value;
             value = 0LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 78: {
             LogStep(78, "Read attribute INT64S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 79: {
             LogStep(79, "Read attribute SINGLE Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, true,
                                  chip::NullOptional);
         }
         case 80: {
@@ -51781,12 +51781,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             float value;
             value = 0.1f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 81: {
             LogStep(81, "Read attribute SINGLE medium Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, true,
                                  chip::NullOptional);
         }
         case 82: {
@@ -51794,12 +51794,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             float value;
             value = 17000000000.0f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 83: {
             LogStep(83, "Read attribute SINGLE large Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, true,
                                  chip::NullOptional);
         }
         case 84: {
@@ -51807,12 +51807,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             float value;
             value = 1.7e-10f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 85: {
             LogStep(85, "Read attribute SINGLE small Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, true,
                                  chip::NullOptional);
         }
         case 86: {
@@ -51820,17 +51820,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             float value;
             value = 0.0f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 87: {
             LogStep(87, "Read attribute SINGLE Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatSingle::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatSingle::Id, true,
                                  chip::NullOptional);
         }
         case 88: {
             LogStep(88, "Read attribute DOUBLE Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, true,
                                  chip::NullOptional);
         }
         case 89: {
@@ -51838,12 +51838,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             double value;
             value = 0.1234567890123;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 90: {
             LogStep(90, "Read attribute DOUBLE medium Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, true,
                                  chip::NullOptional);
         }
         case 91: {
@@ -51851,12 +51851,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             double value;
             value = 1.7e+200;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 92: {
             LogStep(92, "Read attribute DOUBLE large Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, true,
                                  chip::NullOptional);
         }
         case 93: {
@@ -51864,12 +51864,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             double value;
             value = 1.7e-200;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 94: {
             LogStep(94, "Read attribute DOUBLE small Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, true,
                                  chip::NullOptional);
         }
         case 95: {
@@ -51877,17 +51877,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             double value;
             value = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 96: {
             LogStep(96, "Read attribute DOUBLE Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::FloatDouble::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::FloatDouble::Id, true,
                                  chip::NullOptional);
         }
         case 97: {
             LogStep(97, "Read attribute ENUM8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 98: {
@@ -51895,12 +51895,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 255U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 99: {
             LogStep(99, "Read attribute ENUM8 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 100: {
@@ -51908,17 +51908,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 101: {
             LogStep(101, "Read attribute ENUM8 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 102: {
             LogStep(102, "Read attribute ENUM16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 103: {
@@ -51926,12 +51926,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 65535U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 104: {
             LogStep(104, "Read attribute ENUM16 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 105: {
@@ -51939,17 +51939,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 106: {
             LogStep(106, "Read attribute ENUM16 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 107: {
             LogStep(107, "Read attribute OCTET_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 108: {
@@ -51957,12 +51957,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("Tes\000ti\000nggarbage: not in length on purpose"), 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 109: {
             LogStep(109, "Read attribute OCTET_STRING with embedded null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 110: {
@@ -51970,12 +51970,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("\x00\x01\x02\x03\x04\x05garbage: not in length on purpose"), 6);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 111: {
             LogStep(111, "Read attribute OCTET_STRING with hex: format");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 112: {
@@ -51983,12 +51983,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("\015\012\377\042\240garbage: not in length on purpose"), 5);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 113: {
             LogStep(113, "Read attribute OCTET_STRING with weird chars");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 114: {
@@ -51996,12 +51996,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("TestValuegarbage: not in length on purpose"), 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 115: {
             LogStep(115, "Read attribute OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 116: {
@@ -52009,12 +52009,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("TestValueLongerThan10garbage: not in length on purpose"), 21);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 117: {
             LogStep(117, "Read attribute OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 118: {
@@ -52022,12 +52022,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("garbage: not in length on purpose"), 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 119: {
             LogStep(119, "Read attribute LONG_OCTET_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 120: {
@@ -52040,12 +52040,12 @@ class TestClusterSuite : public TestCommand
                                              "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
                                              "111111111111111111111111111111111111111111111garbage: not in length on purpose"),
                 300);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 121: {
             LogStep(121, "Read attribute LONG_OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 122: {
@@ -52053,12 +52053,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("garbage: not in length on purpose"), 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 123: {
             LogStep(123, "Read attribute CHAR_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 124: {
@@ -52066,12 +52066,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("☉T☉garbage: not in length on purpose", 7);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 125: {
             LogStep(125, "Read attribute CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 126: {
@@ -52079,12 +52079,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("☉TestValueLongerThan10☉garbage: not in length on purpose", 27);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 127: {
             LogStep(127, "Read attribute CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 128: {
@@ -52092,12 +52092,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("garbage: not in length on purpose", 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 129: {
             LogStep(129, "Read attribute LONG_CHAR_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongCharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongCharString::Id, true,
                                  chip::NullOptional);
         }
         case 130: {
@@ -52109,12 +52109,12 @@ class TestClusterSuite : public TestCommand
                 "☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉"
                 "☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉☉garbage: not in length on purpose",
                 900);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongCharString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongCharString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 131: {
             LogStep(131, "Read attribute LONG_CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongCharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongCharString::Id, true,
                                  chip::NullOptional);
         }
         case 132: {
@@ -52122,12 +52122,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("garbage: not in length on purpose", 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::LongCharString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::LongCharString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 133: {
             LogStep(133, "Read attribute LIST_LONG_OCTET_STRING (for chunked read)");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListLongOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListLongOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 134: {
@@ -52185,17 +52185,17 @@ class TestClusterSuite : public TestCommand
                     512);
                 value = chip::app::DataModel::List(listHolder_0->mList, 5);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListLongOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListLongOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 135: {
             LogStep(135, "Read attribute LIST_LONG_OCTET_STRING (for chunked read)");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListLongOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListLongOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 136: {
             LogStep(136, "Read attribute EPOCH_US Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 137: {
@@ -52203,12 +52203,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 18446744073709551615ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 138: {
             LogStep(138, "Read attribute EPOCH_US Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 139: {
@@ -52216,17 +52216,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 0ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 140: {
             LogStep(140, "Read attribute EPOCH_US Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 141: {
             LogStep(141, "Read attribute EPOCH_S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 142: {
@@ -52234,12 +52234,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 4294967295UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 143: {
             LogStep(143, "Read attribute EPOCH_S Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 144: {
@@ -52247,17 +52247,17 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 0UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 145: {
             LogStep(145, "Read attribute EPOCH_S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 146: {
             LogStep(146, "Read attribute UNSUPPORTED");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Unsupported::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Unsupported::Id, true,
                                  chip::NullOptional);
         }
         case 147: {
@@ -52265,14 +52265,14 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Unsupported::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Unsupported::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 148: {
             LogStep(148, "Send Test Command to unsupported endpoint");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::Test::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(200), TestCluster::Id, TestCluster::Commands::Test::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::Test::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(200), UnitTesting::Id, UnitTesting::Commands::Test::Id, value,
                                chip::NullOptional
 
             );
@@ -52280,15 +52280,15 @@ class TestClusterSuite : public TestCommand
         case 149: {
             LogStep(149, "Send Test Command to unsupported cluster");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::Test::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(0), TestCluster::Id, TestCluster::Commands::Test::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::Test::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(0), UnitTesting::Id, UnitTesting::Commands::Test::Id, value,
                                chip::NullOptional
 
             );
         }
         case 150: {
             LogStep(150, "Read attribute vendor_id Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, true,
                                  chip::NullOptional);
         }
         case 151: {
@@ -52296,12 +52296,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::VendorId value;
             value = static_cast(17);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 152: {
             LogStep(152, "Read attribute vendor_id");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, true,
                                  chip::NullOptional);
         }
         case 153: {
@@ -52309,16 +52309,16 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::VendorId value;
             value = static_cast(0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 154: {
             LogStep(154, "Send a command with a vendor_id and enum");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestEnumsRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestEnumsRequest::Type value;
             value.arg1 = static_cast(20003);
-            value.arg2 = static_cast(1);
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestEnumsRequest::Id, value,
+            value.arg2 = static_cast(1);
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestEnumsRequest::Id, value,
                                chip::NullOptional
 
             );
@@ -52326,10 +52326,10 @@ class TestClusterSuite : public TestCommand
         case 155: {
             LogStep(155, "Send a command with a vendor_id and invalid enum");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestEnumsRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestEnumsRequest::Type value;
             value.arg1 = static_cast(20003);
-            value.arg2 = static_cast(101);
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestEnumsRequest::Id, value,
+            value.arg2 = static_cast(101);
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestEnumsRequest::Id, value,
                                chip::NullOptional
 
             );
@@ -52337,127 +52337,127 @@ class TestClusterSuite : public TestCommand
         case 156: {
             LogStep(156, "Send Test Command With Struct Argument and arg1.b is true");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestStructArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = true;
-            value.arg1.c = static_cast(2);
+            value.arg1.c = static_cast(2);
             value.arg1.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.f = static_cast>(1U);
+            value.arg1.f = static_cast>(1U);
             value.arg1.g = 0.0f;
             value.arg1.h = 0;
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 157: {
             LogStep(157, "Send Test Command With Struct Argument and arg1.b is false");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestStructArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = false;
-            value.arg1.c = static_cast(2);
+            value.arg1.c = static_cast(2);
             value.arg1.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.f = static_cast>(1U);
+            value.arg1.f = static_cast>(1U);
             value.arg1.g = 0.0f;
             value.arg1.h = 0;
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 158: {
             LogStep(158, "Send Test Command With Nested Struct Argument and arg1.c.b is true");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNestedStructArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = true;
 
             value.arg1.c.a = 0U;
             value.arg1.c.b = true;
-            value.arg1.c.c = static_cast(2);
+            value.arg1.c.c = static_cast(2);
             value.arg1.c.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.c.f = static_cast>(1U);
+            value.arg1.c.f = static_cast>(1U);
             value.arg1.c.g = 0.0f;
             value.arg1.c.h = 0;
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNestedStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNestedStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 159: {
             LogStep(159, "Send Test Command With Nested Struct Argument arg1.c.b is false");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNestedStructArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = true;
 
             value.arg1.c.a = 0U;
             value.arg1.c.b = false;
-            value.arg1.c.c = static_cast(2);
+            value.arg1.c.c = static_cast(2);
             value.arg1.c.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.c.f = static_cast>(1U);
+            value.arg1.c.f = static_cast>(1U);
             value.arg1.c.g = 0.0f;
             value.arg1.c.h = 0;
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNestedStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNestedStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 160: {
             LogStep(160, "Send Test Command With Nested Struct List Argument and all fields b of arg1.d are true");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNestedStructListArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = true;
 
             value.arg1.c.a = 0U;
             value.arg1.c.b = true;
-            value.arg1.c.c = static_cast(2);
+            value.arg1.c.c = static_cast(2);
             value.arg1.c.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.c.f = static_cast>(1U);
+            value.arg1.c.f = static_cast>(1U);
             value.arg1.c.g = 0.0f;
             value.arg1.c.h = 0;
 
             {
-                auto * listHolder_1 = new ListHolder(2);
+                auto * listHolder_1 = new ListHolder(2);
                 listFreer.add(listHolder_1);
 
                 listHolder_1->mList[0].a = 1U;
                 listHolder_1->mList[0].b = true;
-                listHolder_1->mList[0].c = static_cast(3);
+                listHolder_1->mList[0].c = static_cast(3);
                 listHolder_1->mList[0].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_1->mList[0].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                listHolder_1->mList[0].f = static_cast>(1U);
+                listHolder_1->mList[0].f = static_cast>(1U);
                 listHolder_1->mList[0].g = 0.0f;
                 listHolder_1->mList[0].h = 0;
 
                 listHolder_1->mList[1].a = 2U;
                 listHolder_1->mList[1].b = true;
-                listHolder_1->mList[1].c = static_cast(3);
+                listHolder_1->mList[1].c = static_cast(3);
                 listHolder_1->mList[1].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_1->mList[1].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                listHolder_1->mList[1].f = static_cast>(1U);
+                listHolder_1->mList[1].f = static_cast>(1U);
                 listHolder_1->mList[1].g = 0.0f;
                 listHolder_1->mList[1].h = 0;
 
-                value.arg1.d = chip::app::DataModel::List(
+                value.arg1.d = chip::app::DataModel::List(
                     listHolder_1->mList, 2);
             }
 
@@ -52490,53 +52490,53 @@ class TestClusterSuite : public TestCommand
                 value.arg1.g           = chip::app::DataModel::List(listHolder_1->mList, 2);
             }
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNestedStructListArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNestedStructListArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 161: {
             LogStep(161, "Send Test Command With Nested Struct List Argument and some fields b of arg1.d are false");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNestedStructListArgumentRequest::Type value;
 
             value.arg1.a = 0U;
             value.arg1.b = true;
 
             value.arg1.c.a = 0U;
             value.arg1.c.b = true;
-            value.arg1.c.c = static_cast(2);
+            value.arg1.c.c = static_cast(2);
             value.arg1.c.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.c.f = static_cast>(1U);
+            value.arg1.c.f = static_cast>(1U);
             value.arg1.c.g = 0.0f;
             value.arg1.c.h = 0;
 
             {
-                auto * listHolder_1 = new ListHolder(2);
+                auto * listHolder_1 = new ListHolder(2);
                 listFreer.add(listHolder_1);
 
                 listHolder_1->mList[0].a = 1U;
                 listHolder_1->mList[0].b = true;
-                listHolder_1->mList[0].c = static_cast(3);
+                listHolder_1->mList[0].c = static_cast(3);
                 listHolder_1->mList[0].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_1->mList[0].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                listHolder_1->mList[0].f = static_cast>(1U);
+                listHolder_1->mList[0].f = static_cast>(1U);
                 listHolder_1->mList[0].g = 0.0f;
                 listHolder_1->mList[0].h = 0;
 
                 listHolder_1->mList[1].a = 2U;
                 listHolder_1->mList[1].b = false;
-                listHolder_1->mList[1].c = static_cast(3);
+                listHolder_1->mList[1].c = static_cast(3);
                 listHolder_1->mList[1].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_1->mList[1].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                listHolder_1->mList[1].f = static_cast>(1U);
+                listHolder_1->mList[1].f = static_cast>(1U);
                 listHolder_1->mList[1].g = 0.0f;
                 listHolder_1->mList[1].h = 0;
 
-                value.arg1.d = chip::app::DataModel::List(
+                value.arg1.d = chip::app::DataModel::List(
                     listHolder_1->mList, 2);
             }
 
@@ -52569,26 +52569,26 @@ class TestClusterSuite : public TestCommand
                 value.arg1.g           = chip::app::DataModel::List(listHolder_1->mList, 2);
             }
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNestedStructListArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNestedStructListArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 162: {
             LogStep(162, "Send Test Command With Struct Argument and see what we get back");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::SimpleStructEchoRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::SimpleStructEchoRequest::Type value;
 
             value.arg1.a = 17U;
             value.arg1.b = false;
-            value.arg1.c = static_cast(2);
+            value.arg1.c = static_cast(2);
             value.arg1.d = chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
             value.arg1.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-            value.arg1.f = static_cast>(1U);
+            value.arg1.f = static_cast>(1U);
             value.arg1.g = 0.1f;
             value.arg1.h = 0.1;
 
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::SimpleStructEchoRequest::Id,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::SimpleStructEchoRequest::Id,
                                value, chip::NullOptional
 
             );
@@ -52596,7 +52596,7 @@ class TestClusterSuite : public TestCommand
         case 163: {
             LogStep(163, "Send Test Command With List of INT8U and none of them is set to 0");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListInt8UArgumentRequest::Type value;
 
             {
                 auto * listHolder_0 = new ListHolder(9);
@@ -52612,15 +52612,15 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[8] = 9U;
                 value.arg1             = chip::app::DataModel::List(listHolder_0->mList, 9);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListInt8UArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListInt8UArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 164: {
             LogStep(164, "Send Test Command With List of INT8U and one of them is set to 0");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListInt8UArgumentRequest::Type value;
 
             {
                 auto * listHolder_0 = new ListHolder(10);
@@ -52637,15 +52637,15 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[9] = 0U;
                 value.arg1             = chip::app::DataModel::List(listHolder_0->mList, 10);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListInt8UArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListInt8UArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 165: {
             LogStep(165, "Send Test Command With List of INT8U and get it reversed");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseRequest::Type value;
 
             {
                 auto * listHolder_0 = new ListHolder(9);
@@ -52661,93 +52661,93 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[8] = 9U;
                 value.arg1             = chip::app::DataModel::List(listHolder_0->mList, 9);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListInt8UReverseRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListInt8UReverseRequest::Id, value, chip::NullOptional
 
             );
         }
         case 166: {
             LogStep(166, "Send Test Command With empty List of INT8U and get an empty list back");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseRequest::Type value;
 
             value.arg1 = chip::app::DataModel::List();
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListInt8UReverseRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListInt8UReverseRequest::Id, value, chip::NullOptional
 
             );
         }
         case 167: {
             LogStep(167, "Send Test Command With List of Struct Argument and arg1.b of first item is true");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListStructArgumentRequest::Type value;
 
             {
-                auto * listHolder_0 = new ListHolder(2);
+                auto * listHolder_0 = new ListHolder(2);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].a = 0U;
                 listHolder_0->mList[0].b = true;
-                listHolder_0->mList[0].c = static_cast(2);
+                listHolder_0->mList[0].c = static_cast(2);
                 listHolder_0->mList[0].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("first_octet_stringgarbage: not in length on purpose"), 18);
                 listHolder_0->mList[0].e = chip::Span("first_char_stringgarbage: not in length on purpose", 17);
-                listHolder_0->mList[0].f = static_cast>(1U);
+                listHolder_0->mList[0].f = static_cast>(1U);
                 listHolder_0->mList[0].g = 0.0f;
                 listHolder_0->mList[0].h = 0;
 
                 listHolder_0->mList[1].a = 1U;
                 listHolder_0->mList[1].b = true;
-                listHolder_0->mList[1].c = static_cast(3);
+                listHolder_0->mList[1].c = static_cast(3);
                 listHolder_0->mList[1].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("second_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_0->mList[1].e = chip::Span("second_char_stringgarbage: not in length on purpose", 18);
-                listHolder_0->mList[1].f = static_cast>(1U);
+                listHolder_0->mList[1].f = static_cast>(1U);
                 listHolder_0->mList[1].g = 0.0f;
                 listHolder_0->mList[1].h = 0;
 
-                value.arg1 = chip::app::DataModel::List(
+                value.arg1 = chip::app::DataModel::List(
                     listHolder_0->mList, 2);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 168: {
             LogStep(168, "Send Test Command With List of Struct Argument and arg1.b of first item is false");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListStructArgumentRequest::Type value;
 
             {
-                auto * listHolder_0 = new ListHolder(2);
+                auto * listHolder_0 = new ListHolder(2);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].a = 1U;
                 listHolder_0->mList[0].b = true;
-                listHolder_0->mList[0].c = static_cast(3);
+                listHolder_0->mList[0].c = static_cast(3);
                 listHolder_0->mList[0].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("second_octet_stringgarbage: not in length on purpose"), 19);
                 listHolder_0->mList[0].e = chip::Span("second_char_stringgarbage: not in length on purpose", 18);
-                listHolder_0->mList[0].f = static_cast>(1U);
+                listHolder_0->mList[0].f = static_cast>(1U);
                 listHolder_0->mList[0].g = 0.0f;
                 listHolder_0->mList[0].h = 0;
 
                 listHolder_0->mList[1].a = 0U;
                 listHolder_0->mList[1].b = false;
-                listHolder_0->mList[1].c = static_cast(2);
+                listHolder_0->mList[1].c = static_cast(2);
                 listHolder_0->mList[1].d =
                     chip::ByteSpan(chip::Uint8::from_const_char("first_octet_stringgarbage: not in length on purpose"), 18);
                 listHolder_0->mList[1].e = chip::Span("first_char_stringgarbage: not in length on purpose", 17);
-                listHolder_0->mList[1].f = static_cast>(1U);
+                listHolder_0->mList[1].f = static_cast>(1U);
                 listHolder_0->mList[1].g = 0.0f;
                 listHolder_0->mList[1].h = 0;
 
-                value.arg1 = chip::app::DataModel::List(
+                value.arg1 = chip::app::DataModel::List(
                     listHolder_0->mList, 2);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListStructArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListStructArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
@@ -52755,10 +52755,10 @@ class TestClusterSuite : public TestCommand
             LogStep(169,
                     "Send Test Command With List of Nested Struct List Argument and all fields b of elements of arg1.d are true");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type value;
 
             {
-                auto * listHolder_0 = new ListHolder(1);
+                auto * listHolder_0 = new ListHolder(1);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].a = 0U;
@@ -52766,40 +52766,40 @@ class TestClusterSuite : public TestCommand
 
                 listHolder_0->mList[0].c.a = 0U;
                 listHolder_0->mList[0].c.b = true;
-                listHolder_0->mList[0].c.c = static_cast(2);
+                listHolder_0->mList[0].c.c = static_cast(2);
                 listHolder_0->mList[0].c.d =
                     chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
                 listHolder_0->mList[0].c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-                listHolder_0->mList[0].c.f = static_cast>(1U);
+                listHolder_0->mList[0].c.f = static_cast>(1U);
                 listHolder_0->mList[0].c.g = 0.0f;
                 listHolder_0->mList[0].c.h = 0;
 
                 {
-                    auto * listHolder_2 = new ListHolder(2);
+                    auto * listHolder_2 = new ListHolder(2);
                     listFreer.add(listHolder_2);
 
                     listHolder_2->mList[0].a = 1U;
                     listHolder_2->mList[0].b = true;
-                    listHolder_2->mList[0].c = static_cast(3);
+                    listHolder_2->mList[0].c = static_cast(3);
                     listHolder_2->mList[0].d =
                         chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                     listHolder_2->mList[0].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                    listHolder_2->mList[0].f = static_cast>(1U);
+                    listHolder_2->mList[0].f = static_cast>(1U);
                     listHolder_2->mList[0].g = 0.0f;
                     listHolder_2->mList[0].h = 0;
 
                     listHolder_2->mList[1].a = 2U;
                     listHolder_2->mList[1].b = true;
-                    listHolder_2->mList[1].c = static_cast(3);
+                    listHolder_2->mList[1].c = static_cast(3);
                     listHolder_2->mList[1].d =
                         chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                     listHolder_2->mList[1].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                    listHolder_2->mList[1].f = static_cast>(1U);
+                    listHolder_2->mList[1].f = static_cast>(1U);
                     listHolder_2->mList[1].g = 0.0f;
                     listHolder_2->mList[1].h = 0;
 
                     listHolder_0->mList[0].d =
-                        chip::app::DataModel::List(
+                        chip::app::DataModel::List(
                             listHolder_2->mList, 2);
                 }
 
@@ -52832,21 +52832,21 @@ class TestClusterSuite : public TestCommand
                     listHolder_0->mList[0].g = chip::app::DataModel::List(listHolder_2->mList, 2);
                 }
 
-                value.arg1 = chip::app::DataModel::List(
+                value.arg1 = chip::app::DataModel::List(
                     listHolder_0->mList, 1);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListNestedStructListArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListNestedStructListArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 170: {
             LogStep(170, "Send Test Command With Nested Struct List Argument and some fields b of elements of arg1.d are false");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type value;
 
             {
-                auto * listHolder_0 = new ListHolder(1);
+                auto * listHolder_0 = new ListHolder(1);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].a = 0U;
@@ -52854,40 +52854,40 @@ class TestClusterSuite : public TestCommand
 
                 listHolder_0->mList[0].c.a = 0U;
                 listHolder_0->mList[0].c.b = true;
-                listHolder_0->mList[0].c.c = static_cast(2);
+                listHolder_0->mList[0].c.c = static_cast(2);
                 listHolder_0->mList[0].c.d =
                     chip::ByteSpan(chip::Uint8::from_const_char("octet_stringgarbage: not in length on purpose"), 12);
                 listHolder_0->mList[0].c.e = chip::Span("char_stringgarbage: not in length on purpose", 11);
-                listHolder_0->mList[0].c.f = static_cast>(1U);
+                listHolder_0->mList[0].c.f = static_cast>(1U);
                 listHolder_0->mList[0].c.g = 0.0f;
                 listHolder_0->mList[0].c.h = 0;
 
                 {
-                    auto * listHolder_2 = new ListHolder(2);
+                    auto * listHolder_2 = new ListHolder(2);
                     listFreer.add(listHolder_2);
 
                     listHolder_2->mList[0].a = 1U;
                     listHolder_2->mList[0].b = true;
-                    listHolder_2->mList[0].c = static_cast(3);
+                    listHolder_2->mList[0].c = static_cast(3);
                     listHolder_2->mList[0].d =
                         chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                     listHolder_2->mList[0].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                    listHolder_2->mList[0].f = static_cast>(1U);
+                    listHolder_2->mList[0].f = static_cast>(1U);
                     listHolder_2->mList[0].g = 0.0f;
                     listHolder_2->mList[0].h = 0;
 
                     listHolder_2->mList[1].a = 2U;
                     listHolder_2->mList[1].b = false;
-                    listHolder_2->mList[1].c = static_cast(3);
+                    listHolder_2->mList[1].c = static_cast(3);
                     listHolder_2->mList[1].d =
                         chip::ByteSpan(chip::Uint8::from_const_char("nested_octet_stringgarbage: not in length on purpose"), 19);
                     listHolder_2->mList[1].e = chip::Span("nested_char_stringgarbage: not in length on purpose", 18);
-                    listHolder_2->mList[1].f = static_cast>(1U);
+                    listHolder_2->mList[1].f = static_cast>(1U);
                     listHolder_2->mList[1].g = 0.0f;
                     listHolder_2->mList[1].h = 0;
 
                     listHolder_0->mList[0].d =
-                        chip::app::DataModel::List(
+                        chip::app::DataModel::List(
                             listHolder_2->mList, 2);
                 }
 
@@ -52920,11 +52920,11 @@ class TestClusterSuite : public TestCommand
                     listHolder_0->mList[0].g = chip::app::DataModel::List(listHolder_2->mList, 2);
                 }
 
-                value.arg1 = chip::app::DataModel::List(
+                value.arg1 = chip::app::DataModel::List(
                     listHolder_0->mList, 1);
             }
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestListNestedStructListArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestListNestedStructListArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
@@ -52942,12 +52942,12 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[3] = 4U;
                 value                  = chip::app::DataModel::List(listHolder_0->mList, 4);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 172: {
             LogStep(172, "Read attribute LIST With List of INT8U");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 173: {
@@ -52964,21 +52964,21 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[3] = chip::ByteSpan(chip::Uint8::from_const_char("Test3garbage: not in length on purpose"), 5);
                 value                  = chip::app::DataModel::List(listHolder_0->mList, 4);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 174: {
             LogStep(174, "Read attribute LIST With List of OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 175: {
             LogStep(175, "Write attribute LIST With List of LIST_STRUCT_OCTET_STRING");
             ListFreer listFreer;
-            chip::app::DataModel::List value;
+            chip::app::DataModel::List value;
 
             {
-                auto * listHolder_0 = new ListHolder(4);
+                auto * listHolder_0 = new ListHolder(4);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].member1 = 0ULL;
@@ -52997,52 +52997,52 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[3].member2 =
                     chip::ByteSpan(chip::Uint8::from_const_char("Test3garbage: not in length on purpose"), 5);
 
-                value = chip::app::DataModel::List(
+                value = chip::app::DataModel::List(
                     listHolder_0->mList, 4);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::ListStructOctetString::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::ListStructOctetString::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 176: {
             LogStep(176, "Read attribute LIST With List of LIST_STRUCT_OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::ListStructOctetString::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::ListStructOctetString::Id, true, chip::NullOptional);
         }
         case 177: {
             LogStep(177, "Send Test Command with optional arg set.");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::Type value;
             value.arg1.Emplace();
             value.arg1.Value().SetNonNull();
             value.arg1.Value().Value() = 5U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
 
             );
         }
         case 178: {
             LogStep(178, "Send Test Command without its optional arg.");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
+            chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
 
             );
         }
         case 179: {
             LogStep(179, "Read list of structs containing nullables and optionals");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::ListNullablesAndOptionalsStruct::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::ListNullablesAndOptionalsStruct::Id, true, chip::NullOptional);
         }
         case 180: {
             LogStep(180, "Write list of structs containing nullables and optionals");
             ListFreer listFreer;
-            chip::app::DataModel::List value;
+            chip::app::DataModel::List value;
 
             {
                 auto * listHolder_0 =
-                    new ListHolder(1);
+                    new ListHolder(1);
                 listFreer.add(listHolder_0);
 
                 listHolder_0->mList[0].nullableInt.SetNull();
@@ -53051,37 +53051,37 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[0].nullableList.SetNonNull();
 
                 {
-                    auto * listHolder_3 = new ListHolder(2);
+                    auto * listHolder_3 = new ListHolder(2);
                     listFreer.add(listHolder_3);
-                    listHolder_3->mList[0] = static_cast(1);
-                    listHolder_3->mList[1] = static_cast(2);
+                    listHolder_3->mList[0] = static_cast(1);
+                    listHolder_3->mList[1] = static_cast(2);
                     listHolder_0->mList[0].nullableList.Value() =
-                        chip::app::DataModel::List(listHolder_3->mList, 2);
+                        chip::app::DataModel::List(listHolder_3->mList, 2);
                 }
 
-                value = chip::app::DataModel::List(
+                value = chip::app::DataModel::List(
                     listHolder_0->mList, 1);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::ListNullablesAndOptionalsStruct::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::ListNullablesAndOptionalsStruct::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 181: {
             LogStep(181, "Read list of structs containing nullables and optionals after writing");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::ListNullablesAndOptionalsStruct::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::ListNullablesAndOptionalsStruct::Id, true, chip::NullOptional);
         }
         case 182: {
             LogStep(182, "Write attribute NULLABLE_BOOLEAN null");
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBoolean::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 183: {
             LogStep(183, "Read attribute NULLABLE_BOOLEAN null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 184: {
@@ -53090,186 +53090,186 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBoolean::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 185: {
             LogStep(185, "Read attribute NULLABLE_BOOLEAN True");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 186: {
             LogStep(186, "Read attribute NULLABLE_BOOLEAN not null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 187: {
             LogStep(187, "Write attribute NULLABLE_BITMAP8 Max Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(254U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            value.Value() = static_cast>(254U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 188: {
             LogStep(188, "Read attribute NULLABLE_BITMAP8 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                  true, chip::NullOptional);
         }
         case 189: {
             LogStep(189, "Write attribute NULLABLE_BITMAP8 Invalid Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(255U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            value.Value() = static_cast>(255U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 190: {
             LogStep(190, "Read attribute NULLABLE_BITMAP8 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                  true, chip::NullOptional);
         }
         case 191: {
             LogStep(191, "Write attribute NULLABLE_BITMAP8 null Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 192: {
             LogStep(192, "Read attribute NULLABLE_BITMAP8 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                  true, chip::NullOptional);
         }
         case 193: {
             LogStep(193, "Read attribute NULLABLE_BITMAP8 not 254 Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap8::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap8::Id,
                                  true, chip::NullOptional);
         }
         case 194: {
             LogStep(194, "Write attribute NULLABLE_BITMAP16 Max Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(65534U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            value.Value() = static_cast>(65534U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 195: {
             LogStep(195, "Read attribute NULLABLE_BITMAP16 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                  true, chip::NullOptional);
         }
         case 196: {
             LogStep(196, "Write attribute NULLABLE_BITMAP16 Invalid Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(65535U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            value.Value() = static_cast>(65535U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 197: {
             LogStep(197, "Read attribute NULLABLE_BITMAP16 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                  true, chip::NullOptional);
         }
         case 198: {
             LogStep(198, "Write attribute NULLABLE_BITMAP16 null Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 199: {
             LogStep(199, "Read attribute NULLABLE_BITMAP16 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap16::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap16::Id,
                                  true, chip::NullOptional);
         }
         case 200: {
             LogStep(200, "Write attribute NULLABLE_BITMAP32 Max Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(4294967294UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            value.Value() = static_cast>(4294967294UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 201: {
             LogStep(201, "Read attribute NULLABLE_BITMAP32 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                  true, chip::NullOptional);
         }
         case 202: {
             LogStep(202, "Write attribute NULLABLE_BITMAP32 Invalid Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(4294967295UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            value.Value() = static_cast>(4294967295UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 203: {
             LogStep(203, "Read attribute NULLABLE_BITMAP32 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                  true, chip::NullOptional);
         }
         case 204: {
             LogStep(204, "Write attribute NULLABLE_BITMAP32 null Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 205: {
             LogStep(205, "Read attribute NULLABLE_BITMAP32 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap32::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap32::Id,
                                  true, chip::NullOptional);
         }
         case 206: {
             LogStep(206, "Write attribute NULLABLE_BITMAP64 Max Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(18446744073709551614ULL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            value.Value() = static_cast>(18446744073709551614ULL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 207: {
             LogStep(207, "Read attribute NULLABLE_BITMAP64 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                  true, chip::NullOptional);
         }
         case 208: {
             LogStep(208, "Write attribute NULLABLE_BITMAP64 Invalid Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNonNull();
-            value.Value() = static_cast>(18446744073709551615ULL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            value.Value() = static_cast>(18446744073709551615ULL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 209: {
             LogStep(209, "Read attribute NULLABLE_BITMAP64 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                  true, chip::NullOptional);
         }
         case 210: {
             LogStep(210, "Write attribute NULLABLE_BITMAP64 null Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable> value;
+            chip::app::DataModel::Nullable> value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 211: {
             LogStep(211, "Read attribute NULLABLE_BITMAP64 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableBitmap64::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableBitmap64::Id,
                                  true, chip::NullOptional);
         }
         case 212: {
@@ -53278,12 +53278,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 213: {
             LogStep(213, "Read attribute NULLABLE_INT8U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 214: {
@@ -53292,12 +53292,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 254U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 215: {
             LogStep(215, "Read attribute NULLABLE_INT8U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 216: {
@@ -53306,17 +53306,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 255U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 217: {
             LogStep(217, "Read attribute NULLABLE_INT8U unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 218: {
             LogStep(218, "Read attribute NULLABLE_INT8U unchanged Value with constraint");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 219: {
@@ -53324,22 +53324,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 220: {
             LogStep(220, "Read attribute NULLABLE_INT8U null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 221: {
             LogStep(221, "Read attribute NULLABLE_INT8U null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 222: {
             LogStep(222, "Read attribute NULLABLE_INT8U null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 223: {
@@ -53348,17 +53348,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 128U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 224: {
             LogStep(224, "Read attribute NULLABLE_INT8U Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 225: {
             LogStep(225, "Read attribute NULLABLE_INT8U notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 226: {
@@ -53367,12 +53367,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 227: {
             LogStep(227, "Read attribute NULLABLE_INT16U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 228: {
@@ -53381,12 +53381,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 65534U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 229: {
             LogStep(229, "Read attribute NULLABLE_INT16U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 230: {
@@ -53395,12 +53395,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 65535U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 231: {
             LogStep(231, "Read attribute NULLABLE_INT16U unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 232: {
@@ -53408,22 +53408,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 233: {
             LogStep(233, "Read attribute NULLABLE_INT16U null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 234: {
             LogStep(234, "Read attribute NULLABLE_INT16U null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 235: {
             LogStep(235, "Read attribute NULLABLE_INT16U null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 236: {
@@ -53432,17 +53432,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 32000U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 237: {
             LogStep(237, "Read attribute NULLABLE_INT16U Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 238: {
             LogStep(238, "Read attribute NULLABLE_INT16U notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16u::Id, true,
                                  chip::NullOptional);
         }
         case 239: {
@@ -53451,12 +53451,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 240: {
             LogStep(240, "Read attribute NULLABLE_INT32U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 241: {
@@ -53465,12 +53465,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 4294967294UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 242: {
             LogStep(242, "Read attribute NULLABLE_INT32U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 243: {
@@ -53479,12 +53479,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 4294967295UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 244: {
             LogStep(244, "Read attribute NULLABLE_INT32U unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 245: {
@@ -53492,22 +53492,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 246: {
             LogStep(246, "Read attribute NULLABLE_INT32U null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 247: {
             LogStep(247, "Read attribute NULLABLE_INT32U null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 248: {
             LogStep(248, "Read attribute NULLABLE_INT32U null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 249: {
@@ -53516,17 +53516,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 2147483647UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 250: {
             LogStep(250, "Read attribute NULLABLE_INT32U Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 251: {
             LogStep(251, "Read attribute NULLABLE_INT32U notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32u::Id, true,
                                  chip::NullOptional);
         }
         case 252: {
@@ -53535,12 +53535,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 253: {
             LogStep(253, "Read attribute NULLABLE_INT64U Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 254: {
@@ -53549,12 +53549,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 18446744073709551614ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 255: {
             LogStep(255, "Read attribute NULLABLE_INT64U Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 256: {
@@ -53563,12 +53563,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 18446744073709551615ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 257: {
             LogStep(257, "Read attribute NULLABLE_INT64U unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 258: {
@@ -53576,22 +53576,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 259: {
             LogStep(259, "Read attribute NULLABLE_INT64U null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 260: {
             LogStep(260, "Read attribute NULLABLE_INT64U null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 261: {
             LogStep(261, "Read attribute NULLABLE_INT64U null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 262: {
@@ -53600,17 +53600,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 18000000000000000000ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 263: {
             LogStep(263, "Read attribute NULLABLE_INT64U Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 264: {
             LogStep(264, "Read attribute NULLABLE_INT64U notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64u::Id, true,
                                  chip::NullOptional);
         }
         case 265: {
@@ -53619,12 +53619,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 266: {
             LogStep(266, "Read attribute NULLABLE_INT8S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 267: {
@@ -53633,12 +53633,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -128;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 268: {
             LogStep(268, "Read attribute NULLABLE_INT8S unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 269: {
@@ -53646,22 +53646,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 270: {
             LogStep(270, "Read attribute NULLABLE_INT8S null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 271: {
             LogStep(271, "Read attribute NULLABLE_INT8S null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 272: {
             LogStep(272, "Read attribute NULLABLE_INT8S null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 273: {
@@ -53670,17 +53670,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 274: {
             LogStep(274, "Read attribute NULLABLE_INT8S Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 275: {
             LogStep(275, "Read attribute NULLABLE_INT8S notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt8s::Id, true,
                                  chip::NullOptional);
         }
         case 276: {
@@ -53689,12 +53689,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 277: {
             LogStep(277, "Read attribute NULLABLE_INT16S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 278: {
@@ -53703,12 +53703,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -32768;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 279: {
             LogStep(279, "Read attribute NULLABLE_INT16S unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 280: {
@@ -53716,22 +53716,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 281: {
             LogStep(281, "Read attribute NULLABLE_INT16S null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 282: {
             LogStep(282, "Read attribute NULLABLE_INT16S null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 283: {
             LogStep(283, "Read attribute NULLABLE_INT16S null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 284: {
@@ -53740,17 +53740,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 285: {
             LogStep(285, "Read attribute NULLABLE_INT16S Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 286: {
             LogStep(286, "Read attribute NULLABLE_INT16S notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt16s::Id, true,
                                  chip::NullOptional);
         }
         case 287: {
@@ -53759,12 +53759,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -2147483647L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 288: {
             LogStep(288, "Read attribute NULLABLE_INT32S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 289: {
@@ -53773,12 +53773,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -2147483648L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 290: {
             LogStep(290, "Read attribute NULLABLE_INT32S unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 291: {
@@ -53786,22 +53786,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 292: {
             LogStep(292, "Read attribute NULLABLE_INT32S null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 293: {
             LogStep(293, "Read attribute NULLABLE_INT32S null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 294: {
             LogStep(294, "Read attribute NULLABLE_INT32S null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 295: {
@@ -53810,17 +53810,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -2147483647L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 296: {
             LogStep(296, "Read attribute NULLABLE_INT32S Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 297: {
             LogStep(297, "Read attribute NULLABLE_INT32S notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt32s::Id, true,
                                  chip::NullOptional);
         }
         case 298: {
@@ -53829,12 +53829,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -9223372036854775807LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 299: {
             LogStep(299, "Read attribute NULLABLE_INT64S Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 300: {
@@ -53843,12 +53843,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = static_cast(-9223372036854775807LL - 1);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 301: {
             LogStep(301, "Read attribute NULLABLE_INT64S unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 302: {
@@ -53856,22 +53856,22 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 303: {
             LogStep(303, "Read attribute NULLABLE_INT64S null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 304: {
             LogStep(304, "Read attribute NULLABLE_INT64S null Value & range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 305: {
             LogStep(305, "Read attribute NULLABLE_INT64S null Value & not");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 306: {
@@ -53880,17 +53880,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -9223372036854775807LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 307: {
             LogStep(307, "Read attribute NULLABLE_INT64S Value in range");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 308: {
             LogStep(308, "Read attribute NULLABLE_INT64S notValue OK");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableInt64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableInt64s::Id, true,
                                  chip::NullOptional);
         }
         case 309: {
@@ -53899,12 +53899,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0.1f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 310: {
             LogStep(310, "Read attribute NULLABLE_SINGLE medium Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                  true, chip::NullOptional);
         }
         case 311: {
@@ -53913,12 +53913,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = INFINITY;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 312: {
             LogStep(312, "Read attribute NULLABLE_SINGLE largest Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                  true, chip::NullOptional);
         }
         case 313: {
@@ -53927,12 +53927,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -INFINITY;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 314: {
             LogStep(314, "Read attribute NULLABLE_SINGLE smallest Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                  true, chip::NullOptional);
         }
         case 315: {
@@ -53940,12 +53940,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 316: {
             LogStep(316, "Read attribute NULLABLE_SINGLE null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                  true, chip::NullOptional);
         }
         case 317: {
@@ -53954,12 +53954,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0.0f;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 318: {
             LogStep(318, "Read attribute NULLABLE_SINGLE 0 Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatSingle::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatSingle::Id,
                                  true, chip::NullOptional);
         }
         case 319: {
@@ -53968,12 +53968,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0.1234567890123;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 320: {
             LogStep(320, "Read attribute NULLABLE_DOUBLE medium Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                  true, chip::NullOptional);
         }
         case 321: {
@@ -53982,12 +53982,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = INFINITY;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 322: {
             LogStep(322, "Read attribute NULLABLE_DOUBLE largest Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                  true, chip::NullOptional);
         }
         case 323: {
@@ -53996,12 +53996,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -INFINITY;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 324: {
             LogStep(324, "Read attribute NULLABLE_DOUBLE smallest Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                  true, chip::NullOptional);
         }
         case 325: {
@@ -54009,12 +54009,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 326: {
             LogStep(326, "Read attribute NULLABLE_DOUBLE null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                  true, chip::NullOptional);
         }
         case 327: {
@@ -54023,12 +54023,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 328: {
             LogStep(328, "Read attribute NULLABLE_DOUBLE 0 Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableFloatDouble::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableFloatDouble::Id,
                                  true, chip::NullOptional);
         }
         case 329: {
@@ -54037,12 +54037,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 330: {
             LogStep(330, "Read attribute NULLABLE_ENUM8 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id, true,
                                  chip::NullOptional);
         }
         case 331: {
@@ -54051,12 +54051,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 254U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 332: {
             LogStep(332, "Read attribute NULLABLE_ENUM8 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id, true,
                                  chip::NullOptional);
         }
         case 333: {
@@ -54065,12 +54065,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 255U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 334: {
             LogStep(334, "Read attribute NULLABLE_ENUM8 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id, true,
                                  chip::NullOptional);
         }
         case 335: {
@@ -54078,12 +54078,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 336: {
             LogStep(336, "Read attribute NULLABLE_ENUM8 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum8::Id, true,
                                  chip::NullOptional);
         }
         case 337: {
@@ -54092,12 +54092,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 338: {
             LogStep(338, "Read attribute NULLABLE_ENUM16 Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id, true,
                                  chip::NullOptional);
         }
         case 339: {
@@ -54106,12 +54106,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 65534U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 340: {
             LogStep(340, "Read attribute NULLABLE_ENUM16 Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id, true,
                                  chip::NullOptional);
         }
         case 341: {
@@ -54120,12 +54120,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 65535U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 342: {
             LogStep(342, "Read attribute NULLABLE_ENUM16 unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id, true,
                                  chip::NullOptional);
         }
         case 343: {
@@ -54133,77 +54133,77 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 344: {
             LogStep(344, "Read attribute NULLABLE_ENUM16 null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnum16::Id, true,
                                  chip::NullOptional);
         }
         case 345: {
             LogStep(345, "Write attribute NULLABLE_SIMPLE_ENUM Min Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable value;
+            chip::app::DataModel::Nullable value;
             value.SetNonNull();
-            value.Value() = static_cast(0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            value.Value() = static_cast(0);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 346: {
             LogStep(346, "Read attribute NULLABLE_SIMPLE_ENUM Min Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                  true, chip::NullOptional);
         }
         case 347: {
             LogStep(347, "Write attribute NULLABLE_SIMPLE_ENUM Max Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable value;
+            chip::app::DataModel::Nullable value;
             value.SetNonNull();
-            value.Value() = static_cast(3);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            value.Value() = static_cast(3);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 348: {
             LogStep(348, "Read attribute NULLABLE_SIMPLE_ENUM Max Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                  true, chip::NullOptional);
         }
         case 349: {
             LogStep(349, "Write attribute NULLABLE_SIMPLE_ENUM Invalid Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable value;
+            chip::app::DataModel::Nullable value;
             value.SetNonNull();
-            value.Value() = static_cast(255);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            value.Value() = static_cast(255);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 350: {
             LogStep(350, "Read attribute NULLABLE_SIMPLE_ENUM unchanged Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                  true, chip::NullOptional);
         }
         case 351: {
             LogStep(351, "Write attribute NULLABLE_SIMPLE_ENUM null Value");
             ListFreer listFreer;
-            chip::app::DataModel::Nullable value;
+            chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 352: {
             LogStep(352, "Read attribute NULLABLE_SIMPLE_ENUM null Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                  true, chip::NullOptional);
         }
         case 353: {
             LogStep(353, "Read attribute NULLABLE_SIMPLE_ENUM not 3 Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableEnumAttr::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableEnumAttr::Id,
                                  true, chip::NullOptional);
         }
         case 354: {
             LogStep(354, "Read attribute NULLABLE_OCTET_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 355: {
@@ -54212,12 +54212,12 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = chip::ByteSpan(chip::Uint8::from_const_char("TestValuegarbage: not in length on purpose"), 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 356: {
             LogStep(356, "Read attribute NULLABLE_OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 357: {
@@ -54225,12 +54225,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 358: {
             LogStep(358, "Read attribute NULLABLE_OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 359: {
@@ -54239,22 +54239,22 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = chip::ByteSpan(chip::Uint8::from_const_char("garbage: not in length on purpose"), 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 360: {
             LogStep(360, "Read attribute NULLABLE_OCTET_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 361: {
             LogStep(361, "Read attribute NULLABLE_OCTET_STRING not TestValue");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableOctetString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableOctetString::Id,
                                  true, chip::NullOptional);
         }
         case 362: {
             LogStep(362, "Read attribute NULLABLE_CHAR_STRING Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 363: {
@@ -54263,17 +54263,17 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = chip::Span("☉T☉garbage: not in length on purpose", 7);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 364: {
             LogStep(364, "Read attribute NULLABLE_CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 365: {
             LogStep(365, "Read attribute NULLABLE_CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 366: {
@@ -54281,12 +54281,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 367: {
             LogStep(367, "Read attribute NULLABLE_CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 368: {
@@ -54295,52 +54295,52 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = chip::Span("garbage: not in length on purpose", 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 369: {
             LogStep(369, "Read attribute NULLABLE_CHAR_STRING");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 370: {
             LogStep(370, "Read attribute NULLABLE_CHAR_STRING not ☉T☉");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::NullableCharString::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::NullableCharString::Id,
                                  true, chip::NullOptional);
         }
         case 371: {
             LogStep(371, "Read attribute from nonexistent endpoint.");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(200), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(200), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 372: {
             LogStep(372, "Read attribute from nonexistent cluster.");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 373: {
             LogStep(373, "Send a command that takes an optional parameter but do not set it.");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestSimpleOptionalArgumentRequest::Id, value, chip::NullOptional
+            chip::app::Clusters::UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 374: {
             LogStep(374, "Send a command that takes an optional parameter but do not set it.");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type value;
             value.arg1.Emplace();
             value.arg1.Value() = 1;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestSimpleOptionalArgumentRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Id, value, chip::NullOptional
 
             );
         }
         case 375: {
             LogStep(375, "Subscribe to list attribute");
-            return SubscribeAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, 2, 5,
+            return SubscribeAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, 2, 5,
                                       true, chip::NullOptional, chip::NullOptional, /* autoResubscribe = */ chip::NullOptional);
         }
         case 376: {
@@ -54357,7 +54357,7 @@ class TestClusterSuite : public TestCommand
                 listHolder_0->mList[3] = 8U;
                 value                  = chip::app::DataModel::List(listHolder_0->mList, 4);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 377: {
@@ -54366,7 +54366,7 @@ class TestClusterSuite : public TestCommand
         }
         case 378: {
             LogStep(378, "Read range-restricted unsigned 8-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8u::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8u::Id,
                                  true, chip::NullOptional);
         }
         case 379: {
@@ -54374,36 +54374,36 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 380: {
             LogStep(380, "Write just-below-range value to a range-restricted unsigned 8-bit integer");
             ListFreer listFreer;
             uint8_t value;
             value = 19U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 381: {
             LogStep(381, "Write just-above-range value to a range-restricted unsigned 8-bit integer");
             ListFreer listFreer;
             uint8_t value;
             value = 101U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 382: {
             LogStep(382, "Write max value to a range-restricted unsigned 8-bit integer");
             ListFreer listFreer;
             uint8_t value;
             value = 255U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 383: {
             LogStep(383, "Verify range-restricted unsigned 8-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8u::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8u::Id,
                                  true, chip::NullOptional);
         }
         case 384: {
@@ -54411,12 +54411,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 20U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 385: {
             LogStep(385, "Verify range-restricted unsigned 8-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8u::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8u::Id,
                                  true, chip::NullOptional);
         }
         case 386: {
@@ -54424,12 +54424,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 100U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 387: {
             LogStep(387, "Verify range-restricted unsigned 8-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8u::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8u::Id,
                                  true, chip::NullOptional);
         }
         case 388: {
@@ -54437,26 +54437,26 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 50U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8u::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 389: {
             LogStep(389, "Verify range-restricted unsigned 8-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8u::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8u::Id,
                                  true, chip::NullOptional);
         }
         case 390: {
             LogStep(390, "Read range-restricted unsigned 16-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 391: {
             LogStep(391, "Write min value to a range-restricted unsigned 16-bit integer");
             ListFreer listFreer;
             uint16_t value;
             value = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 392: {
@@ -54464,8 +54464,8 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 99U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 393: {
@@ -54473,8 +54473,8 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 1001U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 394: {
@@ -54482,60 +54482,60 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 65535U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 395: {
             LogStep(395, "Verify range-restricted unsigned 16-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 396: {
             LogStep(396, "Write min valid value to a range-restricted unsigned 16-bit integer");
             ListFreer listFreer;
             uint16_t value;
             value = 100U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 397: {
             LogStep(397, "Verify range-restricted unsigned 16-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 398: {
             LogStep(398, "Write max valid value to a range-restricted unsigned 16-bit integer");
             ListFreer listFreer;
             uint16_t value;
             value = 1000U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 399: {
             LogStep(399, "Verify range-restricted unsigned 16-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 400: {
             LogStep(400, "Write middle valid value to a range-restricted unsigned 16-bit integer");
             ListFreer listFreer;
             uint16_t value;
             value = 500U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 401: {
             LogStep(401, "Verify range-restricted unsigned 16-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 402: {
             LogStep(402, "Read range-restricted signed 8-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8s::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8s::Id,
                                  true, chip::NullOptional);
         }
         case 403: {
@@ -54543,36 +54543,36 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = -128;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 404: {
             LogStep(404, "Write just-below-range value to a range-restricted signed 8-bit integer");
             ListFreer listFreer;
             int8_t value;
             value = -41;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 405: {
             LogStep(405, "Write just-above-range value to a range-restricted signed 8-bit integer");
             ListFreer listFreer;
             int8_t value;
             value = 51;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 406: {
             LogStep(406, "Write max value to a range-restricted signed 8-bit integer");
             ListFreer listFreer;
             int8_t value;
             value = 127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 407: {
             LogStep(407, "Verify range-restricted signed 8-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8s::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8s::Id,
                                  true, chip::NullOptional);
         }
         case 408: {
@@ -54580,12 +54580,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = -40;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 409: {
             LogStep(409, "Verify range-restricted signed 8-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8s::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8s::Id,
                                  true, chip::NullOptional);
         }
         case 410: {
@@ -54593,12 +54593,12 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = 50;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 411: {
             LogStep(411, "Verify range-restricted signed 8-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8s::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8s::Id,
                                  true, chip::NullOptional);
         }
         case 412: {
@@ -54606,26 +54606,26 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = 6;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt8s::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 413: {
             LogStep(413, "Verify range-restricted signed 8-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::RangeRestrictedInt8s::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::RangeRestrictedInt8s::Id,
                                  true, chip::NullOptional);
         }
         case 414: {
             LogStep(414, "Read range-restricted signed 16-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 415: {
             LogStep(415, "Write min value to a range-restricted signed 16-bit integer");
             ListFreer listFreer;
             int16_t value;
             value = -32768;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 416: {
@@ -54633,8 +54633,8 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = -151;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 417: {
@@ -54642,8 +54642,8 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = 201;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 418: {
@@ -54651,61 +54651,61 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = 32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 419: {
             LogStep(419, "Verify range-restricted signed 16-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 420: {
             LogStep(420, "Write min valid value to a range-restricted signed 16-bit integer");
             ListFreer listFreer;
             int16_t value;
             value = -150;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 421: {
             LogStep(421, "Verify range-restricted signed 16-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 422: {
             LogStep(422, "Write max valid value to a range-restricted signed 16-bit integer");
             ListFreer listFreer;
             int16_t value;
             value = 200;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 423: {
             LogStep(423, "Verify range-restricted signed 16-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 424: {
             LogStep(424, "Write middle valid value to a range-restricted signed 16-bit integer");
             ListFreer listFreer;
             int16_t value;
             value = 7;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::RangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 425: {
             LogStep(425, "Verify range-restricted signed 16-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::RangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 426: {
             LogStep(426, "Read nullable range-restricted unsigned 8-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 427: {
             LogStep(427, "Write min value to a nullable range-restricted unsigned 8-bit integer");
@@ -54713,8 +54713,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 428: {
@@ -54723,8 +54723,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 19U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 429: {
@@ -54733,8 +54733,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 101U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 430: {
@@ -54743,14 +54743,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 254U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 431: {
             LogStep(431, "Verify nullable range-restricted unsigned 8-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 432: {
             LogStep(432, "Write min valid value to a nullable range-restricted unsigned 8-bit integer");
@@ -54758,14 +54758,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 20U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 433: {
             LogStep(433, "Verify nullable range-restricted unsigned 8-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 434: {
             LogStep(434, "Write max valid value to a nullable range-restricted unsigned 8-bit integer");
@@ -54773,14 +54773,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 100U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 435: {
             LogStep(435, "Verify nullable range-restricted unsigned 8-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 436: {
             LogStep(436, "Write middle valid value to a nullable range-restricted unsigned 8-bit integer");
@@ -54788,33 +54788,33 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 50U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 437: {
             LogStep(437, "Verify nullable range-restricted unsigned 8-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 438: {
             LogStep(438, "Write null value to a nullable range-restricted unsigned 8-bit integer");
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 439: {
             LogStep(439, "Verify nullable range-restricted unsigned 8-bit integer value is null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8u::Id, true, chip::NullOptional);
         }
         case 440: {
             LogStep(440, "Read nullable range-restricted unsigned 16-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 441: {
             LogStep(441, "Write min value to a nullable range-restricted unsigned 16-bit integer");
@@ -54822,8 +54822,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 0U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 442: {
@@ -54832,8 +54832,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 99U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 443: {
@@ -54842,8 +54842,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 1001U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 444: {
@@ -54852,14 +54852,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 65534U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 445: {
             LogStep(445, "Verify nullable range-restricted unsigned 16-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 446: {
             LogStep(446, "Write min valid value to a nullable range-restricted unsigned 16-bit integer");
@@ -54867,14 +54867,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 100U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 447: {
             LogStep(447, "Verify nullable range-restricted unsigned 16-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 448: {
             LogStep(448, "Write max valid value to a nullable range-restricted unsigned 16-bit integer");
@@ -54882,14 +54882,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 1000U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 449: {
             LogStep(449, "Verify nullable range-restricted unsigned 16-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 450: {
             LogStep(450, "Write middle valid value to a nullable range-restricted unsigned 16-bit integer");
@@ -54897,33 +54897,33 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 500U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 451: {
             LogStep(451, "Verify nullable range-restricted unsigned 16-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 452: {
             LogStep(452, "Write null value to a nullable range-restricted unsigned 16-bit integer");
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 453: {
             LogStep(453, "Verify nullable range-restricted unsigned 16-bit integer value is null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16u::Id, true, chip::NullOptional);
         }
         case 454: {
             LogStep(454, "Read nullable range-restricted signed 8-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 455: {
             LogStep(455, "Write min value to a nullable range-restricted signed 8-bit integer");
@@ -54931,8 +54931,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 456: {
@@ -54941,8 +54941,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -41;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 457: {
@@ -54951,8 +54951,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 51;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 458: {
@@ -54961,14 +54961,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 127;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 459: {
             LogStep(459, "Verify nullable range-restricted signed 8-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 460: {
             LogStep(460, "Write min valid value to a nullable range-restricted signed 8-bit integer");
@@ -54976,14 +54976,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -40;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 461: {
             LogStep(461, "Verify nullable range-restricted signed 8-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 462: {
             LogStep(462, "Write max valid value to a nullable range-restricted signed 8-bit integer");
@@ -54991,14 +54991,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 50;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 463: {
             LogStep(463, "Verify nullable range-restricted signed 8-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 464: {
             LogStep(464, "Write middle valid value to a nullable range-restricted signed 8-bit integer");
@@ -55006,33 +55006,33 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 6;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 465: {
             LogStep(465, "Verify nullable range-restricted signed 8-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 466: {
             LogStep(466, "Write null value to a nullable range-restricted signed 8-bit integer");
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 467: {
             LogStep(467, "Verify nullable range-restricted signed 8-bit integer value is at null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt8s::Id, true, chip::NullOptional);
         }
         case 468: {
             LogStep(468, "Read nullable range-restricted signed 16-bit integer");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 469: {
             LogStep(469, "Write min value to a nullable range-restricted signed 16-bit integer");
@@ -55040,8 +55040,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 470: {
@@ -55050,8 +55050,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -151;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 471: {
@@ -55060,8 +55060,8 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 201;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 472: {
@@ -55070,14 +55070,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 32767;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 473: {
             LogStep(473, "Verify nullable range-restricted signed 16-bit integer value has not changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 474: {
             LogStep(474, "Write min valid value to a nullable range-restricted signed 16-bit integer");
@@ -55085,14 +55085,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = -150;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 475: {
             LogStep(475, "Verify nullable range-restricted signed 16-bit integer value is at min valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 476: {
             LogStep(476, "Write max valid value to a nullable range-restricted signed 16-bit integer");
@@ -55100,14 +55100,14 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 200;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 477: {
             LogStep(477, "Verify nullable range-restricted signed 16-bit integer value is at max valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 478: {
             LogStep(478, "Write middle valid value to a nullable range-restricted signed 16-bit integer");
@@ -55115,35 +55115,35 @@ class TestClusterSuite : public TestCommand
             chip::app::DataModel::Nullable value;
             value.SetNonNull();
             value.Value() = 7;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 479: {
             LogStep(479, "Verify nullable range-restricted signed 16-bit integer value is at mid valid");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 480: {
             LogStep(480, "Write null value to a nullable range-restricted signed 16-bit integer");
             ListFreer listFreer;
             chip::app::DataModel::Nullable value;
             value.SetNull();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                  TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                  UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, value, chip::NullOptional,
                                   chip::NullOptional);
         }
         case 481: {
             LogStep(481, "Verify nullable range-restricted signed 16-bit integer value is null");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                 TestCluster::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                 UnitTesting::Attributes::NullableRangeRestrictedInt16s::Id, true, chip::NullOptional);
         }
         case 482: {
             LogStep(482, "Write attribute that returns general status on write");
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::GeneralErrorBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::GeneralErrorBoolean::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 483: {
@@ -55151,49 +55151,49 @@ class TestClusterSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ClusterErrorBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ClusterErrorBoolean::Id,
                                   value, chip::NullOptional, chip::NullOptional);
         }
         case 484: {
             LogStep(484, "Read attribute that returns general status on read");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::GeneralErrorBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::GeneralErrorBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 485: {
             LogStep(485, "read attribute that returns cluster-specific status on read");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ClusterErrorBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ClusterErrorBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 486: {
             LogStep(486, "read AcceptedCommandList attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::AcceptedCommandList::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::AcceptedCommandList::Id,
                                  true, chip::NullOptional);
         }
         case 487: {
             LogStep(487, "read GeneratedCommandList attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::GeneratedCommandList::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::GeneratedCommandList::Id,
                                  true, chip::NullOptional);
         }
         case 488: {
             LogStep(488, "Write struct-typed attribute");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type value;
+            chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type value;
 
             value.a = 5U;
             value.b = true;
-            value.c = static_cast(2);
+            value.c = static_cast(2);
             value.d = chip::ByteSpan(chip::Uint8::from_const_char("abcgarbage: not in length on purpose"), 3);
             value.e = chip::Span("garbage: not in length on purpose", 0);
-            value.f = static_cast>(17U);
+            value.f = static_cast>(17U);
             value.g = 1.5f;
             value.h = 3.14159265358979;
 
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::StructAttr::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::StructAttr::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 489: {
             LogStep(489, "Read struct-typed attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::StructAttr::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::StructAttr::Id, true,
                                  chip::NullOptional);
         }
         }
@@ -55245,7 +55245,7 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 1:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestNullableOptionalResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("wasPresent", value.wasPresent, true));
                 VerifyOrReturn(CheckValuePresent("wasNull", value.wasNull));
@@ -55371,19 +55371,19 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 1: {
             LogStep(1, "Send Test Command with optional arg set to null.");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::Type value;
             value.arg1.Emplace();
             value.arg1.Value().SetNull();
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                               TestCluster::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                               UnitTesting::Commands::TestNullableOptionalRequest::Id, value, chip::NullOptional
 
             );
         }
         case 2: {
             LogStep(2, "Send command that needs timed invoke without a timeout value");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TimedInvokeRequest::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TimedInvokeRequest::Id,
+            chip::app::Clusters::UnitTesting::Commands::TimedInvokeRequest::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TimedInvokeRequest::Id,
                                value, chip::NullOptional, chip::NullOptional
 
             );
@@ -55391,8 +55391,8 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 3: {
             LogStep(3, "Send command that needs timed invoke with a long timeout value");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TimedInvokeRequest::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TimedInvokeRequest::Id,
+            chip::app::Clusters::UnitTesting::Commands::TimedInvokeRequest::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TimedInvokeRequest::Id,
                                value, chip::Optional(10000), chip::NullOptional
 
             );
@@ -55400,9 +55400,9 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 4: {
             LogStep(4, "Send command that needs timed invoke with a too-short timeout value");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TimedInvokeRequest::Type value;
-            ReturnErrorOnFailure(SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                             TestCluster::Commands::TimedInvokeRequest::Id, value, chip::Optional(1),
+            chip::app::Clusters::UnitTesting::Commands::TimedInvokeRequest::Type value;
+            ReturnErrorOnFailure(SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                             UnitTesting::Commands::TimedInvokeRequest::Id, value, chip::Optional(1),
                                              chip::NullOptional
 
                                              ));
@@ -55413,8 +55413,8 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 5: {
             LogStep(5, "Send command that does not need timed invoke with a long timeout value");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::Test::Type value;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::Test::Id, value,
+            chip::app::Clusters::UnitTesting::Commands::Test::Type value;
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::Test::Id, value,
                                chip::Optional(10000), chip::NullOptional
 
             );
@@ -55422,8 +55422,8 @@ class TestClusterComplexTypesSuite : public TestCommand
         case 6: {
             LogStep(6, "Send command that does not need timed invoke with a too-short timeout value");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::Test::Type value;
-            ReturnErrorOnFailure(SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::Test::Id,
+            chip::app::Clusters::UnitTesting::Commands::Test::Type value;
+            ReturnErrorOnFailure(SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::Test::Id,
                                              value, chip::Optional(1), chip::NullOptional
 
                                              ));
@@ -55433,7 +55433,7 @@ class TestClusterComplexTypesSuite : public TestCommand
         }
         case 7: {
             LogStep(7, "Read attribute that needs timed write initial state");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 8: {
@@ -55441,12 +55441,12 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                   value, chip::NullOptional, chip::NullOptional, chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Read attribute that needs timed write state unchanged 1");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 10: {
@@ -55454,8 +55454,8 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = true;
-            ReturnErrorOnFailure(WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                                TestCluster::Attributes::TimedWriteBoolean::Id, value, chip::Optional(1),
+            ReturnErrorOnFailure(WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                                UnitTesting::Attributes::TimedWriteBoolean::Id, value, chip::Optional(1),
                                                 chip::NullOptional, chip::NullOptional));
 
             using namespace chip::System::Clock::Literals;
@@ -55463,7 +55463,7 @@ class TestClusterComplexTypesSuite : public TestCommand
         }
         case 11: {
             LogStep(11, "Read attribute that needs timed write state unchanged 2");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 12: {
@@ -55471,12 +55471,12 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                   value, chip::Optional(10000), chip::NullOptional, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "Read attribute that needs timed write state changed");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                  true, chip::NullOptional);
         }
         case 14: {
@@ -55484,12 +55484,12 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::TimedWriteBoolean::Id,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::TimedWriteBoolean::Id,
                                   value, chip::Optional(10000), chip::NullOptional, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "Read attribute that does not need timed write initial value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 16: {
@@ -55497,8 +55497,8 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = true;
-            ReturnErrorOnFailure(WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id,
-                                                TestCluster::Attributes::Boolean::Id, value, chip::Optional(1),
+            ReturnErrorOnFailure(WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id,
+                                                UnitTesting::Attributes::Boolean::Id, value, chip::Optional(1),
                                                 chip::NullOptional, chip::NullOptional));
 
             using namespace chip::System::Clock::Literals;
@@ -55506,7 +55506,7 @@ class TestClusterComplexTypesSuite : public TestCommand
         }
         case 17: {
             LogStep(17, "Read attribute that does not need timed write unchanged value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 18: {
@@ -55514,12 +55514,12 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::Optional(10000), chip::NullOptional, chip::NullOptional);
         }
         case 19: {
             LogStep(19, "Read attribute that does not need timed write changed value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 20: {
@@ -55527,7 +55527,7 @@ class TestClusterComplexTypesSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         }
@@ -55603,7 +55603,7 @@ class TestConstraintsSuite : public TestCommand
         case 5:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 0UL));
             }
@@ -55614,7 +55614,7 @@ class TestConstraintsSuite : public TestCommand
         case 7:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 5UL));
                 VerifyOrReturn(CheckConstraintHasMasksClear("value", value, 2UL));
@@ -55623,7 +55623,7 @@ class TestConstraintsSuite : public TestCommand
         case 8:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 5UL));
                 VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL));
@@ -55632,7 +55632,7 @@ class TestConstraintsSuite : public TestCommand
         case 9:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 5UL));
                 VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 4UL));
@@ -55641,7 +55641,7 @@ class TestConstraintsSuite : public TestCommand
         case 10:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 5UL));
                 VerifyOrReturn(CheckConstraintHasMasksSet("value", value, 1UL));
@@ -55810,17 +55810,17 @@ class TestConstraintsSuite : public TestCommand
                 listHolder_0->mList[3] = 4U;
                 value                  = chip::app::DataModel::List(listHolder_0->mList, 4);
             }
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 2: {
             LogStep(2, "Read attribute LIST With Partial List of INT8U that should be in it");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 3: {
             LogStep(3, "Read attribute LIST With Partial List of INT8U that should not be included");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, true,
                                  chip::NullOptional);
         }
         case 4: {
@@ -55829,40 +55829,40 @@ class TestConstraintsSuite : public TestCommand
             chip::app::DataModel::List value;
 
             value = chip::app::DataModel::List();
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::ListInt8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::ListInt8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "Read attribute BITMAP32 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 6: {
             LogStep(6, "Write attribute BITMAP32 with MaskVal1 and MaskVal3");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(5UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, value,
+            chip::BitMask value;
+            value = static_cast>(5UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "Read attribute BITMAP32 with MaskVal1 and MaskVal3 and ensure MaskVal2 is not set");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 8: {
             LogStep(8, "Read attribute BITMAP32 with MaskVal1 and MaskVal3 and ensure MaskVal1 is set");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Read attribute BITMAP32 with MaskVal1 and MaskVal3 and ensure MaskVal3 is set");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 10: {
             LogStep(10, "Read attribute BITMAP32 with MaskVal1 and MaskVal3 and ensure Maskval1 and MaskVal3 are set");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 11: {
@@ -55870,22 +55870,22 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 5UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "Read attribute INT32U Value MinValue Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 13: {
             LogStep(13, "Read attribute INT32U Value MaxValue Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 14: {
             LogStep(14, "Read attribute INT32U Value NotValue Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 15: {
@@ -55893,7 +55893,7 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 0UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 16: {
@@ -55901,27 +55901,27 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("** Test **garbage: not in length on purpose", 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 17: {
             LogStep(17, "Read attribute CHAR_STRING Value MinLength Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 18: {
             LogStep(18, "Read attribute CHAR_STRING Value MaxLength Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 19: {
             LogStep(19, "Read attribute CHAR_STRING Value StartsWith Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 20: {
             LogStep(20, "Read attribute CHAR_STRING Value EndsWith Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 21: {
@@ -55929,12 +55929,12 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("lowercasegarbage: not in length on purpose", 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 22: {
             LogStep(22, "Read attribute CHAR_STRING Value isLowerCase/isUpperCase Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 23: {
@@ -55942,12 +55942,12 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("UPPERCASEgarbage: not in length on purpose", 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 24: {
             LogStep(24, "Read attribute CHAR_STRING Value isLowerCase/isUpperCase Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 25: {
@@ -55955,12 +55955,12 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("lowUPPERgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 26: {
             LogStep(26, "Read attribute CHAR_STRING Value isLowerCase/isUpperCase Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 27: {
@@ -55968,12 +55968,12 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("ABCDEF012Vgarbage: not in length on purpose", 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 28: {
             LogStep(28, "Read attribute CHAR_STRING Value isHexString Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 29: {
@@ -55981,12 +55981,12 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("ABCDEF0123garbage: not in length on purpose", 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 30: {
             LogStep(30, "Read attribute CHAR_STRING Value isHexString Constraints");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 31: {
@@ -55994,7 +55994,7 @@ class TestConstraintsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("garbage: not in length on purpose", 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         }
@@ -56141,7 +56141,7 @@ class TestEventsSuite : public TestCommand
         case 3:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 eventNumber = value.value;
             }
@@ -56152,7 +56152,7 @@ class TestEventsSuite : public TestCommand
             case 0:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 1U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 2U));
@@ -56171,7 +56171,7 @@ class TestEventsSuite : public TestCommand
             case 0:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 1U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 2U));
@@ -56195,7 +56195,7 @@ class TestEventsSuite : public TestCommand
         case 7:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, static_cast(eventNumber + 1)));
             }
@@ -56206,7 +56206,7 @@ class TestEventsSuite : public TestCommand
             case 0:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 1U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 2U));
@@ -56217,7 +56217,7 @@ class TestEventsSuite : public TestCommand
             case 1:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 3U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 4U));
@@ -56236,7 +56236,7 @@ class TestEventsSuite : public TestCommand
             case 0:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 1U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 2U));
@@ -56247,7 +56247,7 @@ class TestEventsSuite : public TestCommand
             case 1:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 3U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 4U));
@@ -56263,7 +56263,7 @@ class TestEventsSuite : public TestCommand
         case 10:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestEmitTestEventResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("value", value.value, static_cast(eventNumber + 2)));
             }
@@ -56274,7 +56274,7 @@ class TestEventsSuite : public TestCommand
             case 0:
                 VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
                 {
-                    chip::app::Clusters::TestCluster::Events::TestEvent::DecodableType value;
+                    chip::app::Clusters::UnitTesting::Events::TestEvent::DecodableType value;
                     VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                     VerifyOrReturn(CheckValue("testEvent.arg1", value.arg1, 4U));
                     VerifyOrReturn(CheckValue("testEvent.arg2", value.arg2, 3U));
@@ -56313,23 +56313,23 @@ class TestEventsSuite : public TestCommand
         case 1: {
             LogStep(1, "Check there is no event on the target endpoint");
             mTestSubStepCount = 0;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::NullOptional);
         }
         case 2: {
             LogStep(2, "Check reading events from an invalid endpoint");
             mTestSubStepCount = 0;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(0), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(0), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::NullOptional);
         }
         case 3: {
             LogStep(3, "Generate an event on the accessory");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::Type value;
             value.arg1 = 1U;
-            value.arg2 = static_cast(2);
+            value.arg2 = static_cast(2);
             value.arg3 = true;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestEmitTestEventRequest::Id,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestEmitTestEventRequest::Id,
                                value, chip::NullOptional
 
             );
@@ -56337,29 +56337,29 @@ class TestEventsSuite : public TestCommand
         case 4: {
             LogStep(4, "Read the event back");
             mTestSubStepCount = 1;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::NullOptional);
         }
         case 5: {
             LogStep(5, "Read the event with eventNumber set to the event value");
             mTestSubStepCount = 1;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::Optional(eventNumber));
         }
         case 6: {
             LogStep(6, "Read the event with eventNumber set to the event value + 1");
             mTestSubStepCount = 0;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::Optional(eventNumber + 1));
         }
         case 7: {
             LogStep(7, "Generate a second event on the accessory");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::Type value;
             value.arg1 = 3U;
-            value.arg2 = static_cast(4);
+            value.arg2 = static_cast(4);
             value.arg3 = false;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestEmitTestEventRequest::Id,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestEmitTestEventRequest::Id,
                                value, chip::NullOptional
 
             );
@@ -56367,23 +56367,23 @@ class TestEventsSuite : public TestCommand
         case 8: {
             LogStep(8, "Read the event back");
             mTestSubStepCount = 2;
-            return ReadEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, false,
+            return ReadEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, false,
                              chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Subscribe to the event");
             mTestSubStepCount = 2;
-            return SubscribeEvent(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Events::TestEvent::Id, 3, 5, false,
+            return SubscribeEvent(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Events::TestEvent::Id, 3, 5, false,
                                   chip::NullOptional, chip::NullOptional, /* autoResubscribe = */ chip::NullOptional);
         }
         case 10: {
             LogStep(10, "Generate a third event on the accessory");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::Type value;
             value.arg1 = 4U;
-            value.arg2 = static_cast(3);
+            value.arg2 = static_cast(3);
             value.arg3 = true;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestEmitTestEventRequest::Id,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestEmitTestEventRequest::Id,
                                value, chip::NullOptional
 
             );
@@ -57022,10 +57022,10 @@ class TestSaveAsSuite : public TestCommand
 
     uint8_t TestAddArgumentDefaultValue;
     bool readAttributeBooleanDefaultValue;
-    chip::BitMask readAttributeBitmap8DefaultValue;
-    chip::BitMask readAttributeBitmap16DefaultValue;
-    chip::BitMask readAttributeBitmap32DefaultValue;
-    chip::BitMask readAttributeBitmap64DefaultValue;
+    chip::BitMask readAttributeBitmap8DefaultValue;
+    chip::BitMask readAttributeBitmap16DefaultValue;
+    chip::BitMask readAttributeBitmap32DefaultValue;
+    chip::BitMask readAttributeBitmap64DefaultValue;
     uint8_t readAttributeInt8uDefaultValue;
     uint16_t readAttributeInt16uDefaultValue;
     uint32_t readAttributeInt32uDefaultValue;
@@ -57067,7 +57067,7 @@ class TestSaveAsSuite : public TestCommand
         case 1:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue, 20U));
                 TestAddArgumentDefaultValue = value.returnValue;
@@ -57076,7 +57076,7 @@ class TestSaveAsSuite : public TestCommand
         case 2:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue, TestAddArgumentDefaultValue));
             }
@@ -57084,7 +57084,7 @@ class TestSaveAsSuite : public TestCommand
         case 3:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value.returnValue", value.returnValue, TestAddArgumentDefaultValue));
             }
@@ -57123,7 +57123,7 @@ class TestSaveAsSuite : public TestCommand
         case 9:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap8", value, 0U));
                 readAttributeBitmap8DefaultValue = value;
@@ -57135,7 +57135,7 @@ class TestSaveAsSuite : public TestCommand
         case 11:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, readAttributeBitmap8DefaultValue));
             }
@@ -57146,7 +57146,7 @@ class TestSaveAsSuite : public TestCommand
         case 13:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap8", value, readAttributeBitmap8DefaultValue));
             }
@@ -57154,7 +57154,7 @@ class TestSaveAsSuite : public TestCommand
         case 14:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap16", value, 0U));
                 readAttributeBitmap16DefaultValue = value;
@@ -57166,7 +57166,7 @@ class TestSaveAsSuite : public TestCommand
         case 16:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, readAttributeBitmap16DefaultValue));
             }
@@ -57177,7 +57177,7 @@ class TestSaveAsSuite : public TestCommand
         case 18:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap16", value, readAttributeBitmap16DefaultValue));
             }
@@ -57185,7 +57185,7 @@ class TestSaveAsSuite : public TestCommand
         case 19:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, 0UL));
                 readAttributeBitmap32DefaultValue = value;
@@ -57197,7 +57197,7 @@ class TestSaveAsSuite : public TestCommand
         case 21:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, readAttributeBitmap32DefaultValue));
             }
@@ -57208,7 +57208,7 @@ class TestSaveAsSuite : public TestCommand
         case 23:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap32", value, readAttributeBitmap32DefaultValue));
             }
@@ -57216,7 +57216,7 @@ class TestSaveAsSuite : public TestCommand
         case 24:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap64", value, 0ULL));
                 readAttributeBitmap64DefaultValue = value;
@@ -57228,7 +57228,7 @@ class TestSaveAsSuite : public TestCommand
         case 26:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckConstraintNotValue("value", value, readAttributeBitmap64DefaultValue));
             }
@@ -57239,7 +57239,7 @@ class TestSaveAsSuite : public TestCommand
         case 28:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::BitMask value;
+                chip::BitMask value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("bitmap64", value, readAttributeBitmap64DefaultValue));
             }
@@ -57805,10 +57805,10 @@ class TestSaveAsSuite : public TestCommand
         case 1: {
             LogStep(1, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 3U;
             value.arg2 = 17U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
@@ -57816,10 +57816,10 @@ class TestSaveAsSuite : public TestCommand
         case 2: {
             LogStep(2, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 3U;
             value.arg2 = 17U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
@@ -57827,17 +57827,17 @@ class TestSaveAsSuite : public TestCommand
         case 3: {
             LogStep(3, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 3U;
             value.arg2 = TestAddArgumentDefaultValue;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
         }
         case 4: {
             LogStep(4, "Read attribute BOOLEAN Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 5: {
@@ -57845,12 +57845,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = 1;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "Read attribute BOOLEAN Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 7: {
@@ -57858,141 +57858,141 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             bool value;
             value = readAttributeBooleanDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "Read attribute BOOLEAN False");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Boolean::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Boolean::Id, true,
                                  chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Read attribute BITMAP8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 10: {
             LogStep(10, "Write attribute BITMAP8 Not Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(1U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, value,
+            chip::BitMask value;
+            value = static_cast>(1U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 11: {
             LogStep(11, "Read attribute BITMAP8 Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 12: {
             LogStep(12, "Write attribute BITMAP8 Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
+            chip::BitMask value;
             value = readAttributeBitmap8DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "Read attribute BITMAP8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap8::Id, true,
                                  chip::NullOptional);
         }
         case 14: {
             LogStep(14, "Read attribute BITMAP16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 15: {
             LogStep(15, "Write attribute BITMAP16 Not Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(1U);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, value,
+            chip::BitMask value;
+            value = static_cast>(1U);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "Read attribute BITMAP16 Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 17: {
             LogStep(17, "Write attribute BITMAP16 Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
+            chip::BitMask value;
             value = readAttributeBitmap16DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 18: {
             LogStep(18, "Read attribute BITMAP16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap16::Id, true,
                                  chip::NullOptional);
         }
         case 19: {
             LogStep(19, "Read attribute BITMAP32 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 20: {
             LogStep(20, "Write attribute BITMAP32 Not Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(1UL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, value,
+            chip::BitMask value;
+            value = static_cast>(1UL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 21: {
             LogStep(21, "Read attribute BITMAP32 Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 22: {
             LogStep(22, "Write attribute BITMAP32 Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
+            chip::BitMask value;
             value = readAttributeBitmap32DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 23: {
             LogStep(23, "Read attribute BITMAP32 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap32::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap32::Id, true,
                                  chip::NullOptional);
         }
         case 24: {
             LogStep(24, "Read attribute BITMAP64 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 25: {
             LogStep(25, "Write attribute BITMAP64 Not Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
-            value = static_cast>(1ULL);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, value,
+            chip::BitMask value;
+            value = static_cast>(1ULL);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 26: {
             LogStep(26, "Read attribute BITMAP64 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 27: {
             LogStep(27, "Write attribute BITMAP64 Default Value");
             ListFreer listFreer;
-            chip::BitMask value;
+            chip::BitMask value;
             value = readAttributeBitmap64DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 28: {
             LogStep(28, "Read attribute BITMAP64 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Bitmap64::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Bitmap64::Id, true,
                                  chip::NullOptional);
         }
         case 29: {
             LogStep(29, "Read attribute INT8U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 30: {
@@ -58000,12 +58000,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 1U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 31: {
             LogStep(31, "Read attribute INT8U Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 32: {
@@ -58013,17 +58013,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = readAttributeInt8uDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 33: {
             LogStep(33, "Read attribute INT8U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8u::Id, true,
                                  chip::NullOptional);
         }
         case 34: {
             LogStep(34, "Read attribute INT16U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 35: {
@@ -58031,12 +58031,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 1U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 36: {
             LogStep(36, "Read attribute INT16U Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 37: {
@@ -58044,17 +58044,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = readAttributeInt16uDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 38: {
             LogStep(38, "Read attribute INT16U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16u::Id, true,
                                  chip::NullOptional);
         }
         case 39: {
             LogStep(39, "Read attribute INT32U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 40: {
@@ -58062,12 +58062,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 1UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 41: {
             LogStep(41, "Read attribute INT32U Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 42: {
@@ -58075,17 +58075,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = readAttributeInt32uDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 43: {
             LogStep(43, "Read attribute INT32U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32u::Id, true,
                                  chip::NullOptional);
         }
         case 44: {
             LogStep(44, "Read attribute INT64U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 45: {
@@ -58093,12 +58093,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 1ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 46: {
             LogStep(46, "Read attribute INT64U Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 47: {
@@ -58106,17 +58106,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = readAttributeInt64uDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 48: {
             LogStep(48, "Read attribute INT64U Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64u::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64u::Id, true,
                                  chip::NullOptional);
         }
         case 49: {
             LogStep(49, "Read attribute INT8S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 50: {
@@ -58124,12 +58124,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = 1;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 51: {
             LogStep(51, "Read attribute INT8S Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 52: {
@@ -58137,17 +58137,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int8_t value;
             value = readAttributeInt8sDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 53: {
             LogStep(53, "Read attribute INT8S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int8s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int8s::Id, true,
                                  chip::NullOptional);
         }
         case 54: {
             LogStep(54, "Read attribute INT16S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 55: {
@@ -58155,12 +58155,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = 1;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 56: {
             LogStep(56, "Read attribute INT16S Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 57: {
@@ -58168,17 +58168,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int16_t value;
             value = readAttributeInt16sDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 58: {
             LogStep(58, "Read attribute INT16S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int16s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int16s::Id, true,
                                  chip::NullOptional);
         }
         case 59: {
             LogStep(59, "Read attribute INT32S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 60: {
@@ -58186,12 +58186,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int32_t value;
             value = 1L;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 61: {
             LogStep(61, "Read attribute INT32S Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 62: {
@@ -58199,17 +58199,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int32_t value;
             value = readAttributeInt32sDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 63: {
             LogStep(63, "Read attribute INT32S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int32s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int32s::Id, true,
                                  chip::NullOptional);
         }
         case 64: {
             LogStep(64, "Read attribute INT64S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 65: {
@@ -58217,12 +58217,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int64_t value;
             value = 1LL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 66: {
             LogStep(66, "Read attribute INT64S Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 67: {
@@ -58230,17 +58230,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             int64_t value;
             value = readAttributeInt64sDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 68: {
             LogStep(68, "Read attribute INT64S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Int64s::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Int64s::Id, true,
                                  chip::NullOptional);
         }
         case 69: {
             LogStep(69, "Read attribute ENUM8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 70: {
@@ -58248,12 +58248,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = 1U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 71: {
             LogStep(71, "Read attribute ENUM8 Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 72: {
@@ -58261,17 +58261,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint8_t value;
             value = readAttributeEnum8DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 73: {
             LogStep(73, "Read attribute ENUM8 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum8::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum8::Id, true,
                                  chip::NullOptional);
         }
         case 74: {
             LogStep(74, "Read attribute ENUM16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 75: {
@@ -58279,12 +58279,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = 1U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 76: {
             LogStep(76, "Read attribute ENUM16 Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 77: {
@@ -58292,17 +58292,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint16_t value;
             value = readAttributeEnum16DefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 78: {
             LogStep(78, "Read attribute ENUM16 Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::Enum16::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::Enum16::Id, true,
                                  chip::NullOptional);
         }
         case 79: {
             LogStep(79, "Read attribute EPOCH_US Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 80: {
@@ -58310,12 +58310,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = 1ULL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 81: {
             LogStep(81, "Read attribute EPOCH_US Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 82: {
@@ -58323,17 +58323,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint64_t value;
             value = readAttributeEpochUSDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 83: {
             LogStep(83, "Read attribute EPOCH_US Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochUs::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochUs::Id, true,
                                  chip::NullOptional);
         }
         case 84: {
             LogStep(84, "Read attribute EPOCH_S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 85: {
@@ -58341,12 +58341,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = 1UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 86: {
             LogStep(86, "Read attribute EPOCH_S Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 87: {
@@ -58354,17 +58354,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             uint32_t value;
             value = readAttributeEpochSDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 88: {
             LogStep(88, "Read attribute EPOCH_S Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::EpochS::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::EpochS::Id, true,
                                  chip::NullOptional);
         }
         case 89: {
             LogStep(89, "Read attribute vendor_id Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, true,
                                  chip::NullOptional);
         }
         case 90: {
@@ -58372,12 +58372,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::VendorId value;
             value = static_cast(1);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 91: {
             LogStep(91, "Read attribute vendor_id Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, true,
                                  chip::NullOptional);
         }
         case 92: {
@@ -58385,22 +58385,22 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::VendorId value;
             value = readAttributeVendorIdDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 93: {
             LogStep(93, "Read attribute vendor_id Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::VendorId::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::VendorId::Id, true,
                                  chip::NullOptional);
         }
         case 94: {
             LogStep(94, "Read attribute char_string Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 95: {
             LogStep(95, "Read attribute char_string Default Value and compare to saved value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 96: {
@@ -58408,17 +58408,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span("NotDefaultgarbage: not in length on purpose", 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 97: {
             LogStep(97, "Read attribute char_string Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 98: {
             LogStep(98, "Read attribute char_string Not Default Value and compare to saved value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 99: {
@@ -58426,12 +58426,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = readAttributeCharStringNotDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 100: {
             LogStep(100, "Read attribute char_string Not Default Value and compare to expected value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, true,
                                  chip::NullOptional);
         }
         case 101: {
@@ -58439,17 +58439,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::CharSpan value;
             value = readAttributeCharStringDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::CharString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::CharString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 102: {
             LogStep(102, "Read attribute octet_string Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 103: {
             LogStep(103, "Read attribute octet_string Default Value and compare to saved value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 104: {
@@ -58457,17 +58457,17 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = chip::ByteSpan(chip::Uint8::from_const_char("NotDefaultgarbage: not in length on purpose"), 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 105: {
             LogStep(105, "Read attribute octet_string Not Default Value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 106: {
             LogStep(106, "Read attribute octet_string Not Default Value and compare to saved value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 107: {
@@ -58475,12 +58475,12 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = readAttributeOctetStringNotDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         case 108: {
             LogStep(108, "Read attribute octet_string Not Default Value and compare to expected value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, true,
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, true,
                                  chip::NullOptional);
         }
         case 109: {
@@ -58488,7 +58488,7 @@ class TestSaveAsSuite : public TestCommand
             ListFreer listFreer;
             chip::ByteSpan value;
             value = readAttributeOctetStringDefaultValue;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Attributes::OctetString::Id, value,
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Attributes::OctetString::Id, value,
                                   chip::NullOptional, chip::NullOptional);
         }
         }
@@ -58546,7 +58546,7 @@ class TestConfigVariablesSuite : public TestCommand
         case 1:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue, 20U));
                 TestAddArgumentDefaultValue = value.returnValue;
@@ -58555,7 +58555,7 @@ class TestConfigVariablesSuite : public TestCommand
         case 2:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::TestCluster::Commands::TestAddArgumentsResponse::DecodableType value;
+                chip::app::Clusters::UnitTesting::Commands::TestAddArgumentsResponse::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 VerifyOrReturn(CheckValue("returnValue", value.returnValue,
                                           mReturnValueWithArg1.HasValue() ? mReturnValueWithArg1.Value() : 25U));
@@ -58586,10 +58586,10 @@ class TestConfigVariablesSuite : public TestCommand
         case 1: {
             LogStep(1, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = 3U;
             value.arg2 = 17U;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
@@ -58597,10 +58597,10 @@ class TestConfigVariablesSuite : public TestCommand
         case 2: {
             LogStep(2, "Send Test Add Arguments Command");
             ListFreer listFreer;
-            chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type value;
+            chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type value;
             value.arg1 = mArg1.HasValue() ? mArg1.Value() : 5U;
             value.arg2 = TestAddArgumentDefaultValue;
-            return SendCommand(kIdentityAlpha, GetEndpoint(1), TestCluster::Id, TestCluster::Commands::TestAddArguments::Id, value,
+            return SendCommand(kIdentityAlpha, GetEndpoint(1), UnitTesting::Id, UnitTesting::Commands::TestAddArguments::Id, value,
                                chip::NullOptional
 
             );
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
index 53892ffa7175b4..683602c0cd52dd 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
@@ -496,26 +496,26 @@ typedef void (*ElectricalMeasurementAcceptedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
 typedef void (*ElectricalMeasurementAttributeListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListInt8uListAttributeCallback)(void * context,
+typedef void (*UnitTestingListInt8uListAttributeCallback)(void * context,
                                                           const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListOctetStringListAttributeCallback)(void * context,
+typedef void (*UnitTestingListOctetStringListAttributeCallback)(void * context,
                                                                 const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListStructOctetStringListAttributeCallback)(
+typedef void (*UnitTestingListStructOctetStringListAttributeCallback)(
     void * context,
-    const chip::app::DataModel::DecodableList &
+    const chip::app::DataModel::DecodableList &
         data);
-typedef void (*TestClusterListNullablesAndOptionalsStructListAttributeCallback)(
+typedef void (*UnitTestingListNullablesAndOptionalsStructListAttributeCallback)(
     void * context,
     const chip::app::DataModel::DecodableList<
-        chip::app::Clusters::TestCluster::Structs::NullablesAndOptionalsStruct::DecodableType> & data);
-typedef void (*TestClusterListLongOctetStringListAttributeCallback)(
+        chip::app::Clusters::UnitTesting::Structs::NullablesAndOptionalsStruct::DecodableType> & data);
+typedef void (*UnitTestingListLongOctetStringListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterListFabricScopedListAttributeCallback)(
+typedef void (*UnitTestingListFabricScopedListAttributeCallback)(
     void * context,
-    const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterGeneratedCommandListListAttributeCallback)(
+    const chip::app::DataModel::DecodableList & data);
+typedef void (*UnitTestingGeneratedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterAcceptedCommandListListAttributeCallback)(
+typedef void (*UnitTestingAcceptedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*TestClusterAttributeListListAttributeCallback)(void * context,
+typedef void (*UnitTestingAttributeListListAttributeCallback)(void * context,
                                                               const chip::app::DataModel::DecodableList & data);
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
index 96283a05033cd6..14e8616fdd97e1 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
@@ -622,13 +622,13 @@ class DLL_EXPORT ElectricalMeasurementCluster : public ClusterBase
     ~ElectricalMeasurementCluster() {}
 };
 
-class DLL_EXPORT TestClusterCluster : public ClusterBase
+class DLL_EXPORT UnitTestingCluster : public ClusterBase
 {
 public:
-    TestClusterCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, EndpointId endpoint) :
-        ClusterBase(exchangeManager, session, app::Clusters::TestCluster::Id, endpoint)
+    UnitTestingCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, EndpointId endpoint) :
+        ClusterBase(exchangeManager, session, app::Clusters::UnitTesting::Id, endpoint)
     {}
-    ~TestClusterCluster() {}
+    ~UnitTestingCluster() {}
 };
 
 } // namespace Controller
diff --git a/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp b/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
index f35c36f0911d13..9e61976c102209 100644
--- a/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
@@ -194,9 +194,6 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_TEMPERATURE_MEASUREMENT_CLUSTER_ID:
         emberAfTemperatureMeasurementClusterInitCallback(endpoint);
         break;
-    case ZCL_TEST_CLUSTER_ID:
-        emberAfTestClusterClusterInitCallback(endpoint);
-        break;
     case ZCL_THERMOSTAT_CLUSTER_ID:
         emberAfThermostatClusterInitCallback(endpoint);
         break;
@@ -212,6 +209,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId)
     case ZCL_UNIT_LOCALIZATION_CLUSTER_ID:
         emberAfUnitLocalizationClusterInitCallback(endpoint);
         break;
+    case ZCL_UNIT_TESTING_CLUSTER_ID:
+        emberAfUnitTestingClusterInitCallback(endpoint);
+        break;
     case ZCL_USER_LABEL_CLUSTER_ID:
         emberAfUserLabelClusterInitCallback(endpoint);
         break;
@@ -505,11 +505,6 @@ void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(Endp
     // To prevent warning
     (void) endpoint;
 }
-void __attribute__((weak)) emberAfTestClusterClusterInitCallback(EndpointId endpoint)
-{
-    // To prevent warning
-    (void) endpoint;
-}
 void __attribute__((weak)) emberAfThermostatClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
@@ -535,6 +530,11 @@ void __attribute__((weak)) emberAfUnitLocalizationClusterInitCallback(EndpointId
     // To prevent warning
     (void) endpoint;
 }
+void __attribute__((weak)) emberAfUnitTestingClusterInitCallback(EndpointId endpoint)
+{
+    // To prevent warning
+    (void) endpoint;
+}
 void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
diff --git a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
index 02e8566c7cd596..3fc37696f8ecc3 100644
--- a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
@@ -788,7 +788,7 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Test Cluster (client) */ \
+      /* Endpoint: 1, Cluster: Unit Testing (client) */ \
       .clusterId = 0xFFF1FC05,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(0), \
       .attributeCount = 0, \
diff --git a/zzz_generated/controller-clusters/zap-generated/gen_config.h b/zzz_generated/controller-clusters/zap-generated/gen_config.h
index d73f3e587e5b60..1e3b37926d0dac 100644
--- a/zzz_generated/controller-clusters/zap-generated/gen_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/gen_config.h
@@ -93,7 +93,7 @@
 #define EMBER_AF_APPLICATION_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ELECTRICAL_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
-#define EMBER_AF_TEST_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_UNIT_TESTING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 
 /**** Cluster Plugins ****/
 
@@ -353,6 +353,6 @@
 #define ZCL_USING_ELECTRICAL_MEASUREMENT_CLUSTER_CLIENT
 #define EMBER_AF_PLUGIN_ELECTRICAL_MEASUREMENT_CLIENT
 
-// Use this macro to check if the client side of the Test Cluster cluster is included
-#define ZCL_USING_TEST_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_TEST_CLUSTER_CLIENT
+// Use this macro to check if the client side of the Unit Testing cluster is included
+#define ZCL_USING_UNIT_TESTING_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_UNIT_TESTING_CLIENT
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
index 847b38554d8c7b..1d5d8e64b02558 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
@@ -104,7 +104,7 @@
 | ApplicationBasic                                                    | 0x050D |
 | AccountLogin                                                        | 0x050E |
 | ElectricalMeasurement                                               | 0x0B04 |
-| TestCluster                                                         | 0xFFF1FC05|
+| UnitTesting                                                         | 0xFFF1FC05|
 | FaultInjection                                                      | 0xFFF1FC06|
 \*----------------------------------------------------------------------------*/
 
@@ -86254,7 +86254,7 @@ class SubscribeAttributeElectricalMeasurementClusterRevision : public SubscribeA
 };
 
 /*----------------------------------------------------------------------------*\
-| Cluster TestCluster                                                 | 0xFFF1FC05|
+| Cluster UnitTesting                                                 | 0xFFF1FC05|
 |------------------------------------------------------------------------------|
 | Commands:                                                           |        |
 | * Test                                                              |   0x00 |
@@ -86377,9 +86377,9 @@ class SubscribeAttributeElectricalMeasurementClusterRevision : public SubscribeA
 /*
  * Command Test
  */
-class TestClusterTest : public ClusterCommand {
+class UnitTestingTest : public ClusterCommand {
 public:
-    TestClusterTest()
+    UnitTestingTest()
         : ClusterCommand("test")
     {
         ClusterCommand::AddArguments();
@@ -86390,10 +86390,10 @@ class TestClusterTest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000000) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
@@ -86420,9 +86420,9 @@ class TestClusterTest : public ClusterCommand {
 /*
  * Command TestNotHandled
  */
-class TestClusterTestNotHandled : public ClusterCommand {
+class UnitTestingTestNotHandled : public ClusterCommand {
 public:
-    TestClusterTestNotHandled()
+    UnitTestingTestNotHandled()
         : ClusterCommand("test-not-handled")
     {
         ClusterCommand::AddArguments();
@@ -86433,10 +86433,10 @@ class TestClusterTestNotHandled : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000001) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestNotHandledParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNotHandledParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
@@ -86463,9 +86463,9 @@ class TestClusterTestNotHandled : public ClusterCommand {
 /*
  * Command TestSpecific
  */
-class TestClusterTestSpecific : public ClusterCommand {
+class UnitTestingTestSpecific : public ClusterCommand {
 public:
-    TestClusterTestSpecific()
+    UnitTestingTestSpecific()
         : ClusterCommand("test-specific")
     {
         ClusterCommand::AddArguments();
@@ -86476,17 +86476,17 @@ class TestClusterTestSpecific : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000002) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestSpecificParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestSpecificParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testSpecificWithParams:params
-                                 completion:^(MTRTestClusterClusterTestSpecificResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable values,
                                      NSError * _Nullable error) {
                                      NSLog(@"Values: %@", values);
                                      responsesNeeded--;
@@ -86508,9 +86508,9 @@ class TestClusterTestSpecific : public ClusterCommand {
 /*
  * Command TestUnknownCommand
  */
-class TestClusterTestUnknownCommand : public ClusterCommand {
+class UnitTestingTestUnknownCommand : public ClusterCommand {
 public:
-    TestClusterTestUnknownCommand()
+    UnitTestingTestUnknownCommand()
         : ClusterCommand("test-unknown-command")
     {
         ClusterCommand::AddArguments();
@@ -86521,10 +86521,10 @@ class TestClusterTestUnknownCommand : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000003) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestUnknownCommandParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestUnknownCommandParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
@@ -86551,9 +86551,9 @@ class TestClusterTestUnknownCommand : public ClusterCommand {
 /*
  * Command TestAddArguments
  */
-class TestClusterTestAddArguments : public ClusterCommand {
+class UnitTestingTestAddArguments : public ClusterCommand {
 public:
-    TestClusterTestAddArguments()
+    UnitTestingTestAddArguments()
         : ClusterCommand("test-add-arguments")
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -86566,10 +86566,10 @@ class TestClusterTestAddArguments : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000004) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.arg1 = [NSNumber numberWithUnsignedChar:mRequest.arg1];
@@ -86578,7 +86578,7 @@ class TestClusterTestAddArguments : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testAddArgumentsWithParams:params
-                                     completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                     completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                          NSError * _Nullable error) {
                                          NSLog(@"Values: %@", values);
                                          responsesNeeded--;
@@ -86595,15 +86595,15 @@ class TestClusterTestAddArguments : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestAddArguments::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestAddArguments::Type mRequest;
 };
 
 /*
  * Command TestSimpleArgumentRequest
  */
-class TestClusterTestSimpleArgumentRequest : public ClusterCommand {
+class UnitTestingTestSimpleArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestSimpleArgumentRequest()
+    UnitTestingTestSimpleArgumentRequest()
         : ClusterCommand("test-simple-argument-request")
     {
         AddArgument("Arg1", 0, 1, &mRequest.arg1);
@@ -86615,10 +86615,10 @@ class TestClusterTestSimpleArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000005) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestSimpleArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestSimpleArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.arg1 = [NSNumber numberWithBool:mRequest.arg1];
@@ -86626,7 +86626,7 @@ class TestClusterTestSimpleArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testSimpleArgumentRequestWithParams:params
-                                              completion:^(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable values,
+                                              completion:^(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable values,
                                                   NSError * _Nullable error) {
                                                   NSLog(@"Values: %@", values);
                                                   responsesNeeded--;
@@ -86643,15 +86643,15 @@ class TestClusterTestSimpleArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestSimpleArgumentRequest::Type mRequest;
 };
 
 /*
  * Command TestStructArrayArgumentRequest
  */
-class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
+class UnitTestingTestStructArrayArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestStructArrayArgumentRequest()
+    UnitTestingTestStructArrayArgumentRequest()
         : ClusterCommand("test-struct-array-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
         , mComplex_Arg2(&mRequest.arg2)
@@ -86672,20 +86672,20 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000006) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestStructArrayArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestStructArrayArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mRequest.arg1) {
-                MTRTestClusterClusterNestedStructList * newElement_0;
-                newElement_0 = [MTRTestClusterClusterNestedStructList new];
+                MTRUnitTestingClusterNestedStructList * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterNestedStructList new];
                 newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
                 newElement_0.b = [NSNumber numberWithBool:entry_0.b];
-                newElement_0.c = [MTRTestClusterClusterSimpleStruct new];
+                newElement_0.c = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.c.a = [NSNumber numberWithUnsignedChar:entry_0.c.a];
                 newElement_0.c.b = [NSNumber numberWithBool:entry_0.c.b];
                 newElement_0.c.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c.c)];
@@ -86699,8 +86699,8 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
                 { // Scope for our temporary variables
                     auto * array_2 = [NSMutableArray new];
                     for (auto & entry_2 : entry_0.d) {
-                        MTRTestClusterClusterSimpleStruct * newElement_2;
-                        newElement_2 = [MTRTestClusterClusterSimpleStruct new];
+                        MTRUnitTestingClusterSimpleStruct * newElement_2;
+                        newElement_2 = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_2.a = [NSNumber numberWithUnsignedChar:entry_2.a];
                         newElement_2.b = [NSNumber numberWithBool:entry_2.b];
                         newElement_2.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_2.c)];
@@ -86749,8 +86749,8 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mRequest.arg2) {
-                MTRTestClusterClusterSimpleStruct * newElement_0;
-                newElement_0 = [MTRTestClusterClusterSimpleStruct new];
+                MTRUnitTestingClusterSimpleStruct * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
                 newElement_0.b = [NSNumber numberWithBool:entry_0.b];
                 newElement_0.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c)];
@@ -86791,7 +86791,7 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
             [cluster
                 testStructArrayArgumentRequestWithParams:params
                                               completion:^(
-                                                  MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable values,
+                                                  MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable values,
                                                   NSError * _Nullable error) {
                                                   NSLog(@"Values: %@", values);
                                                   responsesNeeded--;
@@ -86808,21 +86808,21 @@ class TestClusterTestStructArrayArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestStructArrayArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
-    TypedComplexArgument>
+    TypedComplexArgument>
         mComplex_Arg2;
-    TypedComplexArgument> mComplex_Arg3;
+    TypedComplexArgument> mComplex_Arg3;
     TypedComplexArgument> mComplex_Arg4;
 };
 
 /*
  * Command TestStructArgumentRequest
  */
-class TestClusterTestStructArgumentRequest : public ClusterCommand {
+class UnitTestingTestStructArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestStructArgumentRequest()
+    UnitTestingTestStructArgumentRequest()
         : ClusterCommand("test-struct-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -86835,13 +86835,13 @@ class TestClusterTestStructArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000007) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestStructArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestStructArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
-        params.arg1 = [MTRTestClusterClusterSimpleStruct new];
+        params.arg1 = [MTRUnitTestingClusterSimpleStruct new];
         params.arg1.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.a];
         params.arg1.b = [NSNumber numberWithBool:mRequest.arg1.b];
         params.arg1.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.arg1.c)];
@@ -86856,7 +86856,7 @@ class TestClusterTestStructArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testStructArgumentRequestWithParams:params
-                                              completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                              completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                   NSError * _Nullable error) {
                                                   NSLog(@"Values: %@", values);
                                                   responsesNeeded--;
@@ -86873,16 +86873,16 @@ class TestClusterTestStructArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestStructArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestNestedStructArgumentRequest
  */
-class TestClusterTestNestedStructArgumentRequest : public ClusterCommand {
+class UnitTestingTestNestedStructArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestNestedStructArgumentRequest()
+    UnitTestingTestNestedStructArgumentRequest()
         : ClusterCommand("test-nested-struct-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -86895,16 +86895,16 @@ class TestClusterTestNestedStructArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000008) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
-        params.arg1 = [MTRTestClusterClusterNestedStruct new];
+        params.arg1 = [MTRUnitTestingClusterNestedStruct new];
         params.arg1.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.a];
         params.arg1.b = [NSNumber numberWithBool:mRequest.arg1.b];
-        params.arg1.c = [MTRTestClusterClusterSimpleStruct new];
+        params.arg1.c = [MTRUnitTestingClusterSimpleStruct new];
         params.arg1.c.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.c.a];
         params.arg1.c.b = [NSNumber numberWithBool:mRequest.arg1.c.b];
         params.arg1.c.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.arg1.c.c)];
@@ -86919,7 +86919,7 @@ class TestClusterTestNestedStructArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testNestedStructArgumentRequestWithParams:params
-                                                    completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                    completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                         NSError * _Nullable error) {
                                                         NSLog(@"Values: %@", values);
                                                         responsesNeeded--;
@@ -86936,16 +86936,16 @@ class TestClusterTestNestedStructArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestNestedStructArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestListStructArgumentRequest
  */
-class TestClusterTestListStructArgumentRequest : public ClusterCommand {
+class UnitTestingTestListStructArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestListStructArgumentRequest()
+    UnitTestingTestListStructArgumentRequest()
         : ClusterCommand("test-list-struct-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -86958,17 +86958,17 @@ class TestClusterTestListStructArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000009) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestListStructArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListStructArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mRequest.arg1) {
-                MTRTestClusterClusterSimpleStruct * newElement_0;
-                newElement_0 = [MTRTestClusterClusterSimpleStruct new];
+                MTRUnitTestingClusterSimpleStruct * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
                 newElement_0.b = [NSNumber numberWithBool:entry_0.b];
                 newElement_0.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c)];
@@ -86987,7 +86987,7 @@ class TestClusterTestListStructArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testListStructArgumentRequestWithParams:params
-                                                  completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                  completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                       NSError * _Nullable error) {
                                                       NSLog(@"Values: %@", values);
                                                       responsesNeeded--;
@@ -87004,17 +87004,17 @@ class TestClusterTestListStructArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestListStructArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
 };
 
 /*
  * Command TestListInt8UArgumentRequest
  */
-class TestClusterTestListInt8UArgumentRequest : public ClusterCommand {
+class UnitTestingTestListInt8UArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestListInt8UArgumentRequest()
+    UnitTestingTestListInt8UArgumentRequest()
         : ClusterCommand("test-list-int8uargument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -87027,10 +87027,10 @@ class TestClusterTestListInt8UArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         { // Scope for our temporary variables
@@ -87046,7 +87046,7 @@ class TestClusterTestListInt8UArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testListInt8UArgumentRequestWithParams:params
-                                                 completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                 completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                      NSError * _Nullable error) {
                                                      NSLog(@"Values: %@", values);
                                                      responsesNeeded--;
@@ -87063,16 +87063,16 @@ class TestClusterTestListInt8UArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestListInt8UArgumentRequest::Type mRequest;
     TypedComplexArgument> mComplex_Arg1;
 };
 
 /*
  * Command TestNestedStructListArgumentRequest
  */
-class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand {
+class UnitTestingTestNestedStructListArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestNestedStructListArgumentRequest()
+    UnitTestingTestNestedStructListArgumentRequest()
         : ClusterCommand("test-nested-struct-list-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -87085,16 +87085,16 @@ class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructListArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructListArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
-        params.arg1 = [MTRTestClusterClusterNestedStructList new];
+        params.arg1 = [MTRUnitTestingClusterNestedStructList new];
         params.arg1.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.a];
         params.arg1.b = [NSNumber numberWithBool:mRequest.arg1.b];
-        params.arg1.c = [MTRTestClusterClusterSimpleStruct new];
+        params.arg1.c = [MTRUnitTestingClusterSimpleStruct new];
         params.arg1.c.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.c.a];
         params.arg1.c.b = [NSNumber numberWithBool:mRequest.arg1.c.b];
         params.arg1.c.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.arg1.c.c)];
@@ -87108,8 +87108,8 @@ class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand {
         { // Scope for our temporary variables
             auto * array_1 = [NSMutableArray new];
             for (auto & entry_1 : mRequest.arg1.d) {
-                MTRTestClusterClusterSimpleStruct * newElement_1;
-                newElement_1 = [MTRTestClusterClusterSimpleStruct new];
+                MTRUnitTestingClusterSimpleStruct * newElement_1;
+                newElement_1 = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_1.a = [NSNumber numberWithUnsignedChar:entry_1.a];
                 newElement_1.b = [NSNumber numberWithBool:entry_1.b];
                 newElement_1.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_1.c)];
@@ -87155,7 +87155,7 @@ class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testNestedStructListArgumentRequestWithParams:params
-                                                        completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                        completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                             NSError * _Nullable error) {
                                                             NSLog(@"Values: %@", values);
                                                             responsesNeeded--;
@@ -87172,16 +87172,16 @@ class TestClusterTestNestedStructListArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::TestNestedStructListArgumentRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TestListNestedStructListArgumentRequest
  */
-class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand {
+class UnitTestingTestListNestedStructListArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestListNestedStructListArgumentRequest()
+    UnitTestingTestListNestedStructListArgumentRequest()
         : ClusterCommand("test-list-nested-struct-list-argument-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -87194,20 +87194,20 @@ class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000C) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestListNestedStructListArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mRequest.arg1) {
-                MTRTestClusterClusterNestedStructList * newElement_0;
-                newElement_0 = [MTRTestClusterClusterNestedStructList new];
+                MTRUnitTestingClusterNestedStructList * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterNestedStructList new];
                 newElement_0.a = [NSNumber numberWithUnsignedChar:entry_0.a];
                 newElement_0.b = [NSNumber numberWithBool:entry_0.b];
-                newElement_0.c = [MTRTestClusterClusterSimpleStruct new];
+                newElement_0.c = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.c.a = [NSNumber numberWithUnsignedChar:entry_0.c.a];
                 newElement_0.c.b = [NSNumber numberWithBool:entry_0.c.b];
                 newElement_0.c.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.c.c)];
@@ -87221,8 +87221,8 @@ class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
                 { // Scope for our temporary variables
                     auto * array_2 = [NSMutableArray new];
                     for (auto & entry_2 : entry_0.d) {
-                        MTRTestClusterClusterSimpleStruct * newElement_2;
-                        newElement_2 = [MTRTestClusterClusterSimpleStruct new];
+                        MTRUnitTestingClusterSimpleStruct * newElement_2;
+                        newElement_2 = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_2.a = [NSNumber numberWithUnsignedChar:entry_2.a];
                         newElement_2.b = [NSNumber numberWithBool:entry_2.b];
                         newElement_2.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_2.c)];
@@ -87273,7 +87273,7 @@ class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
         while (repeatCount--) {
             [cluster
                 testListNestedStructListArgumentRequestWithParams:params
-                                                       completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                       completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                            NSError * _Nullable error) {
                                                            NSLog(@"Values: %@", values);
                                                            responsesNeeded--;
@@ -87290,17 +87290,17 @@ class TestClusterTestListNestedStructListArgumentRequest : public ClusterCommand
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_Arg1;
 };
 
 /*
  * Command TestListInt8UReverseRequest
  */
-class TestClusterTestListInt8UReverseRequest : public ClusterCommand {
+class UnitTestingTestListInt8UReverseRequest : public ClusterCommand {
 public:
-    TestClusterTestListInt8UReverseRequest()
+    UnitTestingTestListInt8UReverseRequest()
         : ClusterCommand("test-list-int8ureverse-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -87313,10 +87313,10 @@ class TestClusterTestListInt8UReverseRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000D) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UReverseRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UReverseRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         { // Scope for our temporary variables
@@ -87333,7 +87333,7 @@ class TestClusterTestListInt8UReverseRequest : public ClusterCommand {
         while (repeatCount--) {
             [cluster
                 testListInt8UReverseRequestWithParams:params
-                                           completion:^(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable values,
+                                           completion:^(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable values,
                                                NSError * _Nullable error) {
                                                NSLog(@"Values: %@", values);
                                                responsesNeeded--;
@@ -87350,16 +87350,16 @@ class TestClusterTestListInt8UReverseRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestListInt8UReverseRequest::Type mRequest;
     TypedComplexArgument> mComplex_Arg1;
 };
 
 /*
  * Command TestEnumsRequest
  */
-class TestClusterTestEnumsRequest : public ClusterCommand {
+class UnitTestingTestEnumsRequest : public ClusterCommand {
 public:
-    TestClusterTestEnumsRequest()
+    UnitTestingTestEnumsRequest()
         : ClusterCommand("test-enums-request")
     {
         AddArgument("Arg1", 0, UINT16_MAX, &mRequest.arg1);
@@ -87372,10 +87372,10 @@ class TestClusterTestEnumsRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestEnumsRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestEnumsRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.arg1 = [NSNumber numberWithUnsignedShort:chip::to_underlying(mRequest.arg1)];
@@ -87384,7 +87384,7 @@ class TestClusterTestEnumsRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testEnumsRequestWithParams:params
-                                     completion:^(MTRTestClusterClusterTestEnumsResponseParams * _Nullable values,
+                                     completion:^(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable values,
                                          NSError * _Nullable error) {
                                          NSLog(@"Values: %@", values);
                                          responsesNeeded--;
@@ -87401,15 +87401,15 @@ class TestClusterTestEnumsRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEnumsRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEnumsRequest::Type mRequest;
 };
 
 /*
  * Command TestNullableOptionalRequest
  */
-class TestClusterTestNullableOptionalRequest : public ClusterCommand {
+class UnitTestingTestNullableOptionalRequest : public ClusterCommand {
 public:
-    TestClusterTestNullableOptionalRequest()
+    UnitTestingTestNullableOptionalRequest()
         : ClusterCommand("test-nullable-optional-request")
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -87421,10 +87421,10 @@ class TestClusterTestNullableOptionalRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x0000000F) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestNullableOptionalRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNullableOptionalRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         if (mRequest.arg1.HasValue()) {
@@ -87441,7 +87441,7 @@ class TestClusterTestNullableOptionalRequest : public ClusterCommand {
         while (repeatCount--) {
             [cluster
                 testNullableOptionalRequestWithParams:params
-                                           completion:^(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable values,
+                                           completion:^(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable values,
                                                NSError * _Nullable error) {
                                                NSLog(@"Values: %@", values);
                                                responsesNeeded--;
@@ -87458,15 +87458,15 @@ class TestClusterTestNullableOptionalRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestNullableOptionalRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestNullableOptionalRequest::Type mRequest;
 };
 
 /*
  * Command TestComplexNullableOptionalRequest
  */
-class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
+class UnitTestingTestComplexNullableOptionalRequest : public ClusterCommand {
 public:
-    TestClusterTestComplexNullableOptionalRequest()
+    UnitTestingTestComplexNullableOptionalRequest()
         : ClusterCommand("test-complex-nullable-optional-request")
         , mComplex_NullableStruct(&mRequest.nullableStruct)
         , mComplex_OptionalStruct(&mRequest.optionalStruct)
@@ -87495,10 +87495,10 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000010) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestComplexNullableOptionalRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestComplexNullableOptionalRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         if (mRequest.nullableInt.IsNull()) {
@@ -87549,7 +87549,7 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
         if (mRequest.nullableStruct.IsNull()) {
             params.nullableStruct = nil;
         } else {
-            params.nullableStruct = [MTRTestClusterClusterSimpleStruct new];
+            params.nullableStruct = [MTRUnitTestingClusterSimpleStruct new];
             params.nullableStruct.a = [NSNumber numberWithUnsignedChar:mRequest.nullableStruct.Value().a];
             params.nullableStruct.b = [NSNumber numberWithBool:mRequest.nullableStruct.Value().b];
             params.nullableStruct.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.nullableStruct.Value().c)];
@@ -87563,7 +87563,7 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
             params.nullableStruct.h = [NSNumber numberWithDouble:mRequest.nullableStruct.Value().h];
         }
         if (mRequest.optionalStruct.HasValue()) {
-            params.optionalStruct = [MTRTestClusterClusterSimpleStruct new];
+            params.optionalStruct = [MTRUnitTestingClusterSimpleStruct new];
             params.optionalStruct.a = [NSNumber numberWithUnsignedChar:mRequest.optionalStruct.Value().a];
             params.optionalStruct.b = [NSNumber numberWithBool:mRequest.optionalStruct.Value().b];
             params.optionalStruct.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.optionalStruct.Value().c)];
@@ -87582,7 +87582,7 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
             if (mRequest.nullableOptionalStruct.Value().IsNull()) {
                 params.nullableOptionalStruct = nil;
             } else {
-                params.nullableOptionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                params.nullableOptionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                 params.nullableOptionalStruct.a =
                     [NSNumber numberWithUnsignedChar:mRequest.nullableOptionalStruct.Value().Value().a];
                 params.nullableOptionalStruct.b = [NSNumber numberWithBool:mRequest.nullableOptionalStruct.Value().Value().b];
@@ -87651,7 +87651,7 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
             [cluster
                 testComplexNullableOptionalRequestWithParams:params
                                                   completion:^(
-                                                      MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable values,
+                                                      MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable values,
                                                       NSError * _Nullable error) {
                                                       NSLog(@"Values: %@", values);
                                                       responsesNeeded--;
@@ -87668,29 +87668,29 @@ class TestClusterTestComplexNullableOptionalRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestComplexNullableOptionalRequest::Type mRequest;
-    TypedComplexArgument>
+    chip::app::Clusters::UnitTesting::Commands::TestComplexNullableOptionalRequest::Type mRequest;
+    TypedComplexArgument>
         mComplex_NullableStruct;
-    TypedComplexArgument> mComplex_OptionalStruct;
+    TypedComplexArgument> mComplex_OptionalStruct;
     TypedComplexArgument<
-        chip::Optional>>
+        chip::Optional>>
         mComplex_NullableOptionalStruct;
     TypedComplexArgument<
-        chip::app::DataModel::Nullable>>
+        chip::app::DataModel::Nullable>>
         mComplex_NullableList;
-    TypedComplexArgument>>
+    TypedComplexArgument>>
         mComplex_OptionalList;
     TypedComplexArgument>>>
+        chip::app::DataModel::Nullable>>>
         mComplex_NullableOptionalList;
 };
 
 /*
  * Command SimpleStructEchoRequest
  */
-class TestClusterSimpleStructEchoRequest : public ClusterCommand {
+class UnitTestingSimpleStructEchoRequest : public ClusterCommand {
 public:
-    TestClusterSimpleStructEchoRequest()
+    UnitTestingSimpleStructEchoRequest()
         : ClusterCommand("simple-struct-echo-request")
         , mComplex_Arg1(&mRequest.arg1)
     {
@@ -87703,13 +87703,13 @@ class TestClusterSimpleStructEchoRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000011) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterSimpleStructEchoRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterSimpleStructEchoRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
-        params.arg1 = [MTRTestClusterClusterSimpleStruct new];
+        params.arg1 = [MTRUnitTestingClusterSimpleStruct new];
         params.arg1.a = [NSNumber numberWithUnsignedChar:mRequest.arg1.a];
         params.arg1.b = [NSNumber numberWithBool:mRequest.arg1.b];
         params.arg1.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.arg1.c)];
@@ -87724,7 +87724,7 @@ class TestClusterSimpleStructEchoRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster simpleStructEchoRequestWithParams:params
-                                            completion:^(MTRTestClusterClusterSimpleStructResponseParams * _Nullable values,
+                                            completion:^(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable values,
                                                 NSError * _Nullable error) {
                                                 NSLog(@"Values: %@", values);
                                                 responsesNeeded--;
@@ -87741,16 +87741,16 @@ class TestClusterSimpleStructEchoRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::SimpleStructEchoRequest::Type mRequest;
-    TypedComplexArgument mComplex_Arg1;
+    chip::app::Clusters::UnitTesting::Commands::SimpleStructEchoRequest::Type mRequest;
+    TypedComplexArgument mComplex_Arg1;
 };
 
 /*
  * Command TimedInvokeRequest
  */
-class TestClusterTimedInvokeRequest : public ClusterCommand {
+class UnitTestingTimedInvokeRequest : public ClusterCommand {
 public:
-    TestClusterTimedInvokeRequest()
+    UnitTestingTimedInvokeRequest()
         : ClusterCommand("timed-invoke-request")
     {
         ClusterCommand::AddArguments();
@@ -87761,10 +87761,10 @@ class TestClusterTimedInvokeRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000012) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTimedInvokeRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTimedInvokeRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
@@ -87791,9 +87791,9 @@ class TestClusterTimedInvokeRequest : public ClusterCommand {
 /*
  * Command TestSimpleOptionalArgumentRequest
  */
-class TestClusterTestSimpleOptionalArgumentRequest : public ClusterCommand {
+class UnitTestingTestSimpleOptionalArgumentRequest : public ClusterCommand {
 public:
-    TestClusterTestSimpleOptionalArgumentRequest()
+    UnitTestingTestSimpleOptionalArgumentRequest()
         : ClusterCommand("test-simple-optional-argument-request")
     {
         AddArgument("Arg1", 0, 1, &mRequest.arg1);
@@ -87805,10 +87805,10 @@ class TestClusterTestSimpleOptionalArgumentRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000013) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         if (mRequest.arg1.HasValue()) {
@@ -87835,15 +87835,15 @@ class TestClusterTestSimpleOptionalArgumentRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestSimpleOptionalArgumentRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type mRequest;
 };
 
 /*
  * Command TestEmitTestEventRequest
  */
-class TestClusterTestEmitTestEventRequest : public ClusterCommand {
+class UnitTestingTestEmitTestEventRequest : public ClusterCommand {
 public:
-    TestClusterTestEmitTestEventRequest()
+    UnitTestingTestEmitTestEventRequest()
         : ClusterCommand("test-emit-test-event-request")
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -87857,10 +87857,10 @@ class TestClusterTestEmitTestEventRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000014) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestEmitTestEventRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestEmitTestEventRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.arg1 = [NSNumber numberWithUnsignedChar:mRequest.arg1];
@@ -87870,7 +87870,7 @@ class TestClusterTestEmitTestEventRequest : public ClusterCommand {
         uint16_t __block responsesNeeded = repeatCount;
         while (repeatCount--) {
             [cluster testEmitTestEventRequestWithParams:params
-                                             completion:^(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable values,
+                                             completion:^(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable values,
                                                  NSError * _Nullable error) {
                                                  NSLog(@"Values: %@", values);
                                                  responsesNeeded--;
@@ -87887,15 +87887,15 @@ class TestClusterTestEmitTestEventRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEmitTestEventRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEmitTestEventRequest::Type mRequest;
 };
 
 /*
  * Command TestEmitTestFabricScopedEventRequest
  */
-class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand {
+class UnitTestingTestEmitTestFabricScopedEventRequest : public ClusterCommand {
 public:
-    TestClusterTestEmitTestFabricScopedEventRequest()
+    UnitTestingTestEmitTestFabricScopedEventRequest()
         : ClusterCommand("test-emit-test-fabric-scoped-event-request")
     {
         AddArgument("Arg1", 0, UINT8_MAX, &mRequest.arg1);
@@ -87907,10 +87907,10 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) command (0x00000015) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
-        __auto_type * params = [[MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.arg1 = [NSNumber numberWithUnsignedChar:mRequest.arg1];
@@ -87920,7 +87920,7 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand {
             [cluster
                 testEmitTestFabricScopedEventRequestWithParams:params
                                                     completion:^(
-                                                        MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable values,
+                                                        MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable values,
                                                         NSError * _Nullable error) {
                                                         NSLog(@"Values: %@", values);
                                                         responsesNeeded--;
@@ -87937,33 +87937,33 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Commands::TestEmitTestFabricScopedEventRequest::Type mRequest;
+    chip::app::Clusters::UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::Type mRequest;
 };
 
 /*
  * Attribute Boolean
  */
-class ReadTestClusterBoolean : public ReadAttribute {
+class ReadUnitTestingBoolean : public ReadAttribute {
 public:
-    ReadTestClusterBoolean()
+    ReadUnitTestingBoolean()
         : ReadAttribute("boolean")
     {
     }
 
-    ~ReadTestClusterBoolean() {}
+    ~ReadUnitTestingBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000000) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Boolean response %@", [value description]);
+            NSLog(@"UnitTesting.Boolean response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Boolean read Error", error);
+                LogNSError("UnitTesting Boolean read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -87971,9 +87971,9 @@ class ReadTestClusterBoolean : public ReadAttribute {
     }
 };
 
-class WriteTestClusterBoolean : public WriteAttribute {
+class WriteUnitTestingBoolean : public WriteAttribute {
 public:
-    WriteTestClusterBoolean()
+    WriteUnitTestingBoolean()
         : WriteAttribute("boolean")
     {
         AddArgument("attr-name", "boolean");
@@ -87981,13 +87981,13 @@ class WriteTestClusterBoolean : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterBoolean() {}
+    ~WriteUnitTestingBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000000) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88000,7 +88000,7 @@ class WriteTestClusterBoolean : public WriteAttribute {
                                          params:params
                                      completion:^(NSError * _Nullable error) {
                                          if (error != nil) {
-                                             LogNSError("TestCluster Boolean write Error", error);
+                                             LogNSError("UnitTesting Boolean write Error", error);
                                          }
                                          SetCommandExitStatus(error);
                                      }];
@@ -88011,20 +88011,20 @@ class WriteTestClusterBoolean : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterBoolean : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingBoolean : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterBoolean()
+    SubscribeAttributeUnitTestingBoolean()
         : SubscribeAttribute("boolean")
     {
     }
 
-    ~SubscribeAttributeTestClusterBoolean() {}
+    ~SubscribeAttributeUnitTestingBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000000) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88042,7 +88042,7 @@ class SubscribeAttributeTestClusterBoolean : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Boolean response %@", [value description]);
+                NSLog(@"UnitTesting.Boolean response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88053,27 +88053,27 @@ class SubscribeAttributeTestClusterBoolean : public SubscribeAttribute {
 /*
  * Attribute Bitmap8
  */
-class ReadTestClusterBitmap8 : public ReadAttribute {
+class ReadUnitTestingBitmap8 : public ReadAttribute {
 public:
-    ReadTestClusterBitmap8()
+    ReadUnitTestingBitmap8()
         : ReadAttribute("bitmap8")
     {
     }
 
-    ~ReadTestClusterBitmap8() {}
+    ~ReadUnitTestingBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000001) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeBitmap8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Bitmap8 response %@", [value description]);
+            NSLog(@"UnitTesting.Bitmap8 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Bitmap8 read Error", error);
+                LogNSError("UnitTesting Bitmap8 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88081,9 +88081,9 @@ class ReadTestClusterBitmap8 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterBitmap8 : public WriteAttribute {
+class WriteUnitTestingBitmap8 : public WriteAttribute {
 public:
-    WriteTestClusterBitmap8()
+    WriteUnitTestingBitmap8()
         : WriteAttribute("bitmap8")
     {
         AddArgument("attr-name", "bitmap8");
@@ -88091,13 +88091,13 @@ class WriteTestClusterBitmap8 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterBitmap8() {}
+    ~WriteUnitTestingBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000001) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88110,7 +88110,7 @@ class WriteTestClusterBitmap8 : public WriteAttribute {
                                          params:params
                                      completion:^(NSError * _Nullable error) {
                                          if (error != nil) {
-                                             LogNSError("TestCluster Bitmap8 write Error", error);
+                                             LogNSError("UnitTesting Bitmap8 write Error", error);
                                          }
                                          SetCommandExitStatus(error);
                                      }];
@@ -88121,20 +88121,20 @@ class WriteTestClusterBitmap8 : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterBitmap8 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingBitmap8 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterBitmap8()
+    SubscribeAttributeUnitTestingBitmap8()
         : SubscribeAttribute("bitmap8")
     {
     }
 
-    ~SubscribeAttributeTestClusterBitmap8() {}
+    ~SubscribeAttributeUnitTestingBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000001) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88152,7 +88152,7 @@ class SubscribeAttributeTestClusterBitmap8 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Bitmap8 response %@", [value description]);
+                NSLog(@"UnitTesting.Bitmap8 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88163,27 +88163,27 @@ class SubscribeAttributeTestClusterBitmap8 : public SubscribeAttribute {
 /*
  * Attribute Bitmap16
  */
-class ReadTestClusterBitmap16 : public ReadAttribute {
+class ReadUnitTestingBitmap16 : public ReadAttribute {
 public:
-    ReadTestClusterBitmap16()
+    ReadUnitTestingBitmap16()
         : ReadAttribute("bitmap16")
     {
     }
 
-    ~ReadTestClusterBitmap16() {}
+    ~ReadUnitTestingBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000002) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeBitmap16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Bitmap16 response %@", [value description]);
+            NSLog(@"UnitTesting.Bitmap16 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Bitmap16 read Error", error);
+                LogNSError("UnitTesting Bitmap16 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88191,9 +88191,9 @@ class ReadTestClusterBitmap16 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterBitmap16 : public WriteAttribute {
+class WriteUnitTestingBitmap16 : public WriteAttribute {
 public:
-    WriteTestClusterBitmap16()
+    WriteUnitTestingBitmap16()
         : WriteAttribute("bitmap16")
     {
         AddArgument("attr-name", "bitmap16");
@@ -88201,13 +88201,13 @@ class WriteTestClusterBitmap16 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterBitmap16() {}
+    ~WriteUnitTestingBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000002) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88220,7 +88220,7 @@ class WriteTestClusterBitmap16 : public WriteAttribute {
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("TestCluster Bitmap16 write Error", error);
+                                              LogNSError("UnitTesting Bitmap16 write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -88231,20 +88231,20 @@ class WriteTestClusterBitmap16 : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterBitmap16 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingBitmap16 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterBitmap16()
+    SubscribeAttributeUnitTestingBitmap16()
         : SubscribeAttribute("bitmap16")
     {
     }
 
-    ~SubscribeAttributeTestClusterBitmap16() {}
+    ~SubscribeAttributeUnitTestingBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000002) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88262,7 +88262,7 @@ class SubscribeAttributeTestClusterBitmap16 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Bitmap16 response %@", [value description]);
+                NSLog(@"UnitTesting.Bitmap16 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88273,27 +88273,27 @@ class SubscribeAttributeTestClusterBitmap16 : public SubscribeAttribute {
 /*
  * Attribute Bitmap32
  */
-class ReadTestClusterBitmap32 : public ReadAttribute {
+class ReadUnitTestingBitmap32 : public ReadAttribute {
 public:
-    ReadTestClusterBitmap32()
+    ReadUnitTestingBitmap32()
         : ReadAttribute("bitmap32")
     {
     }
 
-    ~ReadTestClusterBitmap32() {}
+    ~ReadUnitTestingBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000003) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeBitmap32WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Bitmap32 response %@", [value description]);
+            NSLog(@"UnitTesting.Bitmap32 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Bitmap32 read Error", error);
+                LogNSError("UnitTesting Bitmap32 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88301,9 +88301,9 @@ class ReadTestClusterBitmap32 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterBitmap32 : public WriteAttribute {
+class WriteUnitTestingBitmap32 : public WriteAttribute {
 public:
-    WriteTestClusterBitmap32()
+    WriteUnitTestingBitmap32()
         : WriteAttribute("bitmap32")
     {
         AddArgument("attr-name", "bitmap32");
@@ -88311,13 +88311,13 @@ class WriteTestClusterBitmap32 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterBitmap32() {}
+    ~WriteUnitTestingBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000003) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88330,7 +88330,7 @@ class WriteTestClusterBitmap32 : public WriteAttribute {
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("TestCluster Bitmap32 write Error", error);
+                                              LogNSError("UnitTesting Bitmap32 write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -88341,20 +88341,20 @@ class WriteTestClusterBitmap32 : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterBitmap32 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingBitmap32 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterBitmap32()
+    SubscribeAttributeUnitTestingBitmap32()
         : SubscribeAttribute("bitmap32")
     {
     }
 
-    ~SubscribeAttributeTestClusterBitmap32() {}
+    ~SubscribeAttributeUnitTestingBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000003) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88372,7 +88372,7 @@ class SubscribeAttributeTestClusterBitmap32 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Bitmap32 response %@", [value description]);
+                NSLog(@"UnitTesting.Bitmap32 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88383,27 +88383,27 @@ class SubscribeAttributeTestClusterBitmap32 : public SubscribeAttribute {
 /*
  * Attribute Bitmap64
  */
-class ReadTestClusterBitmap64 : public ReadAttribute {
+class ReadUnitTestingBitmap64 : public ReadAttribute {
 public:
-    ReadTestClusterBitmap64()
+    ReadUnitTestingBitmap64()
         : ReadAttribute("bitmap64")
     {
     }
 
-    ~ReadTestClusterBitmap64() {}
+    ~ReadUnitTestingBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000004) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeBitmap64WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Bitmap64 response %@", [value description]);
+            NSLog(@"UnitTesting.Bitmap64 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Bitmap64 read Error", error);
+                LogNSError("UnitTesting Bitmap64 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88411,9 +88411,9 @@ class ReadTestClusterBitmap64 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterBitmap64 : public WriteAttribute {
+class WriteUnitTestingBitmap64 : public WriteAttribute {
 public:
-    WriteTestClusterBitmap64()
+    WriteUnitTestingBitmap64()
         : WriteAttribute("bitmap64")
     {
         AddArgument("attr-name", "bitmap64");
@@ -88421,13 +88421,13 @@ class WriteTestClusterBitmap64 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterBitmap64() {}
+    ~WriteUnitTestingBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000004) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88440,7 +88440,7 @@ class WriteTestClusterBitmap64 : public WriteAttribute {
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("TestCluster Bitmap64 write Error", error);
+                                              LogNSError("UnitTesting Bitmap64 write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -88451,20 +88451,20 @@ class WriteTestClusterBitmap64 : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterBitmap64 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingBitmap64 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterBitmap64()
+    SubscribeAttributeUnitTestingBitmap64()
         : SubscribeAttribute("bitmap64")
     {
     }
 
-    ~SubscribeAttributeTestClusterBitmap64() {}
+    ~SubscribeAttributeUnitTestingBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000004) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88482,7 +88482,7 @@ class SubscribeAttributeTestClusterBitmap64 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Bitmap64 response %@", [value description]);
+                NSLog(@"UnitTesting.Bitmap64 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88493,27 +88493,27 @@ class SubscribeAttributeTestClusterBitmap64 : public SubscribeAttribute {
 /*
  * Attribute Int8u
  */
-class ReadTestClusterInt8u : public ReadAttribute {
+class ReadUnitTestingInt8u : public ReadAttribute {
 public:
-    ReadTestClusterInt8u()
+    ReadUnitTestingInt8u()
         : ReadAttribute("int8u")
     {
     }
 
-    ~ReadTestClusterInt8u() {}
+    ~ReadUnitTestingInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000005) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int8u response %@", [value description]);
+            NSLog(@"UnitTesting.Int8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int8u read Error", error);
+                LogNSError("UnitTesting Int8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88521,9 +88521,9 @@ class ReadTestClusterInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt8u : public WriteAttribute {
+class WriteUnitTestingInt8u : public WriteAttribute {
 public:
-    WriteTestClusterInt8u()
+    WriteUnitTestingInt8u()
         : WriteAttribute("int8u")
     {
         AddArgument("attr-name", "int8u");
@@ -88531,13 +88531,13 @@ class WriteTestClusterInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt8u() {}
+    ~WriteUnitTestingInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88550,7 +88550,7 @@ class WriteTestClusterInt8u : public WriteAttribute {
                                        params:params
                                    completion:^(NSError * _Nullable error) {
                                        if (error != nil) {
-                                           LogNSError("TestCluster Int8u write Error", error);
+                                           LogNSError("UnitTesting Int8u write Error", error);
                                        }
                                        SetCommandExitStatus(error);
                                    }];
@@ -88561,20 +88561,20 @@ class WriteTestClusterInt8u : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt8u()
+    SubscribeAttributeUnitTestingInt8u()
         : SubscribeAttribute("int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt8u() {}
+    ~SubscribeAttributeUnitTestingInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88592,7 +88592,7 @@ class SubscribeAttributeTestClusterInt8u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int8u response %@", [value description]);
+                NSLog(@"UnitTesting.Int8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88603,27 +88603,27 @@ class SubscribeAttributeTestClusterInt8u : public SubscribeAttribute {
 /*
  * Attribute Int16u
  */
-class ReadTestClusterInt16u : public ReadAttribute {
+class ReadUnitTestingInt16u : public ReadAttribute {
 public:
-    ReadTestClusterInt16u()
+    ReadUnitTestingInt16u()
         : ReadAttribute("int16u")
     {
     }
 
-    ~ReadTestClusterInt16u() {}
+    ~ReadUnitTestingInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000006) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int16u response %@", [value description]);
+            NSLog(@"UnitTesting.Int16u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int16u read Error", error);
+                LogNSError("UnitTesting Int16u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88631,9 +88631,9 @@ class ReadTestClusterInt16u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt16u : public WriteAttribute {
+class WriteUnitTestingInt16u : public WriteAttribute {
 public:
-    WriteTestClusterInt16u()
+    WriteUnitTestingInt16u()
         : WriteAttribute("int16u")
     {
         AddArgument("attr-name", "int16u");
@@ -88641,13 +88641,13 @@ class WriteTestClusterInt16u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt16u() {}
+    ~WriteUnitTestingInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88660,7 +88660,7 @@ class WriteTestClusterInt16u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int16u write Error", error);
+                                            LogNSError("UnitTesting Int16u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -88671,20 +88671,20 @@ class WriteTestClusterInt16u : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt16u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt16u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt16u()
+    SubscribeAttributeUnitTestingInt16u()
         : SubscribeAttribute("int16u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt16u() {}
+    ~SubscribeAttributeUnitTestingInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88702,7 +88702,7 @@ class SubscribeAttributeTestClusterInt16u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int16u response %@", [value description]);
+                NSLog(@"UnitTesting.Int16u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88713,27 +88713,27 @@ class SubscribeAttributeTestClusterInt16u : public SubscribeAttribute {
 /*
  * Attribute Int24u
  */
-class ReadTestClusterInt24u : public ReadAttribute {
+class ReadUnitTestingInt24u : public ReadAttribute {
 public:
-    ReadTestClusterInt24u()
+    ReadUnitTestingInt24u()
         : ReadAttribute("int24u")
     {
     }
 
-    ~ReadTestClusterInt24u() {}
+    ~ReadUnitTestingInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000007) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt24uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int24u response %@", [value description]);
+            NSLog(@"UnitTesting.Int24u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int24u read Error", error);
+                LogNSError("UnitTesting Int24u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88741,9 +88741,9 @@ class ReadTestClusterInt24u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt24u : public WriteAttribute {
+class WriteUnitTestingInt24u : public WriteAttribute {
 public:
-    WriteTestClusterInt24u()
+    WriteUnitTestingInt24u()
         : WriteAttribute("int24u")
     {
         AddArgument("attr-name", "int24u");
@@ -88751,13 +88751,13 @@ class WriteTestClusterInt24u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt24u() {}
+    ~WriteUnitTestingInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000007) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88770,7 +88770,7 @@ class WriteTestClusterInt24u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int24u write Error", error);
+                                            LogNSError("UnitTesting Int24u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -88781,20 +88781,20 @@ class WriteTestClusterInt24u : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt24u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt24u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt24u()
+    SubscribeAttributeUnitTestingInt24u()
         : SubscribeAttribute("int24u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt24u() {}
+    ~SubscribeAttributeUnitTestingInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000007) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88812,7 +88812,7 @@ class SubscribeAttributeTestClusterInt24u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int24u response %@", [value description]);
+                NSLog(@"UnitTesting.Int24u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88823,27 +88823,27 @@ class SubscribeAttributeTestClusterInt24u : public SubscribeAttribute {
 /*
  * Attribute Int32u
  */
-class ReadTestClusterInt32u : public ReadAttribute {
+class ReadUnitTestingInt32u : public ReadAttribute {
 public:
-    ReadTestClusterInt32u()
+    ReadUnitTestingInt32u()
         : ReadAttribute("int32u")
     {
     }
 
-    ~ReadTestClusterInt32u() {}
+    ~ReadUnitTestingInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000008) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt32uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int32u response %@", [value description]);
+            NSLog(@"UnitTesting.Int32u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int32u read Error", error);
+                LogNSError("UnitTesting Int32u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88851,9 +88851,9 @@ class ReadTestClusterInt32u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt32u : public WriteAttribute {
+class WriteUnitTestingInt32u : public WriteAttribute {
 public:
-    WriteTestClusterInt32u()
+    WriteUnitTestingInt32u()
         : WriteAttribute("int32u")
     {
         AddArgument("attr-name", "int32u");
@@ -88861,13 +88861,13 @@ class WriteTestClusterInt32u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt32u() {}
+    ~WriteUnitTestingInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000008) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88880,7 +88880,7 @@ class WriteTestClusterInt32u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int32u write Error", error);
+                                            LogNSError("UnitTesting Int32u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -88891,20 +88891,20 @@ class WriteTestClusterInt32u : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt32u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt32u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt32u()
+    SubscribeAttributeUnitTestingInt32u()
         : SubscribeAttribute("int32u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt32u() {}
+    ~SubscribeAttributeUnitTestingInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000008) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -88922,7 +88922,7 @@ class SubscribeAttributeTestClusterInt32u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int32u response %@", [value description]);
+                NSLog(@"UnitTesting.Int32u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -88933,27 +88933,27 @@ class SubscribeAttributeTestClusterInt32u : public SubscribeAttribute {
 /*
  * Attribute Int40u
  */
-class ReadTestClusterInt40u : public ReadAttribute {
+class ReadUnitTestingInt40u : public ReadAttribute {
 public:
-    ReadTestClusterInt40u()
+    ReadUnitTestingInt40u()
         : ReadAttribute("int40u")
     {
     }
 
-    ~ReadTestClusterInt40u() {}
+    ~ReadUnitTestingInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000009) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt40uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int40u response %@", [value description]);
+            NSLog(@"UnitTesting.Int40u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int40u read Error", error);
+                LogNSError("UnitTesting Int40u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -88961,9 +88961,9 @@ class ReadTestClusterInt40u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt40u : public WriteAttribute {
+class WriteUnitTestingInt40u : public WriteAttribute {
 public:
-    WriteTestClusterInt40u()
+    WriteUnitTestingInt40u()
         : WriteAttribute("int40u")
     {
         AddArgument("attr-name", "int40u");
@@ -88971,13 +88971,13 @@ class WriteTestClusterInt40u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt40u() {}
+    ~WriteUnitTestingInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000009) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -88990,7 +88990,7 @@ class WriteTestClusterInt40u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int40u write Error", error);
+                                            LogNSError("UnitTesting Int40u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89001,20 +89001,20 @@ class WriteTestClusterInt40u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt40u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt40u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt40u()
+    SubscribeAttributeUnitTestingInt40u()
         : SubscribeAttribute("int40u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt40u() {}
+    ~SubscribeAttributeUnitTestingInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000009) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89032,7 +89032,7 @@ class SubscribeAttributeTestClusterInt40u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int40u response %@", [value description]);
+                NSLog(@"UnitTesting.Int40u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89043,27 +89043,27 @@ class SubscribeAttributeTestClusterInt40u : public SubscribeAttribute {
 /*
  * Attribute Int48u
  */
-class ReadTestClusterInt48u : public ReadAttribute {
+class ReadUnitTestingInt48u : public ReadAttribute {
 public:
-    ReadTestClusterInt48u()
+    ReadUnitTestingInt48u()
         : ReadAttribute("int48u")
     {
     }
 
-    ~ReadTestClusterInt48u() {}
+    ~ReadUnitTestingInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt48uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int48u response %@", [value description]);
+            NSLog(@"UnitTesting.Int48u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int48u read Error", error);
+                LogNSError("UnitTesting Int48u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89071,9 +89071,9 @@ class ReadTestClusterInt48u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt48u : public WriteAttribute {
+class WriteUnitTestingInt48u : public WriteAttribute {
 public:
-    WriteTestClusterInt48u()
+    WriteUnitTestingInt48u()
         : WriteAttribute("int48u")
     {
         AddArgument("attr-name", "int48u");
@@ -89081,13 +89081,13 @@ class WriteTestClusterInt48u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt48u() {}
+    ~WriteUnitTestingInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89100,7 +89100,7 @@ class WriteTestClusterInt48u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int48u write Error", error);
+                                            LogNSError("UnitTesting Int48u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89111,20 +89111,20 @@ class WriteTestClusterInt48u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt48u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt48u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt48u()
+    SubscribeAttributeUnitTestingInt48u()
         : SubscribeAttribute("int48u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt48u() {}
+    ~SubscribeAttributeUnitTestingInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89142,7 +89142,7 @@ class SubscribeAttributeTestClusterInt48u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int48u response %@", [value description]);
+                NSLog(@"UnitTesting.Int48u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89153,27 +89153,27 @@ class SubscribeAttributeTestClusterInt48u : public SubscribeAttribute {
 /*
  * Attribute Int56u
  */
-class ReadTestClusterInt56u : public ReadAttribute {
+class ReadUnitTestingInt56u : public ReadAttribute {
 public:
-    ReadTestClusterInt56u()
+    ReadUnitTestingInt56u()
         : ReadAttribute("int56u")
     {
     }
 
-    ~ReadTestClusterInt56u() {}
+    ~ReadUnitTestingInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt56uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int56u response %@", [value description]);
+            NSLog(@"UnitTesting.Int56u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int56u read Error", error);
+                LogNSError("UnitTesting Int56u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89181,9 +89181,9 @@ class ReadTestClusterInt56u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt56u : public WriteAttribute {
+class WriteUnitTestingInt56u : public WriteAttribute {
 public:
-    WriteTestClusterInt56u()
+    WriteUnitTestingInt56u()
         : WriteAttribute("int56u")
     {
         AddArgument("attr-name", "int56u");
@@ -89191,13 +89191,13 @@ class WriteTestClusterInt56u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt56u() {}
+    ~WriteUnitTestingInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89210,7 +89210,7 @@ class WriteTestClusterInt56u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int56u write Error", error);
+                                            LogNSError("UnitTesting Int56u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89221,20 +89221,20 @@ class WriteTestClusterInt56u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt56u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt56u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt56u()
+    SubscribeAttributeUnitTestingInt56u()
         : SubscribeAttribute("int56u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt56u() {}
+    ~SubscribeAttributeUnitTestingInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89252,7 +89252,7 @@ class SubscribeAttributeTestClusterInt56u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int56u response %@", [value description]);
+                NSLog(@"UnitTesting.Int56u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89263,27 +89263,27 @@ class SubscribeAttributeTestClusterInt56u : public SubscribeAttribute {
 /*
  * Attribute Int64u
  */
-class ReadTestClusterInt64u : public ReadAttribute {
+class ReadUnitTestingInt64u : public ReadAttribute {
 public:
-    ReadTestClusterInt64u()
+    ReadUnitTestingInt64u()
         : ReadAttribute("int64u")
     {
     }
 
-    ~ReadTestClusterInt64u() {}
+    ~ReadUnitTestingInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000C) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt64uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int64u response %@", [value description]);
+            NSLog(@"UnitTesting.Int64u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int64u read Error", error);
+                LogNSError("UnitTesting Int64u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89291,9 +89291,9 @@ class ReadTestClusterInt64u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt64u : public WriteAttribute {
+class WriteUnitTestingInt64u : public WriteAttribute {
 public:
-    WriteTestClusterInt64u()
+    WriteUnitTestingInt64u()
         : WriteAttribute("int64u")
     {
         AddArgument("attr-name", "int64u");
@@ -89301,13 +89301,13 @@ class WriteTestClusterInt64u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt64u() {}
+    ~WriteUnitTestingInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89320,7 +89320,7 @@ class WriteTestClusterInt64u : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int64u write Error", error);
+                                            LogNSError("UnitTesting Int64u write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89331,20 +89331,20 @@ class WriteTestClusterInt64u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt64u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt64u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt64u()
+    SubscribeAttributeUnitTestingInt64u()
         : SubscribeAttribute("int64u")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt64u() {}
+    ~SubscribeAttributeUnitTestingInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89362,7 +89362,7 @@ class SubscribeAttributeTestClusterInt64u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int64u response %@", [value description]);
+                NSLog(@"UnitTesting.Int64u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89373,27 +89373,27 @@ class SubscribeAttributeTestClusterInt64u : public SubscribeAttribute {
 /*
  * Attribute Int8s
  */
-class ReadTestClusterInt8s : public ReadAttribute {
+class ReadUnitTestingInt8s : public ReadAttribute {
 public:
-    ReadTestClusterInt8s()
+    ReadUnitTestingInt8s()
         : ReadAttribute("int8s")
     {
     }
 
-    ~ReadTestClusterInt8s() {}
+    ~ReadUnitTestingInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000D) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int8s response %@", [value description]);
+            NSLog(@"UnitTesting.Int8s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int8s read Error", error);
+                LogNSError("UnitTesting Int8s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89401,9 +89401,9 @@ class ReadTestClusterInt8s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt8s : public WriteAttribute {
+class WriteUnitTestingInt8s : public WriteAttribute {
 public:
-    WriteTestClusterInt8s()
+    WriteUnitTestingInt8s()
         : WriteAttribute("int8s")
     {
         AddArgument("attr-name", "int8s");
@@ -89411,13 +89411,13 @@ class WriteTestClusterInt8s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt8s() {}
+    ~WriteUnitTestingInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89430,7 +89430,7 @@ class WriteTestClusterInt8s : public WriteAttribute {
                                        params:params
                                    completion:^(NSError * _Nullable error) {
                                        if (error != nil) {
-                                           LogNSError("TestCluster Int8s write Error", error);
+                                           LogNSError("UnitTesting Int8s write Error", error);
                                        }
                                        SetCommandExitStatus(error);
                                    }];
@@ -89441,20 +89441,20 @@ class WriteTestClusterInt8s : public WriteAttribute {
     int8_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt8s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt8s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt8s()
+    SubscribeAttributeUnitTestingInt8s()
         : SubscribeAttribute("int8s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt8s() {}
+    ~SubscribeAttributeUnitTestingInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89472,7 +89472,7 @@ class SubscribeAttributeTestClusterInt8s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int8s response %@", [value description]);
+                NSLog(@"UnitTesting.Int8s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89483,27 +89483,27 @@ class SubscribeAttributeTestClusterInt8s : public SubscribeAttribute {
 /*
  * Attribute Int16s
  */
-class ReadTestClusterInt16s : public ReadAttribute {
+class ReadUnitTestingInt16s : public ReadAttribute {
 public:
-    ReadTestClusterInt16s()
+    ReadUnitTestingInt16s()
         : ReadAttribute("int16s")
     {
     }
 
-    ~ReadTestClusterInt16s() {}
+    ~ReadUnitTestingInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int16s response %@", [value description]);
+            NSLog(@"UnitTesting.Int16s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int16s read Error", error);
+                LogNSError("UnitTesting Int16s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89511,9 +89511,9 @@ class ReadTestClusterInt16s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt16s : public WriteAttribute {
+class WriteUnitTestingInt16s : public WriteAttribute {
 public:
-    WriteTestClusterInt16s()
+    WriteUnitTestingInt16s()
         : WriteAttribute("int16s")
     {
         AddArgument("attr-name", "int16s");
@@ -89521,13 +89521,13 @@ class WriteTestClusterInt16s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt16s() {}
+    ~WriteUnitTestingInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89540,7 +89540,7 @@ class WriteTestClusterInt16s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int16s write Error", error);
+                                            LogNSError("UnitTesting Int16s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89551,20 +89551,20 @@ class WriteTestClusterInt16s : public WriteAttribute {
     int16_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt16s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt16s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt16s()
+    SubscribeAttributeUnitTestingInt16s()
         : SubscribeAttribute("int16s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt16s() {}
+    ~SubscribeAttributeUnitTestingInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89582,7 +89582,7 @@ class SubscribeAttributeTestClusterInt16s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int16s response %@", [value description]);
+                NSLog(@"UnitTesting.Int16s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89593,27 +89593,27 @@ class SubscribeAttributeTestClusterInt16s : public SubscribeAttribute {
 /*
  * Attribute Int24s
  */
-class ReadTestClusterInt24s : public ReadAttribute {
+class ReadUnitTestingInt24s : public ReadAttribute {
 public:
-    ReadTestClusterInt24s()
+    ReadUnitTestingInt24s()
         : ReadAttribute("int24s")
     {
     }
 
-    ~ReadTestClusterInt24s() {}
+    ~ReadUnitTestingInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000000F) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt24sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int24s response %@", [value description]);
+            NSLog(@"UnitTesting.Int24s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int24s read Error", error);
+                LogNSError("UnitTesting Int24s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89621,9 +89621,9 @@ class ReadTestClusterInt24s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt24s : public WriteAttribute {
+class WriteUnitTestingInt24s : public WriteAttribute {
 public:
-    WriteTestClusterInt24s()
+    WriteUnitTestingInt24s()
         : WriteAttribute("int24s")
     {
         AddArgument("attr-name", "int24s");
@@ -89631,13 +89631,13 @@ class WriteTestClusterInt24s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt24s() {}
+    ~WriteUnitTestingInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000000F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89650,7 +89650,7 @@ class WriteTestClusterInt24s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int24s write Error", error);
+                                            LogNSError("UnitTesting Int24s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89661,20 +89661,20 @@ class WriteTestClusterInt24s : public WriteAttribute {
     int32_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt24s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt24s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt24s()
+    SubscribeAttributeUnitTestingInt24s()
         : SubscribeAttribute("int24s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt24s() {}
+    ~SubscribeAttributeUnitTestingInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000000F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89692,7 +89692,7 @@ class SubscribeAttributeTestClusterInt24s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int24s response %@", [value description]);
+                NSLog(@"UnitTesting.Int24s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89703,27 +89703,27 @@ class SubscribeAttributeTestClusterInt24s : public SubscribeAttribute {
 /*
  * Attribute Int32s
  */
-class ReadTestClusterInt32s : public ReadAttribute {
+class ReadUnitTestingInt32s : public ReadAttribute {
 public:
-    ReadTestClusterInt32s()
+    ReadUnitTestingInt32s()
         : ReadAttribute("int32s")
     {
     }
 
-    ~ReadTestClusterInt32s() {}
+    ~ReadUnitTestingInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000010) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt32sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int32s response %@", [value description]);
+            NSLog(@"UnitTesting.Int32s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int32s read Error", error);
+                LogNSError("UnitTesting Int32s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89731,9 +89731,9 @@ class ReadTestClusterInt32s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt32s : public WriteAttribute {
+class WriteUnitTestingInt32s : public WriteAttribute {
 public:
-    WriteTestClusterInt32s()
+    WriteUnitTestingInt32s()
         : WriteAttribute("int32s")
     {
         AddArgument("attr-name", "int32s");
@@ -89741,13 +89741,13 @@ class WriteTestClusterInt32s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt32s() {}
+    ~WriteUnitTestingInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89760,7 +89760,7 @@ class WriteTestClusterInt32s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int32s write Error", error);
+                                            LogNSError("UnitTesting Int32s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89771,20 +89771,20 @@ class WriteTestClusterInt32s : public WriteAttribute {
     int32_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt32s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt32s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt32s()
+    SubscribeAttributeUnitTestingInt32s()
         : SubscribeAttribute("int32s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt32s() {}
+    ~SubscribeAttributeUnitTestingInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89802,7 +89802,7 @@ class SubscribeAttributeTestClusterInt32s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int32s response %@", [value description]);
+                NSLog(@"UnitTesting.Int32s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89813,27 +89813,27 @@ class SubscribeAttributeTestClusterInt32s : public SubscribeAttribute {
 /*
  * Attribute Int40s
  */
-class ReadTestClusterInt40s : public ReadAttribute {
+class ReadUnitTestingInt40s : public ReadAttribute {
 public:
-    ReadTestClusterInt40s()
+    ReadUnitTestingInt40s()
         : ReadAttribute("int40s")
     {
     }
 
-    ~ReadTestClusterInt40s() {}
+    ~ReadUnitTestingInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000011) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt40sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int40s response %@", [value description]);
+            NSLog(@"UnitTesting.Int40s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int40s read Error", error);
+                LogNSError("UnitTesting Int40s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89841,9 +89841,9 @@ class ReadTestClusterInt40s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt40s : public WriteAttribute {
+class WriteUnitTestingInt40s : public WriteAttribute {
 public:
-    WriteTestClusterInt40s()
+    WriteUnitTestingInt40s()
         : WriteAttribute("int40s")
     {
         AddArgument("attr-name", "int40s");
@@ -89851,13 +89851,13 @@ class WriteTestClusterInt40s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt40s() {}
+    ~WriteUnitTestingInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000011) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89870,7 +89870,7 @@ class WriteTestClusterInt40s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int40s write Error", error);
+                                            LogNSError("UnitTesting Int40s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89881,20 +89881,20 @@ class WriteTestClusterInt40s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt40s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt40s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt40s()
+    SubscribeAttributeUnitTestingInt40s()
         : SubscribeAttribute("int40s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt40s() {}
+    ~SubscribeAttributeUnitTestingInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000011) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -89912,7 +89912,7 @@ class SubscribeAttributeTestClusterInt40s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int40s response %@", [value description]);
+                NSLog(@"UnitTesting.Int40s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -89923,27 +89923,27 @@ class SubscribeAttributeTestClusterInt40s : public SubscribeAttribute {
 /*
  * Attribute Int48s
  */
-class ReadTestClusterInt48s : public ReadAttribute {
+class ReadUnitTestingInt48s : public ReadAttribute {
 public:
-    ReadTestClusterInt48s()
+    ReadUnitTestingInt48s()
         : ReadAttribute("int48s")
     {
     }
 
-    ~ReadTestClusterInt48s() {}
+    ~ReadUnitTestingInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000012) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt48sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int48s response %@", [value description]);
+            NSLog(@"UnitTesting.Int48s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int48s read Error", error);
+                LogNSError("UnitTesting Int48s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -89951,9 +89951,9 @@ class ReadTestClusterInt48s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt48s : public WriteAttribute {
+class WriteUnitTestingInt48s : public WriteAttribute {
 public:
-    WriteTestClusterInt48s()
+    WriteUnitTestingInt48s()
         : WriteAttribute("int48s")
     {
         AddArgument("attr-name", "int48s");
@@ -89961,13 +89961,13 @@ class WriteTestClusterInt48s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt48s() {}
+    ~WriteUnitTestingInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000012) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -89980,7 +89980,7 @@ class WriteTestClusterInt48s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int48s write Error", error);
+                                            LogNSError("UnitTesting Int48s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -89991,20 +89991,20 @@ class WriteTestClusterInt48s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt48s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt48s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt48s()
+    SubscribeAttributeUnitTestingInt48s()
         : SubscribeAttribute("int48s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt48s() {}
+    ~SubscribeAttributeUnitTestingInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000012) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90022,7 +90022,7 @@ class SubscribeAttributeTestClusterInt48s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int48s response %@", [value description]);
+                NSLog(@"UnitTesting.Int48s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90033,27 +90033,27 @@ class SubscribeAttributeTestClusterInt48s : public SubscribeAttribute {
 /*
  * Attribute Int56s
  */
-class ReadTestClusterInt56s : public ReadAttribute {
+class ReadUnitTestingInt56s : public ReadAttribute {
 public:
-    ReadTestClusterInt56s()
+    ReadUnitTestingInt56s()
         : ReadAttribute("int56s")
     {
     }
 
-    ~ReadTestClusterInt56s() {}
+    ~ReadUnitTestingInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000013) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt56sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int56s response %@", [value description]);
+            NSLog(@"UnitTesting.Int56s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int56s read Error", error);
+                LogNSError("UnitTesting Int56s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90061,9 +90061,9 @@ class ReadTestClusterInt56s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt56s : public WriteAttribute {
+class WriteUnitTestingInt56s : public WriteAttribute {
 public:
-    WriteTestClusterInt56s()
+    WriteUnitTestingInt56s()
         : WriteAttribute("int56s")
     {
         AddArgument("attr-name", "int56s");
@@ -90071,13 +90071,13 @@ class WriteTestClusterInt56s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt56s() {}
+    ~WriteUnitTestingInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000013) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90090,7 +90090,7 @@ class WriteTestClusterInt56s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int56s write Error", error);
+                                            LogNSError("UnitTesting Int56s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -90101,20 +90101,20 @@ class WriteTestClusterInt56s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt56s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt56s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt56s()
+    SubscribeAttributeUnitTestingInt56s()
         : SubscribeAttribute("int56s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt56s() {}
+    ~SubscribeAttributeUnitTestingInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000013) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90132,7 +90132,7 @@ class SubscribeAttributeTestClusterInt56s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int56s response %@", [value description]);
+                NSLog(@"UnitTesting.Int56s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90143,27 +90143,27 @@ class SubscribeAttributeTestClusterInt56s : public SubscribeAttribute {
 /*
  * Attribute Int64s
  */
-class ReadTestClusterInt64s : public ReadAttribute {
+class ReadUnitTestingInt64s : public ReadAttribute {
 public:
-    ReadTestClusterInt64s()
+    ReadUnitTestingInt64s()
         : ReadAttribute("int64s")
     {
     }
 
-    ~ReadTestClusterInt64s() {}
+    ~ReadUnitTestingInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000014) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeInt64sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Int64s response %@", [value description]);
+            NSLog(@"UnitTesting.Int64s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Int64s read Error", error);
+                LogNSError("UnitTesting Int64s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90171,9 +90171,9 @@ class ReadTestClusterInt64s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterInt64s : public WriteAttribute {
+class WriteUnitTestingInt64s : public WriteAttribute {
 public:
-    WriteTestClusterInt64s()
+    WriteUnitTestingInt64s()
         : WriteAttribute("int64s")
     {
         AddArgument("attr-name", "int64s");
@@ -90181,13 +90181,13 @@ class WriteTestClusterInt64s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterInt64s() {}
+    ~WriteUnitTestingInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000014) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90200,7 +90200,7 @@ class WriteTestClusterInt64s : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Int64s write Error", error);
+                                            LogNSError("UnitTesting Int64s write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -90211,20 +90211,20 @@ class WriteTestClusterInt64s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterInt64s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingInt64s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterInt64s()
+    SubscribeAttributeUnitTestingInt64s()
         : SubscribeAttribute("int64s")
     {
     }
 
-    ~SubscribeAttributeTestClusterInt64s() {}
+    ~SubscribeAttributeUnitTestingInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000014) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90242,7 +90242,7 @@ class SubscribeAttributeTestClusterInt64s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Int64s response %@", [value description]);
+                NSLog(@"UnitTesting.Int64s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90253,27 +90253,27 @@ class SubscribeAttributeTestClusterInt64s : public SubscribeAttribute {
 /*
  * Attribute Enum8
  */
-class ReadTestClusterEnum8 : public ReadAttribute {
+class ReadUnitTestingEnum8 : public ReadAttribute {
 public:
-    ReadTestClusterEnum8()
+    ReadUnitTestingEnum8()
         : ReadAttribute("enum8")
     {
     }
 
-    ~ReadTestClusterEnum8() {}
+    ~ReadUnitTestingEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000015) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeEnum8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Enum8 response %@", [value description]);
+            NSLog(@"UnitTesting.Enum8 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Enum8 read Error", error);
+                LogNSError("UnitTesting Enum8 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90281,9 +90281,9 @@ class ReadTestClusterEnum8 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterEnum8 : public WriteAttribute {
+class WriteUnitTestingEnum8 : public WriteAttribute {
 public:
-    WriteTestClusterEnum8()
+    WriteUnitTestingEnum8()
         : WriteAttribute("enum8")
     {
         AddArgument("attr-name", "enum8");
@@ -90291,13 +90291,13 @@ class WriteTestClusterEnum8 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterEnum8() {}
+    ~WriteUnitTestingEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000015) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90310,7 +90310,7 @@ class WriteTestClusterEnum8 : public WriteAttribute {
                                        params:params
                                    completion:^(NSError * _Nullable error) {
                                        if (error != nil) {
-                                           LogNSError("TestCluster Enum8 write Error", error);
+                                           LogNSError("UnitTesting Enum8 write Error", error);
                                        }
                                        SetCommandExitStatus(error);
                                    }];
@@ -90321,20 +90321,20 @@ class WriteTestClusterEnum8 : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterEnum8 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingEnum8 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterEnum8()
+    SubscribeAttributeUnitTestingEnum8()
         : SubscribeAttribute("enum8")
     {
     }
 
-    ~SubscribeAttributeTestClusterEnum8() {}
+    ~SubscribeAttributeUnitTestingEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000015) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90352,7 +90352,7 @@ class SubscribeAttributeTestClusterEnum8 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Enum8 response %@", [value description]);
+                NSLog(@"UnitTesting.Enum8 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90363,27 +90363,27 @@ class SubscribeAttributeTestClusterEnum8 : public SubscribeAttribute {
 /*
  * Attribute Enum16
  */
-class ReadTestClusterEnum16 : public ReadAttribute {
+class ReadUnitTestingEnum16 : public ReadAttribute {
 public:
-    ReadTestClusterEnum16()
+    ReadUnitTestingEnum16()
         : ReadAttribute("enum16")
     {
     }
 
-    ~ReadTestClusterEnum16() {}
+    ~ReadUnitTestingEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000016) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeEnum16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Enum16 response %@", [value description]);
+            NSLog(@"UnitTesting.Enum16 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Enum16 read Error", error);
+                LogNSError("UnitTesting Enum16 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90391,9 +90391,9 @@ class ReadTestClusterEnum16 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterEnum16 : public WriteAttribute {
+class WriteUnitTestingEnum16 : public WriteAttribute {
 public:
-    WriteTestClusterEnum16()
+    WriteUnitTestingEnum16()
         : WriteAttribute("enum16")
     {
         AddArgument("attr-name", "enum16");
@@ -90401,13 +90401,13 @@ class WriteTestClusterEnum16 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterEnum16() {}
+    ~WriteUnitTestingEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000016) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90420,7 +90420,7 @@ class WriteTestClusterEnum16 : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster Enum16 write Error", error);
+                                            LogNSError("UnitTesting Enum16 write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -90431,20 +90431,20 @@ class WriteTestClusterEnum16 : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterEnum16 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingEnum16 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterEnum16()
+    SubscribeAttributeUnitTestingEnum16()
         : SubscribeAttribute("enum16")
     {
     }
 
-    ~SubscribeAttributeTestClusterEnum16() {}
+    ~SubscribeAttributeUnitTestingEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000016) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90462,7 +90462,7 @@ class SubscribeAttributeTestClusterEnum16 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Enum16 response %@", [value description]);
+                NSLog(@"UnitTesting.Enum16 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90473,27 +90473,27 @@ class SubscribeAttributeTestClusterEnum16 : public SubscribeAttribute {
 /*
  * Attribute FloatSingle
  */
-class ReadTestClusterFloatSingle : public ReadAttribute {
+class ReadUnitTestingFloatSingle : public ReadAttribute {
 public:
-    ReadTestClusterFloatSingle()
+    ReadUnitTestingFloatSingle()
         : ReadAttribute("float-single")
     {
     }
 
-    ~ReadTestClusterFloatSingle() {}
+    ~ReadUnitTestingFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000017) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeFloatSingleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.FloatSingle response %@", [value description]);
+            NSLog(@"UnitTesting.FloatSingle response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster FloatSingle read Error", error);
+                LogNSError("UnitTesting FloatSingle read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90501,9 +90501,9 @@ class ReadTestClusterFloatSingle : public ReadAttribute {
     }
 };
 
-class WriteTestClusterFloatSingle : public WriteAttribute {
+class WriteUnitTestingFloatSingle : public WriteAttribute {
 public:
-    WriteTestClusterFloatSingle()
+    WriteUnitTestingFloatSingle()
         : WriteAttribute("float-single")
     {
         AddArgument("attr-name", "float-single");
@@ -90511,13 +90511,13 @@ class WriteTestClusterFloatSingle : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterFloatSingle() {}
+    ~WriteUnitTestingFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000017) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90530,7 +90530,7 @@ class WriteTestClusterFloatSingle : public WriteAttribute {
                                              params:params
                                          completion:^(NSError * _Nullable error) {
                                              if (error != nil) {
-                                                 LogNSError("TestCluster FloatSingle write Error", error);
+                                                 LogNSError("UnitTesting FloatSingle write Error", error);
                                              }
                                              SetCommandExitStatus(error);
                                          }];
@@ -90541,20 +90541,20 @@ class WriteTestClusterFloatSingle : public WriteAttribute {
     float mValue;
 };
 
-class SubscribeAttributeTestClusterFloatSingle : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingFloatSingle : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterFloatSingle()
+    SubscribeAttributeUnitTestingFloatSingle()
         : SubscribeAttribute("float-single")
     {
     }
 
-    ~SubscribeAttributeTestClusterFloatSingle() {}
+    ~SubscribeAttributeUnitTestingFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000017) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90572,7 +90572,7 @@ class SubscribeAttributeTestClusterFloatSingle : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.FloatSingle response %@", [value description]);
+                NSLog(@"UnitTesting.FloatSingle response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90583,27 +90583,27 @@ class SubscribeAttributeTestClusterFloatSingle : public SubscribeAttribute {
 /*
  * Attribute FloatDouble
  */
-class ReadTestClusterFloatDouble : public ReadAttribute {
+class ReadUnitTestingFloatDouble : public ReadAttribute {
 public:
-    ReadTestClusterFloatDouble()
+    ReadUnitTestingFloatDouble()
         : ReadAttribute("float-double")
     {
     }
 
-    ~ReadTestClusterFloatDouble() {}
+    ~ReadUnitTestingFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000018) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeFloatDoubleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.FloatDouble response %@", [value description]);
+            NSLog(@"UnitTesting.FloatDouble response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster FloatDouble read Error", error);
+                LogNSError("UnitTesting FloatDouble read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90611,9 +90611,9 @@ class ReadTestClusterFloatDouble : public ReadAttribute {
     }
 };
 
-class WriteTestClusterFloatDouble : public WriteAttribute {
+class WriteUnitTestingFloatDouble : public WriteAttribute {
 public:
-    WriteTestClusterFloatDouble()
+    WriteUnitTestingFloatDouble()
         : WriteAttribute("float-double")
     {
         AddArgument("attr-name", "float-double");
@@ -90621,13 +90621,13 @@ class WriteTestClusterFloatDouble : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterFloatDouble() {}
+    ~WriteUnitTestingFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000018) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90640,7 +90640,7 @@ class WriteTestClusterFloatDouble : public WriteAttribute {
                                              params:params
                                          completion:^(NSError * _Nullable error) {
                                              if (error != nil) {
-                                                 LogNSError("TestCluster FloatDouble write Error", error);
+                                                 LogNSError("UnitTesting FloatDouble write Error", error);
                                              }
                                              SetCommandExitStatus(error);
                                          }];
@@ -90651,20 +90651,20 @@ class WriteTestClusterFloatDouble : public WriteAttribute {
     double mValue;
 };
 
-class SubscribeAttributeTestClusterFloatDouble : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingFloatDouble : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterFloatDouble()
+    SubscribeAttributeUnitTestingFloatDouble()
         : SubscribeAttribute("float-double")
     {
     }
 
-    ~SubscribeAttributeTestClusterFloatDouble() {}
+    ~SubscribeAttributeUnitTestingFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000018) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90682,7 +90682,7 @@ class SubscribeAttributeTestClusterFloatDouble : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.FloatDouble response %@", [value description]);
+                NSLog(@"UnitTesting.FloatDouble response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90693,27 +90693,27 @@ class SubscribeAttributeTestClusterFloatDouble : public SubscribeAttribute {
 /*
  * Attribute OctetString
  */
-class ReadTestClusterOctetString : public ReadAttribute {
+class ReadUnitTestingOctetString : public ReadAttribute {
 public:
-    ReadTestClusterOctetString()
+    ReadUnitTestingOctetString()
         : ReadAttribute("octet-string")
     {
     }
 
-    ~ReadTestClusterOctetString() {}
+    ~ReadUnitTestingOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000019) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.OctetString response %@", [value description]);
+            NSLog(@"UnitTesting.OctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster OctetString read Error", error);
+                LogNSError("UnitTesting OctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90721,9 +90721,9 @@ class ReadTestClusterOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterOctetString : public WriteAttribute {
+class WriteUnitTestingOctetString : public WriteAttribute {
 public:
-    WriteTestClusterOctetString()
+    WriteUnitTestingOctetString()
         : WriteAttribute("octet-string")
     {
         AddArgument("attr-name", "octet-string");
@@ -90731,13 +90731,13 @@ class WriteTestClusterOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterOctetString() {}
+    ~WriteUnitTestingOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000019) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90750,7 +90750,7 @@ class WriteTestClusterOctetString : public WriteAttribute {
                                              params:params
                                          completion:^(NSError * _Nullable error) {
                                              if (error != nil) {
-                                                 LogNSError("TestCluster OctetString write Error", error);
+                                                 LogNSError("UnitTesting OctetString write Error", error);
                                              }
                                              SetCommandExitStatus(error);
                                          }];
@@ -90761,20 +90761,20 @@ class WriteTestClusterOctetString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterOctetString()
+    SubscribeAttributeUnitTestingOctetString()
         : SubscribeAttribute("octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterOctetString() {}
+    ~SubscribeAttributeUnitTestingOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000019) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90792,7 +90792,7 @@ class SubscribeAttributeTestClusterOctetString : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.OctetString response %@", [value description]);
+                NSLog(@"UnitTesting.OctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90803,27 +90803,27 @@ class SubscribeAttributeTestClusterOctetString : public SubscribeAttribute {
 /*
  * Attribute ListInt8u
  */
-class ReadTestClusterListInt8u : public ReadAttribute {
+class ReadUnitTestingListInt8u : public ReadAttribute {
 public:
-    ReadTestClusterListInt8u()
+    ReadUnitTestingListInt8u()
         : ReadAttribute("list-int8u")
     {
     }
 
-    ~ReadTestClusterListInt8u() {}
+    ~ReadUnitTestingListInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeListInt8uWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ListInt8u response %@", [value description]);
+            NSLog(@"UnitTesting.ListInt8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ListInt8u read Error", error);
+                LogNSError("UnitTesting ListInt8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90831,9 +90831,9 @@ class ReadTestClusterListInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListInt8u : public WriteAttribute {
+class WriteUnitTestingListInt8u : public WriteAttribute {
 public:
-    WriteTestClusterListInt8u()
+    WriteUnitTestingListInt8u()
         : WriteAttribute("list-int8u")
         , mComplex(&mValue)
     {
@@ -90842,13 +90842,13 @@ class WriteTestClusterListInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListInt8u() {}
+    ~WriteUnitTestingListInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90870,7 +90870,7 @@ class WriteTestClusterListInt8u : public WriteAttribute {
                                            params:params
                                        completion:^(NSError * _Nullable error) {
                                            if (error != nil) {
-                                               LogNSError("TestCluster ListInt8u write Error", error);
+                                               LogNSError("UnitTesting ListInt8u write Error", error);
                                            }
                                            SetCommandExitStatus(error);
                                        }];
@@ -90882,20 +90882,20 @@ class WriteTestClusterListInt8u : public WriteAttribute {
     TypedComplexArgument> mComplex;
 };
 
-class SubscribeAttributeTestClusterListInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListInt8u()
+    SubscribeAttributeUnitTestingListInt8u()
         : SubscribeAttribute("list-int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterListInt8u() {}
+    ~SubscribeAttributeUnitTestingListInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -90913,7 +90913,7 @@ class SubscribeAttributeTestClusterListInt8u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListInt8u response %@", [value description]);
+                NSLog(@"UnitTesting.ListInt8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -90924,27 +90924,27 @@ class SubscribeAttributeTestClusterListInt8u : public SubscribeAttribute {
 /*
  * Attribute ListOctetString
  */
-class ReadTestClusterListOctetString : public ReadAttribute {
+class ReadUnitTestingListOctetString : public ReadAttribute {
 public:
-    ReadTestClusterListOctetString()
+    ReadUnitTestingListOctetString()
         : ReadAttribute("list-octet-string")
     {
     }
 
-    ~ReadTestClusterListOctetString() {}
+    ~ReadUnitTestingListOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeListOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ListOctetString response %@", [value description]);
+            NSLog(@"UnitTesting.ListOctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ListOctetString read Error", error);
+                LogNSError("UnitTesting ListOctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -90952,9 +90952,9 @@ class ReadTestClusterListOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListOctetString : public WriteAttribute {
+class WriteUnitTestingListOctetString : public WriteAttribute {
 public:
-    WriteTestClusterListOctetString()
+    WriteUnitTestingListOctetString()
         : WriteAttribute("list-octet-string")
         , mComplex(&mValue)
     {
@@ -90963,13 +90963,13 @@ class WriteTestClusterListOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListOctetString() {}
+    ~WriteUnitTestingListOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -90991,7 +90991,7 @@ class WriteTestClusterListOctetString : public WriteAttribute {
                                                  params:params
                                              completion:^(NSError * _Nullable error) {
                                                  if (error != nil) {
-                                                     LogNSError("TestCluster ListOctetString write Error", error);
+                                                     LogNSError("UnitTesting ListOctetString write Error", error);
                                                  }
                                                  SetCommandExitStatus(error);
                                              }];
@@ -91003,20 +91003,20 @@ class WriteTestClusterListOctetString : public WriteAttribute {
     TypedComplexArgument> mComplex;
 };
 
-class SubscribeAttributeTestClusterListOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListOctetString()
+    SubscribeAttributeUnitTestingListOctetString()
         : SubscribeAttribute("list-octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterListOctetString() {}
+    ~SubscribeAttributeUnitTestingListOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91034,7 +91034,7 @@ class SubscribeAttributeTestClusterListOctetString : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListOctetString response %@", [value description]);
+                NSLog(@"UnitTesting.ListOctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91045,27 +91045,27 @@ class SubscribeAttributeTestClusterListOctetString : public SubscribeAttribute {
 /*
  * Attribute ListStructOctetString
  */
-class ReadTestClusterListStructOctetString : public ReadAttribute {
+class ReadUnitTestingListStructOctetString : public ReadAttribute {
 public:
-    ReadTestClusterListStructOctetString()
+    ReadUnitTestingListStructOctetString()
         : ReadAttribute("list-struct-octet-string")
     {
     }
 
-    ~ReadTestClusterListStructOctetString() {}
+    ~ReadUnitTestingListStructOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001C) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeListStructOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ListStructOctetString response %@", [value description]);
+            NSLog(@"UnitTesting.ListStructOctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ListStructOctetString read Error", error);
+                LogNSError("UnitTesting ListStructOctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91073,9 +91073,9 @@ class ReadTestClusterListStructOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListStructOctetString : public WriteAttribute {
+class WriteUnitTestingListStructOctetString : public WriteAttribute {
 public:
-    WriteTestClusterListStructOctetString()
+    WriteUnitTestingListStructOctetString()
         : WriteAttribute("list-struct-octet-string")
         , mComplex(&mValue)
     {
@@ -91084,13 +91084,13 @@ class WriteTestClusterListStructOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListStructOctetString() {}
+    ~WriteUnitTestingListStructOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91101,8 +91101,8 @@ class WriteTestClusterListStructOctetString : public WriteAttribute {
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mValue) {
-                MTRTestClusterClusterTestListStructOctet * newElement_0;
-                newElement_0 = [MTRTestClusterClusterTestListStructOctet new];
+                MTRUnitTestingClusterTestListStructOctet * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterTestListStructOctet new];
                 newElement_0.member1 = [NSNumber numberWithUnsignedLongLong:entry_0.member1];
                 newElement_0.member2 = [NSData dataWithBytes:entry_0.member2.data() length:entry_0.member2.size()];
                 [array_0 addObject:newElement_0];
@@ -91114,7 +91114,7 @@ class WriteTestClusterListStructOctetString : public WriteAttribute {
                                                        params:params
                                                    completion:^(NSError * _Nullable error) {
                                                        if (error != nil) {
-                                                           LogNSError("TestCluster ListStructOctetString write Error", error);
+                                                           LogNSError("UnitTesting ListStructOctetString write Error", error);
                                                        }
                                                        SetCommandExitStatus(error);
                                                    }];
@@ -91122,25 +91122,25 @@ class WriteTestClusterListStructOctetString : public WriteAttribute {
     }
 
 private:
-    chip::app::DataModel::List mValue;
-    TypedComplexArgument>
+    chip::app::DataModel::List mValue;
+    TypedComplexArgument>
         mComplex;
 };
 
-class SubscribeAttributeTestClusterListStructOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListStructOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListStructOctetString()
+    SubscribeAttributeUnitTestingListStructOctetString()
         : SubscribeAttribute("list-struct-octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterListStructOctetString() {}
+    ~SubscribeAttributeUnitTestingListStructOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91158,7 +91158,7 @@ class SubscribeAttributeTestClusterListStructOctetString : public SubscribeAttri
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListStructOctetString response %@", [value description]);
+                NSLog(@"UnitTesting.ListStructOctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91169,27 +91169,27 @@ class SubscribeAttributeTestClusterListStructOctetString : public SubscribeAttri
 /*
  * Attribute LongOctetString
  */
-class ReadTestClusterLongOctetString : public ReadAttribute {
+class ReadUnitTestingLongOctetString : public ReadAttribute {
 public:
-    ReadTestClusterLongOctetString()
+    ReadUnitTestingLongOctetString()
         : ReadAttribute("long-octet-string")
     {
     }
 
-    ~ReadTestClusterLongOctetString() {}
+    ~ReadUnitTestingLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001D) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeLongOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.LongOctetString response %@", [value description]);
+            NSLog(@"UnitTesting.LongOctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster LongOctetString read Error", error);
+                LogNSError("UnitTesting LongOctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91197,9 +91197,9 @@ class ReadTestClusterLongOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterLongOctetString : public WriteAttribute {
+class WriteUnitTestingLongOctetString : public WriteAttribute {
 public:
-    WriteTestClusterLongOctetString()
+    WriteUnitTestingLongOctetString()
         : WriteAttribute("long-octet-string")
     {
         AddArgument("attr-name", "long-octet-string");
@@ -91207,13 +91207,13 @@ class WriteTestClusterLongOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterLongOctetString() {}
+    ~WriteUnitTestingLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91226,7 +91226,7 @@ class WriteTestClusterLongOctetString : public WriteAttribute {
                                                  params:params
                                              completion:^(NSError * _Nullable error) {
                                                  if (error != nil) {
-                                                     LogNSError("TestCluster LongOctetString write Error", error);
+                                                     LogNSError("UnitTesting LongOctetString write Error", error);
                                                  }
                                                  SetCommandExitStatus(error);
                                              }];
@@ -91237,20 +91237,20 @@ class WriteTestClusterLongOctetString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterLongOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingLongOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterLongOctetString()
+    SubscribeAttributeUnitTestingLongOctetString()
         : SubscribeAttribute("long-octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterLongOctetString() {}
+    ~SubscribeAttributeUnitTestingLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91268,7 +91268,7 @@ class SubscribeAttributeTestClusterLongOctetString : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.LongOctetString response %@", [value description]);
+                NSLog(@"UnitTesting.LongOctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91279,27 +91279,27 @@ class SubscribeAttributeTestClusterLongOctetString : public SubscribeAttribute {
 /*
  * Attribute CharString
  */
-class ReadTestClusterCharString : public ReadAttribute {
+class ReadUnitTestingCharString : public ReadAttribute {
 public:
-    ReadTestClusterCharString()
+    ReadUnitTestingCharString()
         : ReadAttribute("char-string")
     {
     }
 
-    ~ReadTestClusterCharString() {}
+    ~ReadUnitTestingCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.CharString response %@", [value description]);
+            NSLog(@"UnitTesting.CharString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster CharString read Error", error);
+                LogNSError("UnitTesting CharString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91307,9 +91307,9 @@ class ReadTestClusterCharString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterCharString : public WriteAttribute {
+class WriteUnitTestingCharString : public WriteAttribute {
 public:
-    WriteTestClusterCharString()
+    WriteUnitTestingCharString()
         : WriteAttribute("char-string")
     {
         AddArgument("attr-name", "char-string");
@@ -91317,13 +91317,13 @@ class WriteTestClusterCharString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterCharString() {}
+    ~WriteUnitTestingCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91338,7 +91338,7 @@ class WriteTestClusterCharString : public WriteAttribute {
                                             params:params
                                         completion:^(NSError * _Nullable error) {
                                             if (error != nil) {
-                                                LogNSError("TestCluster CharString write Error", error);
+                                                LogNSError("UnitTesting CharString write Error", error);
                                             }
                                             SetCommandExitStatus(error);
                                         }];
@@ -91349,20 +91349,20 @@ class WriteTestClusterCharString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterCharString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingCharString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterCharString()
+    SubscribeAttributeUnitTestingCharString()
         : SubscribeAttribute("char-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterCharString() {}
+    ~SubscribeAttributeUnitTestingCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91380,7 +91380,7 @@ class SubscribeAttributeTestClusterCharString : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.CharString response %@", [value description]);
+                NSLog(@"UnitTesting.CharString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91391,27 +91391,27 @@ class SubscribeAttributeTestClusterCharString : public SubscribeAttribute {
 /*
  * Attribute LongCharString
  */
-class ReadTestClusterLongCharString : public ReadAttribute {
+class ReadUnitTestingLongCharString : public ReadAttribute {
 public:
-    ReadTestClusterLongCharString()
+    ReadUnitTestingLongCharString()
         : ReadAttribute("long-char-string")
     {
     }
 
-    ~ReadTestClusterLongCharString() {}
+    ~ReadUnitTestingLongCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000001F) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeLongCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.LongCharString response %@", [value description]);
+            NSLog(@"UnitTesting.LongCharString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster LongCharString read Error", error);
+                LogNSError("UnitTesting LongCharString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91419,9 +91419,9 @@ class ReadTestClusterLongCharString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterLongCharString : public WriteAttribute {
+class WriteUnitTestingLongCharString : public WriteAttribute {
 public:
-    WriteTestClusterLongCharString()
+    WriteUnitTestingLongCharString()
         : WriteAttribute("long-char-string")
     {
         AddArgument("attr-name", "long-char-string");
@@ -91429,13 +91429,13 @@ class WriteTestClusterLongCharString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterLongCharString() {}
+    ~WriteUnitTestingLongCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000001F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91450,7 +91450,7 @@ class WriteTestClusterLongCharString : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster LongCharString write Error", error);
+                                                    LogNSError("UnitTesting LongCharString write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -91461,20 +91461,20 @@ class WriteTestClusterLongCharString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterLongCharString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingLongCharString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterLongCharString()
+    SubscribeAttributeUnitTestingLongCharString()
         : SubscribeAttribute("long-char-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterLongCharString() {}
+    ~SubscribeAttributeUnitTestingLongCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000001F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91492,7 +91492,7 @@ class SubscribeAttributeTestClusterLongCharString : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.LongCharString response %@", [value description]);
+                NSLog(@"UnitTesting.LongCharString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91503,27 +91503,27 @@ class SubscribeAttributeTestClusterLongCharString : public SubscribeAttribute {
 /*
  * Attribute EpochUs
  */
-class ReadTestClusterEpochUs : public ReadAttribute {
+class ReadUnitTestingEpochUs : public ReadAttribute {
 public:
-    ReadTestClusterEpochUs()
+    ReadUnitTestingEpochUs()
         : ReadAttribute("epoch-us")
     {
     }
 
-    ~ReadTestClusterEpochUs() {}
+    ~ReadUnitTestingEpochUs() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000020) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeEpochUsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.EpochUs response %@", [value description]);
+            NSLog(@"UnitTesting.EpochUs response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster EpochUs read Error", error);
+                LogNSError("UnitTesting EpochUs read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91531,9 +91531,9 @@ class ReadTestClusterEpochUs : public ReadAttribute {
     }
 };
 
-class WriteTestClusterEpochUs : public WriteAttribute {
+class WriteUnitTestingEpochUs : public WriteAttribute {
 public:
-    WriteTestClusterEpochUs()
+    WriteUnitTestingEpochUs()
         : WriteAttribute("epoch-us")
     {
         AddArgument("attr-name", "epoch-us");
@@ -91541,13 +91541,13 @@ class WriteTestClusterEpochUs : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterEpochUs() {}
+    ~WriteUnitTestingEpochUs() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000020) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91560,7 +91560,7 @@ class WriteTestClusterEpochUs : public WriteAttribute {
                                          params:params
                                      completion:^(NSError * _Nullable error) {
                                          if (error != nil) {
-                                             LogNSError("TestCluster EpochUs write Error", error);
+                                             LogNSError("UnitTesting EpochUs write Error", error);
                                          }
                                          SetCommandExitStatus(error);
                                      }];
@@ -91571,20 +91571,20 @@ class WriteTestClusterEpochUs : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterEpochUs : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingEpochUs : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterEpochUs()
+    SubscribeAttributeUnitTestingEpochUs()
         : SubscribeAttribute("epoch-us")
     {
     }
 
-    ~SubscribeAttributeTestClusterEpochUs() {}
+    ~SubscribeAttributeUnitTestingEpochUs() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000020) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91602,7 +91602,7 @@ class SubscribeAttributeTestClusterEpochUs : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.EpochUs response %@", [value description]);
+                NSLog(@"UnitTesting.EpochUs response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91613,27 +91613,27 @@ class SubscribeAttributeTestClusterEpochUs : public SubscribeAttribute {
 /*
  * Attribute EpochS
  */
-class ReadTestClusterEpochS : public ReadAttribute {
+class ReadUnitTestingEpochS : public ReadAttribute {
 public:
-    ReadTestClusterEpochS()
+    ReadUnitTestingEpochS()
         : ReadAttribute("epoch-s")
     {
     }
 
-    ~ReadTestClusterEpochS() {}
+    ~ReadUnitTestingEpochS() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000021) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeEpochSWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.EpochS response %@", [value description]);
+            NSLog(@"UnitTesting.EpochS response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster EpochS read Error", error);
+                LogNSError("UnitTesting EpochS read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91641,9 +91641,9 @@ class ReadTestClusterEpochS : public ReadAttribute {
     }
 };
 
-class WriteTestClusterEpochS : public WriteAttribute {
+class WriteUnitTestingEpochS : public WriteAttribute {
 public:
-    WriteTestClusterEpochS()
+    WriteUnitTestingEpochS()
         : WriteAttribute("epoch-s")
     {
         AddArgument("attr-name", "epoch-s");
@@ -91651,13 +91651,13 @@ class WriteTestClusterEpochS : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterEpochS() {}
+    ~WriteUnitTestingEpochS() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000021) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91670,7 +91670,7 @@ class WriteTestClusterEpochS : public WriteAttribute {
                                         params:params
                                     completion:^(NSError * _Nullable error) {
                                         if (error != nil) {
-                                            LogNSError("TestCluster EpochS write Error", error);
+                                            LogNSError("UnitTesting EpochS write Error", error);
                                         }
                                         SetCommandExitStatus(error);
                                     }];
@@ -91681,20 +91681,20 @@ class WriteTestClusterEpochS : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterEpochS : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingEpochS : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterEpochS()
+    SubscribeAttributeUnitTestingEpochS()
         : SubscribeAttribute("epoch-s")
     {
     }
 
-    ~SubscribeAttributeTestClusterEpochS() {}
+    ~SubscribeAttributeUnitTestingEpochS() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000021) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91712,7 +91712,7 @@ class SubscribeAttributeTestClusterEpochS : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.EpochS response %@", [value description]);
+                NSLog(@"UnitTesting.EpochS response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91723,27 +91723,27 @@ class SubscribeAttributeTestClusterEpochS : public SubscribeAttribute {
 /*
  * Attribute VendorId
  */
-class ReadTestClusterVendorId : public ReadAttribute {
+class ReadUnitTestingVendorId : public ReadAttribute {
 public:
-    ReadTestClusterVendorId()
+    ReadUnitTestingVendorId()
         : ReadAttribute("vendor-id")
     {
     }
 
-    ~ReadTestClusterVendorId() {}
+    ~ReadUnitTestingVendorId() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000022) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeVendorIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.VendorId response %@", [value description]);
+            NSLog(@"UnitTesting.VendorId response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster VendorId read Error", error);
+                LogNSError("UnitTesting VendorId read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -91751,9 +91751,9 @@ class ReadTestClusterVendorId : public ReadAttribute {
     }
 };
 
-class WriteTestClusterVendorId : public WriteAttribute {
+class WriteUnitTestingVendorId : public WriteAttribute {
 public:
-    WriteTestClusterVendorId()
+    WriteUnitTestingVendorId()
         : WriteAttribute("vendor-id")
     {
         AddArgument("attr-name", "vendor-id");
@@ -91761,13 +91761,13 @@ class WriteTestClusterVendorId : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterVendorId() {}
+    ~WriteUnitTestingVendorId() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000022) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91780,7 +91780,7 @@ class WriteTestClusterVendorId : public WriteAttribute {
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("TestCluster VendorId write Error", error);
+                                              LogNSError("UnitTesting VendorId write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -91791,20 +91791,20 @@ class WriteTestClusterVendorId : public WriteAttribute {
     chip::VendorId mValue;
 };
 
-class SubscribeAttributeTestClusterVendorId : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingVendorId : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterVendorId()
+    SubscribeAttributeUnitTestingVendorId()
         : SubscribeAttribute("vendor-id")
     {
     }
 
-    ~SubscribeAttributeTestClusterVendorId() {}
+    ~SubscribeAttributeUnitTestingVendorId() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000022) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -91822,7 +91822,7 @@ class SubscribeAttributeTestClusterVendorId : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.VendorId response %@", [value description]);
+                NSLog(@"UnitTesting.VendorId response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -91833,28 +91833,28 @@ class SubscribeAttributeTestClusterVendorId : public SubscribeAttribute {
 /*
  * Attribute ListNullablesAndOptionalsStruct
  */
-class ReadTestClusterListNullablesAndOptionalsStruct : public ReadAttribute {
+class ReadUnitTestingListNullablesAndOptionalsStruct : public ReadAttribute {
 public:
-    ReadTestClusterListNullablesAndOptionalsStruct()
+    ReadUnitTestingListNullablesAndOptionalsStruct()
         : ReadAttribute("list-nullables-and-optionals-struct")
     {
     }
 
-    ~ReadTestClusterListNullablesAndOptionalsStruct() {}
+    ~ReadUnitTestingListNullablesAndOptionalsStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000023) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster
             readAttributeListNullablesAndOptionalsStructWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListNullablesAndOptionalsStruct response %@", [value description]);
+                NSLog(@"UnitTesting.ListNullablesAndOptionalsStruct response %@", [value description]);
                 if (error != nil) {
-                    LogNSError("TestCluster ListNullablesAndOptionalsStruct read Error", error);
+                    LogNSError("UnitTesting ListNullablesAndOptionalsStruct read Error", error);
                 }
                 SetCommandExitStatus(error);
             }];
@@ -91862,9 +91862,9 @@ class ReadTestClusterListNullablesAndOptionalsStruct : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
+class WriteUnitTestingListNullablesAndOptionalsStruct : public WriteAttribute {
 public:
-    WriteTestClusterListNullablesAndOptionalsStruct()
+    WriteUnitTestingListNullablesAndOptionalsStruct()
         : WriteAttribute("list-nullables-and-optionals-struct")
         , mComplex(&mValue)
     {
@@ -91873,13 +91873,13 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListNullablesAndOptionalsStruct() {}
+    ~WriteUnitTestingListNullablesAndOptionalsStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000023) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -91890,8 +91890,8 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mValue) {
-                MTRTestClusterClusterNullablesAndOptionalsStruct * newElement_0;
-                newElement_0 = [MTRTestClusterClusterNullablesAndOptionalsStruct new];
+                MTRUnitTestingClusterNullablesAndOptionalsStruct * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterNullablesAndOptionalsStruct new];
                 if (entry_0.nullableInt.IsNull()) {
                     newElement_0.nullableInt = nil;
                 } else {
@@ -91941,7 +91941,7 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
                 if (entry_0.nullableStruct.IsNull()) {
                     newElement_0.nullableStruct = nil;
                 } else {
-                    newElement_0.nullableStruct = [MTRTestClusterClusterSimpleStruct new];
+                    newElement_0.nullableStruct = [MTRUnitTestingClusterSimpleStruct new];
                     newElement_0.nullableStruct.a = [NSNumber numberWithUnsignedChar:entry_0.nullableStruct.Value().a];
                     newElement_0.nullableStruct.b = [NSNumber numberWithBool:entry_0.nullableStruct.Value().b];
                     newElement_0.nullableStruct.c =
@@ -91956,7 +91956,7 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
                     newElement_0.nullableStruct.h = [NSNumber numberWithDouble:entry_0.nullableStruct.Value().h];
                 }
                 if (entry_0.optionalStruct.HasValue()) {
-                    newElement_0.optionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                    newElement_0.optionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                     newElement_0.optionalStruct.a = [NSNumber numberWithUnsignedChar:entry_0.optionalStruct.Value().a];
                     newElement_0.optionalStruct.b = [NSNumber numberWithBool:entry_0.optionalStruct.Value().b];
                     newElement_0.optionalStruct.c =
@@ -91976,7 +91976,7 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
                     if (entry_0.nullableOptionalStruct.Value().IsNull()) {
                         newElement_0.nullableOptionalStruct = nil;
                     } else {
-                        newElement_0.nullableOptionalStruct = [MTRTestClusterClusterSimpleStruct new];
+                        newElement_0.nullableOptionalStruct = [MTRUnitTestingClusterSimpleStruct new];
                         newElement_0.nullableOptionalStruct.a =
                             [NSNumber numberWithUnsignedChar:entry_0.nullableOptionalStruct.Value().Value().a];
                         newElement_0.nullableOptionalStruct.b =
@@ -92053,7 +92053,7 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
                                                              completion:^(NSError * _Nullable error) {
                                                                  if (error != nil) {
                                                                      LogNSError(
-                                                                         "TestCluster ListNullablesAndOptionalsStruct write Error",
+                                                                         "UnitTesting ListNullablesAndOptionalsStruct write Error",
                                                                          error);
                                                                  }
                                                                  SetCommandExitStatus(error);
@@ -92062,26 +92062,26 @@ class WriteTestClusterListNullablesAndOptionalsStruct : public WriteAttribute {
     }
 
 private:
-    chip::app::DataModel::List mValue;
+    chip::app::DataModel::List mValue;
     TypedComplexArgument<
-        chip::app::DataModel::List>
+        chip::app::DataModel::List>
         mComplex;
 };
 
-class SubscribeAttributeTestClusterListNullablesAndOptionalsStruct : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListNullablesAndOptionalsStruct : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListNullablesAndOptionalsStruct()
+    SubscribeAttributeUnitTestingListNullablesAndOptionalsStruct()
         : SubscribeAttribute("list-nullables-and-optionals-struct")
     {
     }
 
-    ~SubscribeAttributeTestClusterListNullablesAndOptionalsStruct() {}
+    ~SubscribeAttributeUnitTestingListNullablesAndOptionalsStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000023) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92099,7 +92099,7 @@ class SubscribeAttributeTestClusterListNullablesAndOptionalsStruct : public Subs
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListNullablesAndOptionalsStruct response %@", [value description]);
+                NSLog(@"UnitTesting.ListNullablesAndOptionalsStruct response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92110,27 +92110,27 @@ class SubscribeAttributeTestClusterListNullablesAndOptionalsStruct : public Subs
 /*
  * Attribute EnumAttr
  */
-class ReadTestClusterEnumAttr : public ReadAttribute {
+class ReadUnitTestingEnumAttr : public ReadAttribute {
 public:
-    ReadTestClusterEnumAttr()
+    ReadUnitTestingEnumAttr()
         : ReadAttribute("enum-attr")
     {
     }
 
-    ~ReadTestClusterEnumAttr() {}
+    ~ReadUnitTestingEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000024) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeEnumAttrWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.EnumAttr response %@", [value description]);
+            NSLog(@"UnitTesting.EnumAttr response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster EnumAttr read Error", error);
+                LogNSError("UnitTesting EnumAttr read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92138,9 +92138,9 @@ class ReadTestClusterEnumAttr : public ReadAttribute {
     }
 };
 
-class WriteTestClusterEnumAttr : public WriteAttribute {
+class WriteUnitTestingEnumAttr : public WriteAttribute {
 public:
-    WriteTestClusterEnumAttr()
+    WriteUnitTestingEnumAttr()
         : WriteAttribute("enum-attr")
     {
         AddArgument("attr-name", "enum-attr");
@@ -92148,13 +92148,13 @@ class WriteTestClusterEnumAttr : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterEnumAttr() {}
+    ~WriteUnitTestingEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000024) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92167,7 +92167,7 @@ class WriteTestClusterEnumAttr : public WriteAttribute {
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("TestCluster EnumAttr write Error", error);
+                                              LogNSError("UnitTesting EnumAttr write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -92178,20 +92178,20 @@ class WriteTestClusterEnumAttr : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterEnumAttr : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingEnumAttr : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterEnumAttr()
+    SubscribeAttributeUnitTestingEnumAttr()
         : SubscribeAttribute("enum-attr")
     {
     }
 
-    ~SubscribeAttributeTestClusterEnumAttr() {}
+    ~SubscribeAttributeUnitTestingEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000024) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92209,7 +92209,7 @@ class SubscribeAttributeTestClusterEnumAttr : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.EnumAttr response %@", [value description]);
+                NSLog(@"UnitTesting.EnumAttr response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92220,28 +92220,28 @@ class SubscribeAttributeTestClusterEnumAttr : public SubscribeAttribute {
 /*
  * Attribute StructAttr
  */
-class ReadTestClusterStructAttr : public ReadAttribute {
+class ReadUnitTestingStructAttr : public ReadAttribute {
 public:
-    ReadTestClusterStructAttr()
+    ReadUnitTestingStructAttr()
         : ReadAttribute("struct-attr")
     {
     }
 
-    ~ReadTestClusterStructAttr() {}
+    ~ReadUnitTestingStructAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000025) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeStructAttrWithCompletion:^(
-            MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.StructAttr response %@", [value description]);
+            MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+            NSLog(@"UnitTesting.StructAttr response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster StructAttr read Error", error);
+                LogNSError("UnitTesting StructAttr read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92249,9 +92249,9 @@ class ReadTestClusterStructAttr : public ReadAttribute {
     }
 };
 
-class WriteTestClusterStructAttr : public WriteAttribute {
+class WriteUnitTestingStructAttr : public WriteAttribute {
 public:
-    WriteTestClusterStructAttr()
+    WriteUnitTestingStructAttr()
         : WriteAttribute("struct-attr")
         , mComplex(&mValue)
     {
@@ -92260,21 +92260,21 @@ class WriteTestClusterStructAttr : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterStructAttr() {}
+    ~WriteUnitTestingStructAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000025) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
         params.timedWriteTimeout
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.dataVersion = mDataVersion.HasValue() ? [NSNumber numberWithUnsignedInt:mDataVersion.Value()] : nil;
-        MTRTestClusterClusterSimpleStruct * _Nonnull value;
-        value = [MTRTestClusterClusterSimpleStruct new];
+        MTRUnitTestingClusterSimpleStruct * _Nonnull value;
+        value = [MTRUnitTestingClusterSimpleStruct new];
         value.a = [NSNumber numberWithUnsignedChar:mValue.a];
         value.b = [NSNumber numberWithBool:mValue.b];
         value.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mValue.c)];
@@ -92288,7 +92288,7 @@ class WriteTestClusterStructAttr : public WriteAttribute {
                                             params:params
                                         completion:^(NSError * _Nullable error) {
                                             if (error != nil) {
-                                                LogNSError("TestCluster StructAttr write Error", error);
+                                                LogNSError("UnitTesting StructAttr write Error", error);
                                             }
                                             SetCommandExitStatus(error);
                                         }];
@@ -92296,24 +92296,24 @@ class WriteTestClusterStructAttr : public WriteAttribute {
     }
 
 private:
-    chip::app::Clusters::TestCluster::Structs::SimpleStruct::Type mValue;
-    TypedComplexArgument mComplex;
+    chip::app::Clusters::UnitTesting::Structs::SimpleStruct::Type mValue;
+    TypedComplexArgument mComplex;
 };
 
-class SubscribeAttributeTestClusterStructAttr : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingStructAttr : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterStructAttr()
+    SubscribeAttributeUnitTestingStructAttr()
         : SubscribeAttribute("struct-attr")
     {
     }
 
-    ~SubscribeAttributeTestClusterStructAttr() {}
+    ~SubscribeAttributeUnitTestingStructAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000025) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92330,8 +92330,8 @@ class SubscribeAttributeTestClusterStructAttr : public SubscribeAttribute {
             subscriptionEstablished:^() {
                 mSubscriptionEstablished = YES;
             }
-            reportHandler:^(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.StructAttr response %@", [value description]);
+            reportHandler:^(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                NSLog(@"UnitTesting.StructAttr response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92342,27 +92342,27 @@ class SubscribeAttributeTestClusterStructAttr : public SubscribeAttribute {
 /*
  * Attribute RangeRestrictedInt8u
  */
-class ReadTestClusterRangeRestrictedInt8u : public ReadAttribute {
+class ReadUnitTestingRangeRestrictedInt8u : public ReadAttribute {
 public:
-    ReadTestClusterRangeRestrictedInt8u()
+    ReadUnitTestingRangeRestrictedInt8u()
         : ReadAttribute("range-restricted-int8u")
     {
     }
 
-    ~ReadTestClusterRangeRestrictedInt8u() {}
+    ~ReadUnitTestingRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000026) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeRangeRestrictedInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.RangeRestrictedInt8u response %@", [value description]);
+            NSLog(@"UnitTesting.RangeRestrictedInt8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster RangeRestrictedInt8u read Error", error);
+                LogNSError("UnitTesting RangeRestrictedInt8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92370,9 +92370,9 @@ class ReadTestClusterRangeRestrictedInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterRangeRestrictedInt8u : public WriteAttribute {
+class WriteUnitTestingRangeRestrictedInt8u : public WriteAttribute {
 public:
-    WriteTestClusterRangeRestrictedInt8u()
+    WriteUnitTestingRangeRestrictedInt8u()
         : WriteAttribute("range-restricted-int8u")
     {
         AddArgument("attr-name", "range-restricted-int8u");
@@ -92380,13 +92380,13 @@ class WriteTestClusterRangeRestrictedInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterRangeRestrictedInt8u() {}
+    ~WriteUnitTestingRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000026) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92399,7 +92399,7 @@ class WriteTestClusterRangeRestrictedInt8u : public WriteAttribute {
                                                       params:params
                                                   completion:^(NSError * _Nullable error) {
                                                       if (error != nil) {
-                                                          LogNSError("TestCluster RangeRestrictedInt8u write Error", error);
+                                                          LogNSError("UnitTesting RangeRestrictedInt8u write Error", error);
                                                       }
                                                       SetCommandExitStatus(error);
                                                   }];
@@ -92410,20 +92410,20 @@ class WriteTestClusterRangeRestrictedInt8u : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterRangeRestrictedInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingRangeRestrictedInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterRangeRestrictedInt8u()
+    SubscribeAttributeUnitTestingRangeRestrictedInt8u()
         : SubscribeAttribute("range-restricted-int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterRangeRestrictedInt8u() {}
+    ~SubscribeAttributeUnitTestingRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000026) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92441,7 +92441,7 @@ class SubscribeAttributeTestClusterRangeRestrictedInt8u : public SubscribeAttrib
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.RangeRestrictedInt8u response %@", [value description]);
+                NSLog(@"UnitTesting.RangeRestrictedInt8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92452,27 +92452,27 @@ class SubscribeAttributeTestClusterRangeRestrictedInt8u : public SubscribeAttrib
 /*
  * Attribute RangeRestrictedInt8s
  */
-class ReadTestClusterRangeRestrictedInt8s : public ReadAttribute {
+class ReadUnitTestingRangeRestrictedInt8s : public ReadAttribute {
 public:
-    ReadTestClusterRangeRestrictedInt8s()
+    ReadUnitTestingRangeRestrictedInt8s()
         : ReadAttribute("range-restricted-int8s")
     {
     }
 
-    ~ReadTestClusterRangeRestrictedInt8s() {}
+    ~ReadUnitTestingRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000027) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeRangeRestrictedInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.RangeRestrictedInt8s response %@", [value description]);
+            NSLog(@"UnitTesting.RangeRestrictedInt8s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster RangeRestrictedInt8s read Error", error);
+                LogNSError("UnitTesting RangeRestrictedInt8s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92480,9 +92480,9 @@ class ReadTestClusterRangeRestrictedInt8s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterRangeRestrictedInt8s : public WriteAttribute {
+class WriteUnitTestingRangeRestrictedInt8s : public WriteAttribute {
 public:
-    WriteTestClusterRangeRestrictedInt8s()
+    WriteUnitTestingRangeRestrictedInt8s()
         : WriteAttribute("range-restricted-int8s")
     {
         AddArgument("attr-name", "range-restricted-int8s");
@@ -92490,13 +92490,13 @@ class WriteTestClusterRangeRestrictedInt8s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterRangeRestrictedInt8s() {}
+    ~WriteUnitTestingRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000027) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92509,7 +92509,7 @@ class WriteTestClusterRangeRestrictedInt8s : public WriteAttribute {
                                                       params:params
                                                   completion:^(NSError * _Nullable error) {
                                                       if (error != nil) {
-                                                          LogNSError("TestCluster RangeRestrictedInt8s write Error", error);
+                                                          LogNSError("UnitTesting RangeRestrictedInt8s write Error", error);
                                                       }
                                                       SetCommandExitStatus(error);
                                                   }];
@@ -92520,20 +92520,20 @@ class WriteTestClusterRangeRestrictedInt8s : public WriteAttribute {
     int8_t mValue;
 };
 
-class SubscribeAttributeTestClusterRangeRestrictedInt8s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingRangeRestrictedInt8s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterRangeRestrictedInt8s()
+    SubscribeAttributeUnitTestingRangeRestrictedInt8s()
         : SubscribeAttribute("range-restricted-int8s")
     {
     }
 
-    ~SubscribeAttributeTestClusterRangeRestrictedInt8s() {}
+    ~SubscribeAttributeUnitTestingRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000027) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92551,7 +92551,7 @@ class SubscribeAttributeTestClusterRangeRestrictedInt8s : public SubscribeAttrib
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.RangeRestrictedInt8s response %@", [value description]);
+                NSLog(@"UnitTesting.RangeRestrictedInt8s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92562,27 +92562,27 @@ class SubscribeAttributeTestClusterRangeRestrictedInt8s : public SubscribeAttrib
 /*
  * Attribute RangeRestrictedInt16u
  */
-class ReadTestClusterRangeRestrictedInt16u : public ReadAttribute {
+class ReadUnitTestingRangeRestrictedInt16u : public ReadAttribute {
 public:
-    ReadTestClusterRangeRestrictedInt16u()
+    ReadUnitTestingRangeRestrictedInt16u()
         : ReadAttribute("range-restricted-int16u")
     {
     }
 
-    ~ReadTestClusterRangeRestrictedInt16u() {}
+    ~ReadUnitTestingRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000028) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeRangeRestrictedInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.RangeRestrictedInt16u response %@", [value description]);
+            NSLog(@"UnitTesting.RangeRestrictedInt16u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster RangeRestrictedInt16u read Error", error);
+                LogNSError("UnitTesting RangeRestrictedInt16u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92590,9 +92590,9 @@ class ReadTestClusterRangeRestrictedInt16u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterRangeRestrictedInt16u : public WriteAttribute {
+class WriteUnitTestingRangeRestrictedInt16u : public WriteAttribute {
 public:
-    WriteTestClusterRangeRestrictedInt16u()
+    WriteUnitTestingRangeRestrictedInt16u()
         : WriteAttribute("range-restricted-int16u")
     {
         AddArgument("attr-name", "range-restricted-int16u");
@@ -92600,13 +92600,13 @@ class WriteTestClusterRangeRestrictedInt16u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterRangeRestrictedInt16u() {}
+    ~WriteUnitTestingRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000028) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92619,7 +92619,7 @@ class WriteTestClusterRangeRestrictedInt16u : public WriteAttribute {
                                                        params:params
                                                    completion:^(NSError * _Nullable error) {
                                                        if (error != nil) {
-                                                           LogNSError("TestCluster RangeRestrictedInt16u write Error", error);
+                                                           LogNSError("UnitTesting RangeRestrictedInt16u write Error", error);
                                                        }
                                                        SetCommandExitStatus(error);
                                                    }];
@@ -92630,20 +92630,20 @@ class WriteTestClusterRangeRestrictedInt16u : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterRangeRestrictedInt16u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingRangeRestrictedInt16u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterRangeRestrictedInt16u()
+    SubscribeAttributeUnitTestingRangeRestrictedInt16u()
         : SubscribeAttribute("range-restricted-int16u")
     {
     }
 
-    ~SubscribeAttributeTestClusterRangeRestrictedInt16u() {}
+    ~SubscribeAttributeUnitTestingRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000028) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92661,7 +92661,7 @@ class SubscribeAttributeTestClusterRangeRestrictedInt16u : public SubscribeAttri
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.RangeRestrictedInt16u response %@", [value description]);
+                NSLog(@"UnitTesting.RangeRestrictedInt16u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92672,27 +92672,27 @@ class SubscribeAttributeTestClusterRangeRestrictedInt16u : public SubscribeAttri
 /*
  * Attribute RangeRestrictedInt16s
  */
-class ReadTestClusterRangeRestrictedInt16s : public ReadAttribute {
+class ReadUnitTestingRangeRestrictedInt16s : public ReadAttribute {
 public:
-    ReadTestClusterRangeRestrictedInt16s()
+    ReadUnitTestingRangeRestrictedInt16s()
         : ReadAttribute("range-restricted-int16s")
     {
     }
 
-    ~ReadTestClusterRangeRestrictedInt16s() {}
+    ~ReadUnitTestingRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000029) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeRangeRestrictedInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.RangeRestrictedInt16s response %@", [value description]);
+            NSLog(@"UnitTesting.RangeRestrictedInt16s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster RangeRestrictedInt16s read Error", error);
+                LogNSError("UnitTesting RangeRestrictedInt16s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92700,9 +92700,9 @@ class ReadTestClusterRangeRestrictedInt16s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterRangeRestrictedInt16s : public WriteAttribute {
+class WriteUnitTestingRangeRestrictedInt16s : public WriteAttribute {
 public:
-    WriteTestClusterRangeRestrictedInt16s()
+    WriteUnitTestingRangeRestrictedInt16s()
         : WriteAttribute("range-restricted-int16s")
     {
         AddArgument("attr-name", "range-restricted-int16s");
@@ -92710,13 +92710,13 @@ class WriteTestClusterRangeRestrictedInt16s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterRangeRestrictedInt16s() {}
+    ~WriteUnitTestingRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000029) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92729,7 +92729,7 @@ class WriteTestClusterRangeRestrictedInt16s : public WriteAttribute {
                                                        params:params
                                                    completion:^(NSError * _Nullable error) {
                                                        if (error != nil) {
-                                                           LogNSError("TestCluster RangeRestrictedInt16s write Error", error);
+                                                           LogNSError("UnitTesting RangeRestrictedInt16s write Error", error);
                                                        }
                                                        SetCommandExitStatus(error);
                                                    }];
@@ -92740,20 +92740,20 @@ class WriteTestClusterRangeRestrictedInt16s : public WriteAttribute {
     int16_t mValue;
 };
 
-class SubscribeAttributeTestClusterRangeRestrictedInt16s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingRangeRestrictedInt16s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterRangeRestrictedInt16s()
+    SubscribeAttributeUnitTestingRangeRestrictedInt16s()
         : SubscribeAttribute("range-restricted-int16s")
     {
     }
 
-    ~SubscribeAttributeTestClusterRangeRestrictedInt16s() {}
+    ~SubscribeAttributeUnitTestingRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000029) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92771,7 +92771,7 @@ class SubscribeAttributeTestClusterRangeRestrictedInt16s : public SubscribeAttri
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.RangeRestrictedInt16s response %@", [value description]);
+                NSLog(@"UnitTesting.RangeRestrictedInt16s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92782,27 +92782,27 @@ class SubscribeAttributeTestClusterRangeRestrictedInt16s : public SubscribeAttri
 /*
  * Attribute ListLongOctetString
  */
-class ReadTestClusterListLongOctetString : public ReadAttribute {
+class ReadUnitTestingListLongOctetString : public ReadAttribute {
 public:
-    ReadTestClusterListLongOctetString()
+    ReadUnitTestingListLongOctetString()
         : ReadAttribute("list-long-octet-string")
     {
     }
 
-    ~ReadTestClusterListLongOctetString() {}
+    ~ReadUnitTestingListLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000002A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeListLongOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ListLongOctetString response %@", [value description]);
+            NSLog(@"UnitTesting.ListLongOctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ListLongOctetString read Error", error);
+                LogNSError("UnitTesting ListLongOctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -92810,9 +92810,9 @@ class ReadTestClusterListLongOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListLongOctetString : public WriteAttribute {
+class WriteUnitTestingListLongOctetString : public WriteAttribute {
 public:
-    WriteTestClusterListLongOctetString()
+    WriteUnitTestingListLongOctetString()
         : WriteAttribute("list-long-octet-string")
         , mComplex(&mValue)
     {
@@ -92821,13 +92821,13 @@ class WriteTestClusterListLongOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListLongOctetString() {}
+    ~WriteUnitTestingListLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000002A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92849,7 +92849,7 @@ class WriteTestClusterListLongOctetString : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster ListLongOctetString write Error", error);
+                                                         LogNSError("UnitTesting ListLongOctetString write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -92861,20 +92861,20 @@ class WriteTestClusterListLongOctetString : public WriteAttribute {
     TypedComplexArgument> mComplex;
 };
 
-class SubscribeAttributeTestClusterListLongOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListLongOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListLongOctetString()
+    SubscribeAttributeUnitTestingListLongOctetString()
         : SubscribeAttribute("list-long-octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterListLongOctetString() {}
+    ~SubscribeAttributeUnitTestingListLongOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000002A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -92892,7 +92892,7 @@ class SubscribeAttributeTestClusterListLongOctetString : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListLongOctetString response %@", [value description]);
+                NSLog(@"UnitTesting.ListLongOctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -92903,21 +92903,21 @@ class SubscribeAttributeTestClusterListLongOctetString : public SubscribeAttribu
 /*
  * Attribute ListFabricScoped
  */
-class ReadTestClusterListFabricScoped : public ReadAttribute {
+class ReadUnitTestingListFabricScoped : public ReadAttribute {
 public:
-    ReadTestClusterListFabricScoped()
+    ReadUnitTestingListFabricScoped()
         : ReadAttribute("list-fabric-scoped")
     {
     }
 
-    ~ReadTestClusterListFabricScoped() {}
+    ~ReadUnitTestingListFabricScoped() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000002B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRReadParams * params = [[MTRReadParams alloc] init];
@@ -92926,9 +92926,9 @@ class ReadTestClusterListFabricScoped : public ReadAttribute {
         }
         [cluster readAttributeListFabricScopedWithParams:params
                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                  NSLog(@"TestCluster.ListFabricScoped response %@", [value description]);
+                                                  NSLog(@"UnitTesting.ListFabricScoped response %@", [value description]);
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster ListFabricScoped read Error", error);
+                                                      LogNSError("UnitTesting ListFabricScoped read Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -92936,9 +92936,9 @@ class ReadTestClusterListFabricScoped : public ReadAttribute {
     }
 };
 
-class WriteTestClusterListFabricScoped : public WriteAttribute {
+class WriteUnitTestingListFabricScoped : public WriteAttribute {
 public:
-    WriteTestClusterListFabricScoped()
+    WriteUnitTestingListFabricScoped()
         : WriteAttribute("list-fabric-scoped")
         , mComplex(&mValue)
     {
@@ -92947,13 +92947,13 @@ class WriteTestClusterListFabricScoped : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterListFabricScoped() {}
+    ~WriteUnitTestingListFabricScoped() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000002B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -92964,8 +92964,8 @@ class WriteTestClusterListFabricScoped : public WriteAttribute {
         { // Scope for our temporary variables
             auto * array_0 = [NSMutableArray new];
             for (auto & entry_0 : mValue) {
-                MTRTestClusterClusterTestFabricScoped * newElement_0;
-                newElement_0 = [MTRTestClusterClusterTestFabricScoped new];
+                MTRUnitTestingClusterTestFabricScoped * newElement_0;
+                newElement_0 = [MTRUnitTestingClusterTestFabricScoped new];
                 newElement_0.fabricSensitiveInt8u = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveInt8u];
                 if (entry_0.optionalFabricSensitiveInt8u.HasValue()) {
                     newElement_0.optionalFabricSensitiveInt8u =
@@ -92992,7 +92992,7 @@ class WriteTestClusterListFabricScoped : public WriteAttribute {
                 newElement_0.fabricSensitiveCharString = [[NSString alloc] initWithBytes:entry_0.fabricSensitiveCharString.data()
                                                                                   length:entry_0.fabricSensitiveCharString.size()
                                                                                 encoding:NSUTF8StringEncoding];
-                newElement_0.fabricSensitiveStruct = [MTRTestClusterClusterSimpleStruct new];
+                newElement_0.fabricSensitiveStruct = [MTRUnitTestingClusterSimpleStruct new];
                 newElement_0.fabricSensitiveStruct.a = [NSNumber numberWithUnsignedChar:entry_0.fabricSensitiveStruct.a];
                 newElement_0.fabricSensitiveStruct.b = [NSNumber numberWithBool:entry_0.fabricSensitiveStruct.b];
                 newElement_0.fabricSensitiveStruct.c =
@@ -93024,7 +93024,7 @@ class WriteTestClusterListFabricScoped : public WriteAttribute {
                                                   params:params
                                               completion:^(NSError * _Nullable error) {
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster ListFabricScoped write Error", error);
+                                                      LogNSError("UnitTesting ListFabricScoped write Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -93032,25 +93032,25 @@ class WriteTestClusterListFabricScoped : public WriteAttribute {
     }
 
 private:
-    chip::app::DataModel::List mValue;
-    TypedComplexArgument>
+    chip::app::DataModel::List mValue;
+    TypedComplexArgument>
         mComplex;
 };
 
-class SubscribeAttributeTestClusterListFabricScoped : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingListFabricScoped : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterListFabricScoped()
+    SubscribeAttributeUnitTestingListFabricScoped()
         : SubscribeAttribute("list-fabric-scoped")
     {
     }
 
-    ~SubscribeAttributeTestClusterListFabricScoped() {}
+    ~SubscribeAttributeUnitTestingListFabricScoped() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000002B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93068,7 +93068,7 @@ class SubscribeAttributeTestClusterListFabricScoped : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ListFabricScoped response %@", [value description]);
+                NSLog(@"UnitTesting.ListFabricScoped response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93079,27 +93079,27 @@ class SubscribeAttributeTestClusterListFabricScoped : public SubscribeAttribute
 /*
  * Attribute TimedWriteBoolean
  */
-class ReadTestClusterTimedWriteBoolean : public ReadAttribute {
+class ReadUnitTestingTimedWriteBoolean : public ReadAttribute {
 public:
-    ReadTestClusterTimedWriteBoolean()
+    ReadUnitTestingTimedWriteBoolean()
         : ReadAttribute("timed-write-boolean")
     {
     }
 
-    ~ReadTestClusterTimedWriteBoolean() {}
+    ~ReadUnitTestingTimedWriteBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000030) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeTimedWriteBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.TimedWriteBoolean response %@", [value description]);
+            NSLog(@"UnitTesting.TimedWriteBoolean response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster TimedWriteBoolean read Error", error);
+                LogNSError("UnitTesting TimedWriteBoolean read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93107,9 +93107,9 @@ class ReadTestClusterTimedWriteBoolean : public ReadAttribute {
     }
 };
 
-class WriteTestClusterTimedWriteBoolean : public WriteAttribute {
+class WriteUnitTestingTimedWriteBoolean : public WriteAttribute {
 public:
-    WriteTestClusterTimedWriteBoolean()
+    WriteUnitTestingTimedWriteBoolean()
         : WriteAttribute("timed-write-boolean")
     {
         AddArgument("attr-name", "timed-write-boolean");
@@ -93117,13 +93117,13 @@ class WriteTestClusterTimedWriteBoolean : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterTimedWriteBoolean() {}
+    ~WriteUnitTestingTimedWriteBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000030) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93136,7 +93136,7 @@ class WriteTestClusterTimedWriteBoolean : public WriteAttribute {
                                                    params:params
                                                completion:^(NSError * _Nullable error) {
                                                    if (error != nil) {
-                                                       LogNSError("TestCluster TimedWriteBoolean write Error", error);
+                                                       LogNSError("UnitTesting TimedWriteBoolean write Error", error);
                                                    }
                                                    SetCommandExitStatus(error);
                                                }];
@@ -93147,20 +93147,20 @@ class WriteTestClusterTimedWriteBoolean : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterTimedWriteBoolean : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingTimedWriteBoolean : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterTimedWriteBoolean()
+    SubscribeAttributeUnitTestingTimedWriteBoolean()
         : SubscribeAttribute("timed-write-boolean")
     {
     }
 
-    ~SubscribeAttributeTestClusterTimedWriteBoolean() {}
+    ~SubscribeAttributeUnitTestingTimedWriteBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000030) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93178,7 +93178,7 @@ class SubscribeAttributeTestClusterTimedWriteBoolean : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.TimedWriteBoolean response %@", [value description]);
+                NSLog(@"UnitTesting.TimedWriteBoolean response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93189,27 +93189,27 @@ class SubscribeAttributeTestClusterTimedWriteBoolean : public SubscribeAttribute
 /*
  * Attribute GeneralErrorBoolean
  */
-class ReadTestClusterGeneralErrorBoolean : public ReadAttribute {
+class ReadUnitTestingGeneralErrorBoolean : public ReadAttribute {
 public:
-    ReadTestClusterGeneralErrorBoolean()
+    ReadUnitTestingGeneralErrorBoolean()
         : ReadAttribute("general-error-boolean")
     {
     }
 
-    ~ReadTestClusterGeneralErrorBoolean() {}
+    ~ReadUnitTestingGeneralErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000031) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeGeneralErrorBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.GeneralErrorBoolean response %@", [value description]);
+            NSLog(@"UnitTesting.GeneralErrorBoolean response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster GeneralErrorBoolean read Error", error);
+                LogNSError("UnitTesting GeneralErrorBoolean read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93217,9 +93217,9 @@ class ReadTestClusterGeneralErrorBoolean : public ReadAttribute {
     }
 };
 
-class WriteTestClusterGeneralErrorBoolean : public WriteAttribute {
+class WriteUnitTestingGeneralErrorBoolean : public WriteAttribute {
 public:
-    WriteTestClusterGeneralErrorBoolean()
+    WriteUnitTestingGeneralErrorBoolean()
         : WriteAttribute("general-error-boolean")
     {
         AddArgument("attr-name", "general-error-boolean");
@@ -93227,13 +93227,13 @@ class WriteTestClusterGeneralErrorBoolean : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterGeneralErrorBoolean() {}
+    ~WriteUnitTestingGeneralErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000031) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93246,7 +93246,7 @@ class WriteTestClusterGeneralErrorBoolean : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster GeneralErrorBoolean write Error", error);
+                                                         LogNSError("UnitTesting GeneralErrorBoolean write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -93257,20 +93257,20 @@ class WriteTestClusterGeneralErrorBoolean : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterGeneralErrorBoolean : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingGeneralErrorBoolean : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterGeneralErrorBoolean()
+    SubscribeAttributeUnitTestingGeneralErrorBoolean()
         : SubscribeAttribute("general-error-boolean")
     {
     }
 
-    ~SubscribeAttributeTestClusterGeneralErrorBoolean() {}
+    ~SubscribeAttributeUnitTestingGeneralErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000031) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93288,7 +93288,7 @@ class SubscribeAttributeTestClusterGeneralErrorBoolean : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.GeneralErrorBoolean response %@", [value description]);
+                NSLog(@"UnitTesting.GeneralErrorBoolean response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93299,27 +93299,27 @@ class SubscribeAttributeTestClusterGeneralErrorBoolean : public SubscribeAttribu
 /*
  * Attribute ClusterErrorBoolean
  */
-class ReadTestClusterClusterErrorBoolean : public ReadAttribute {
+class ReadUnitTestingClusterErrorBoolean : public ReadAttribute {
 public:
-    ReadTestClusterClusterErrorBoolean()
+    ReadUnitTestingClusterErrorBoolean()
         : ReadAttribute("cluster-error-boolean")
     {
     }
 
-    ~ReadTestClusterClusterErrorBoolean() {}
+    ~ReadUnitTestingClusterErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00000032) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeClusterErrorBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ClusterErrorBoolean response %@", [value description]);
+            NSLog(@"UnitTesting.ClusterErrorBoolean response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ClusterErrorBoolean read Error", error);
+                LogNSError("UnitTesting ClusterErrorBoolean read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93327,9 +93327,9 @@ class ReadTestClusterClusterErrorBoolean : public ReadAttribute {
     }
 };
 
-class WriteTestClusterClusterErrorBoolean : public WriteAttribute {
+class WriteUnitTestingClusterErrorBoolean : public WriteAttribute {
 public:
-    WriteTestClusterClusterErrorBoolean()
+    WriteUnitTestingClusterErrorBoolean()
         : WriteAttribute("cluster-error-boolean")
     {
         AddArgument("attr-name", "cluster-error-boolean");
@@ -93337,13 +93337,13 @@ class WriteTestClusterClusterErrorBoolean : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterClusterErrorBoolean() {}
+    ~WriteUnitTestingClusterErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00000032) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93356,7 +93356,7 @@ class WriteTestClusterClusterErrorBoolean : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster ClusterErrorBoolean write Error", error);
+                                                         LogNSError("UnitTesting ClusterErrorBoolean write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -93367,20 +93367,20 @@ class WriteTestClusterClusterErrorBoolean : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterClusterErrorBoolean : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingClusterErrorBoolean : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterClusterErrorBoolean()
+    SubscribeAttributeUnitTestingClusterErrorBoolean()
         : SubscribeAttribute("cluster-error-boolean")
     {
     }
 
-    ~SubscribeAttributeTestClusterClusterErrorBoolean() {}
+    ~SubscribeAttributeUnitTestingClusterErrorBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00000032) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93398,7 +93398,7 @@ class SubscribeAttributeTestClusterClusterErrorBoolean : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ClusterErrorBoolean response %@", [value description]);
+                NSLog(@"UnitTesting.ClusterErrorBoolean response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93409,27 +93409,27 @@ class SubscribeAttributeTestClusterClusterErrorBoolean : public SubscribeAttribu
 /*
  * Attribute Unsupported
  */
-class ReadTestClusterUnsupported : public ReadAttribute {
+class ReadUnitTestingUnsupported : public ReadAttribute {
 public:
-    ReadTestClusterUnsupported()
+    ReadUnitTestingUnsupported()
         : ReadAttribute("unsupported")
     {
     }
 
-    ~ReadTestClusterUnsupported() {}
+    ~ReadUnitTestingUnsupported() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x000000FF) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeUnsupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.Unsupported response %@", [value description]);
+            NSLog(@"UnitTesting.Unsupported response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster Unsupported read Error", error);
+                LogNSError("UnitTesting Unsupported read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93437,9 +93437,9 @@ class ReadTestClusterUnsupported : public ReadAttribute {
     }
 };
 
-class WriteTestClusterUnsupported : public WriteAttribute {
+class WriteUnitTestingUnsupported : public WriteAttribute {
 public:
-    WriteTestClusterUnsupported()
+    WriteUnitTestingUnsupported()
         : WriteAttribute("unsupported")
     {
         AddArgument("attr-name", "unsupported");
@@ -93447,13 +93447,13 @@ class WriteTestClusterUnsupported : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterUnsupported() {}
+    ~WriteUnitTestingUnsupported() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x000000FF) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93466,7 +93466,7 @@ class WriteTestClusterUnsupported : public WriteAttribute {
                                              params:params
                                          completion:^(NSError * _Nullable error) {
                                              if (error != nil) {
-                                                 LogNSError("TestCluster Unsupported write Error", error);
+                                                 LogNSError("UnitTesting Unsupported write Error", error);
                                              }
                                              SetCommandExitStatus(error);
                                          }];
@@ -93477,20 +93477,20 @@ class WriteTestClusterUnsupported : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterUnsupported : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingUnsupported : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterUnsupported()
+    SubscribeAttributeUnitTestingUnsupported()
         : SubscribeAttribute("unsupported")
     {
     }
 
-    ~SubscribeAttributeTestClusterUnsupported() {}
+    ~SubscribeAttributeUnitTestingUnsupported() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x000000FF) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93508,7 +93508,7 @@ class SubscribeAttributeTestClusterUnsupported : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.Unsupported response %@", [value description]);
+                NSLog(@"UnitTesting.Unsupported response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93519,27 +93519,27 @@ class SubscribeAttributeTestClusterUnsupported : public SubscribeAttribute {
 /*
  * Attribute NullableBoolean
  */
-class ReadTestClusterNullableBoolean : public ReadAttribute {
+class ReadUnitTestingNullableBoolean : public ReadAttribute {
 public:
-    ReadTestClusterNullableBoolean()
+    ReadUnitTestingNullableBoolean()
         : ReadAttribute("nullable-boolean")
     {
     }
 
-    ~ReadTestClusterNullableBoolean() {}
+    ~ReadUnitTestingNullableBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004000) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableBoolean response %@", [value description]);
+            NSLog(@"UnitTesting.NullableBoolean response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableBoolean read Error", error);
+                LogNSError("UnitTesting NullableBoolean read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93547,9 +93547,9 @@ class ReadTestClusterNullableBoolean : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableBoolean : public WriteAttribute {
+class WriteUnitTestingNullableBoolean : public WriteAttribute {
 public:
-    WriteTestClusterNullableBoolean()
+    WriteUnitTestingNullableBoolean()
         : WriteAttribute("nullable-boolean")
     {
         AddArgument("attr-name", "nullable-boolean");
@@ -93557,13 +93557,13 @@ class WriteTestClusterNullableBoolean : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableBoolean() {}
+    ~WriteUnitTestingNullableBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004000) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93576,7 +93576,7 @@ class WriteTestClusterNullableBoolean : public WriteAttribute {
                                                  params:params
                                              completion:^(NSError * _Nullable error) {
                                                  if (error != nil) {
-                                                     LogNSError("TestCluster NullableBoolean write Error", error);
+                                                     LogNSError("UnitTesting NullableBoolean write Error", error);
                                                  }
                                                  SetCommandExitStatus(error);
                                              }];
@@ -93587,20 +93587,20 @@ class WriteTestClusterNullableBoolean : public WriteAttribute {
     bool mValue;
 };
 
-class SubscribeAttributeTestClusterNullableBoolean : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableBoolean : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableBoolean()
+    SubscribeAttributeUnitTestingNullableBoolean()
         : SubscribeAttribute("nullable-boolean")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableBoolean() {}
+    ~SubscribeAttributeUnitTestingNullableBoolean() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004000) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93618,7 +93618,7 @@ class SubscribeAttributeTestClusterNullableBoolean : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableBoolean response %@", [value description]);
+                NSLog(@"UnitTesting.NullableBoolean response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93629,27 +93629,27 @@ class SubscribeAttributeTestClusterNullableBoolean : public SubscribeAttribute {
 /*
  * Attribute NullableBitmap8
  */
-class ReadTestClusterNullableBitmap8 : public ReadAttribute {
+class ReadUnitTestingNullableBitmap8 : public ReadAttribute {
 public:
-    ReadTestClusterNullableBitmap8()
+    ReadUnitTestingNullableBitmap8()
         : ReadAttribute("nullable-bitmap8")
     {
     }
 
-    ~ReadTestClusterNullableBitmap8() {}
+    ~ReadUnitTestingNullableBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004001) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableBitmap8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableBitmap8 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableBitmap8 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableBitmap8 read Error", error);
+                LogNSError("UnitTesting NullableBitmap8 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93657,9 +93657,9 @@ class ReadTestClusterNullableBitmap8 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableBitmap8 : public WriteAttribute {
+class WriteUnitTestingNullableBitmap8 : public WriteAttribute {
 public:
-    WriteTestClusterNullableBitmap8()
+    WriteUnitTestingNullableBitmap8()
         : WriteAttribute("nullable-bitmap8")
     {
         AddArgument("attr-name", "nullable-bitmap8");
@@ -93667,13 +93667,13 @@ class WriteTestClusterNullableBitmap8 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableBitmap8() {}
+    ~WriteUnitTestingNullableBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004001) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93686,7 +93686,7 @@ class WriteTestClusterNullableBitmap8 : public WriteAttribute {
                                                  params:params
                                              completion:^(NSError * _Nullable error) {
                                                  if (error != nil) {
-                                                     LogNSError("TestCluster NullableBitmap8 write Error", error);
+                                                     LogNSError("UnitTesting NullableBitmap8 write Error", error);
                                                  }
                                                  SetCommandExitStatus(error);
                                              }];
@@ -93697,20 +93697,20 @@ class WriteTestClusterNullableBitmap8 : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableBitmap8 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableBitmap8 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableBitmap8()
+    SubscribeAttributeUnitTestingNullableBitmap8()
         : SubscribeAttribute("nullable-bitmap8")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableBitmap8() {}
+    ~SubscribeAttributeUnitTestingNullableBitmap8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004001) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93728,7 +93728,7 @@ class SubscribeAttributeTestClusterNullableBitmap8 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableBitmap8 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableBitmap8 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93739,27 +93739,27 @@ class SubscribeAttributeTestClusterNullableBitmap8 : public SubscribeAttribute {
 /*
  * Attribute NullableBitmap16
  */
-class ReadTestClusterNullableBitmap16 : public ReadAttribute {
+class ReadUnitTestingNullableBitmap16 : public ReadAttribute {
 public:
-    ReadTestClusterNullableBitmap16()
+    ReadUnitTestingNullableBitmap16()
         : ReadAttribute("nullable-bitmap16")
     {
     }
 
-    ~ReadTestClusterNullableBitmap16() {}
+    ~ReadUnitTestingNullableBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004002) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableBitmap16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableBitmap16 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableBitmap16 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableBitmap16 read Error", error);
+                LogNSError("UnitTesting NullableBitmap16 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93767,9 +93767,9 @@ class ReadTestClusterNullableBitmap16 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableBitmap16 : public WriteAttribute {
+class WriteUnitTestingNullableBitmap16 : public WriteAttribute {
 public:
-    WriteTestClusterNullableBitmap16()
+    WriteUnitTestingNullableBitmap16()
         : WriteAttribute("nullable-bitmap16")
     {
         AddArgument("attr-name", "nullable-bitmap16");
@@ -93777,13 +93777,13 @@ class WriteTestClusterNullableBitmap16 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableBitmap16() {}
+    ~WriteUnitTestingNullableBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004002) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93796,7 +93796,7 @@ class WriteTestClusterNullableBitmap16 : public WriteAttribute {
                                                   params:params
                                               completion:^(NSError * _Nullable error) {
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster NullableBitmap16 write Error", error);
+                                                      LogNSError("UnitTesting NullableBitmap16 write Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -93807,20 +93807,20 @@ class WriteTestClusterNullableBitmap16 : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableBitmap16 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableBitmap16 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableBitmap16()
+    SubscribeAttributeUnitTestingNullableBitmap16()
         : SubscribeAttribute("nullable-bitmap16")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableBitmap16() {}
+    ~SubscribeAttributeUnitTestingNullableBitmap16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004002) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93838,7 +93838,7 @@ class SubscribeAttributeTestClusterNullableBitmap16 : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableBitmap16 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableBitmap16 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93849,27 +93849,27 @@ class SubscribeAttributeTestClusterNullableBitmap16 : public SubscribeAttribute
 /*
  * Attribute NullableBitmap32
  */
-class ReadTestClusterNullableBitmap32 : public ReadAttribute {
+class ReadUnitTestingNullableBitmap32 : public ReadAttribute {
 public:
-    ReadTestClusterNullableBitmap32()
+    ReadUnitTestingNullableBitmap32()
         : ReadAttribute("nullable-bitmap32")
     {
     }
 
-    ~ReadTestClusterNullableBitmap32() {}
+    ~ReadUnitTestingNullableBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004003) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableBitmap32WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableBitmap32 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableBitmap32 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableBitmap32 read Error", error);
+                LogNSError("UnitTesting NullableBitmap32 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93877,9 +93877,9 @@ class ReadTestClusterNullableBitmap32 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableBitmap32 : public WriteAttribute {
+class WriteUnitTestingNullableBitmap32 : public WriteAttribute {
 public:
-    WriteTestClusterNullableBitmap32()
+    WriteUnitTestingNullableBitmap32()
         : WriteAttribute("nullable-bitmap32")
     {
         AddArgument("attr-name", "nullable-bitmap32");
@@ -93887,13 +93887,13 @@ class WriteTestClusterNullableBitmap32 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableBitmap32() {}
+    ~WriteUnitTestingNullableBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004003) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -93906,7 +93906,7 @@ class WriteTestClusterNullableBitmap32 : public WriteAttribute {
                                                   params:params
                                               completion:^(NSError * _Nullable error) {
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster NullableBitmap32 write Error", error);
+                                                      LogNSError("UnitTesting NullableBitmap32 write Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -93917,20 +93917,20 @@ class WriteTestClusterNullableBitmap32 : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableBitmap32 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableBitmap32 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableBitmap32()
+    SubscribeAttributeUnitTestingNullableBitmap32()
         : SubscribeAttribute("nullable-bitmap32")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableBitmap32() {}
+    ~SubscribeAttributeUnitTestingNullableBitmap32() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004003) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -93948,7 +93948,7 @@ class SubscribeAttributeTestClusterNullableBitmap32 : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableBitmap32 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableBitmap32 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -93959,27 +93959,27 @@ class SubscribeAttributeTestClusterNullableBitmap32 : public SubscribeAttribute
 /*
  * Attribute NullableBitmap64
  */
-class ReadTestClusterNullableBitmap64 : public ReadAttribute {
+class ReadUnitTestingNullableBitmap64 : public ReadAttribute {
 public:
-    ReadTestClusterNullableBitmap64()
+    ReadUnitTestingNullableBitmap64()
         : ReadAttribute("nullable-bitmap64")
     {
     }
 
-    ~ReadTestClusterNullableBitmap64() {}
+    ~ReadUnitTestingNullableBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004004) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableBitmap64WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableBitmap64 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableBitmap64 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableBitmap64 read Error", error);
+                LogNSError("UnitTesting NullableBitmap64 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -93987,9 +93987,9 @@ class ReadTestClusterNullableBitmap64 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableBitmap64 : public WriteAttribute {
+class WriteUnitTestingNullableBitmap64 : public WriteAttribute {
 public:
-    WriteTestClusterNullableBitmap64()
+    WriteUnitTestingNullableBitmap64()
         : WriteAttribute("nullable-bitmap64")
     {
         AddArgument("attr-name", "nullable-bitmap64");
@@ -93997,13 +93997,13 @@ class WriteTestClusterNullableBitmap64 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableBitmap64() {}
+    ~WriteUnitTestingNullableBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004004) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94016,7 +94016,7 @@ class WriteTestClusterNullableBitmap64 : public WriteAttribute {
                                                   params:params
                                               completion:^(NSError * _Nullable error) {
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster NullableBitmap64 write Error", error);
+                                                      LogNSError("UnitTesting NullableBitmap64 write Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -94027,20 +94027,20 @@ class WriteTestClusterNullableBitmap64 : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableBitmap64 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableBitmap64 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableBitmap64()
+    SubscribeAttributeUnitTestingNullableBitmap64()
         : SubscribeAttribute("nullable-bitmap64")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableBitmap64() {}
+    ~SubscribeAttributeUnitTestingNullableBitmap64() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004004) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94058,7 +94058,7 @@ class SubscribeAttributeTestClusterNullableBitmap64 : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableBitmap64 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableBitmap64 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94069,27 +94069,27 @@ class SubscribeAttributeTestClusterNullableBitmap64 : public SubscribeAttribute
 /*
  * Attribute NullableInt8u
  */
-class ReadTestClusterNullableInt8u : public ReadAttribute {
+class ReadUnitTestingNullableInt8u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt8u()
+    ReadUnitTestingNullableInt8u()
         : ReadAttribute("nullable-int8u")
     {
     }
 
-    ~ReadTestClusterNullableInt8u() {}
+    ~ReadUnitTestingNullableInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004005) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt8u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt8u read Error", error);
+                LogNSError("UnitTesting NullableInt8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94097,9 +94097,9 @@ class ReadTestClusterNullableInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt8u : public WriteAttribute {
+class WriteUnitTestingNullableInt8u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt8u()
+    WriteUnitTestingNullableInt8u()
         : WriteAttribute("nullable-int8u")
     {
         AddArgument("attr-name", "nullable-int8u");
@@ -94107,13 +94107,13 @@ class WriteTestClusterNullableInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt8u() {}
+    ~WriteUnitTestingNullableInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94126,7 +94126,7 @@ class WriteTestClusterNullableInt8u : public WriteAttribute {
                                                params:params
                                            completion:^(NSError * _Nullable error) {
                                                if (error != nil) {
-                                                   LogNSError("TestCluster NullableInt8u write Error", error);
+                                                   LogNSError("UnitTesting NullableInt8u write Error", error);
                                                }
                                                SetCommandExitStatus(error);
                                            }];
@@ -94137,20 +94137,20 @@ class WriteTestClusterNullableInt8u : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt8u()
+    SubscribeAttributeUnitTestingNullableInt8u()
         : SubscribeAttribute("nullable-int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt8u() {}
+    ~SubscribeAttributeUnitTestingNullableInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94168,7 +94168,7 @@ class SubscribeAttributeTestClusterNullableInt8u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt8u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94179,27 +94179,27 @@ class SubscribeAttributeTestClusterNullableInt8u : public SubscribeAttribute {
 /*
  * Attribute NullableInt16u
  */
-class ReadTestClusterNullableInt16u : public ReadAttribute {
+class ReadUnitTestingNullableInt16u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt16u()
+    ReadUnitTestingNullableInt16u()
         : ReadAttribute("nullable-int16u")
     {
     }
 
-    ~ReadTestClusterNullableInt16u() {}
+    ~ReadUnitTestingNullableInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004006) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt16u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt16u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt16u read Error", error);
+                LogNSError("UnitTesting NullableInt16u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94207,9 +94207,9 @@ class ReadTestClusterNullableInt16u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt16u : public WriteAttribute {
+class WriteUnitTestingNullableInt16u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt16u()
+    WriteUnitTestingNullableInt16u()
         : WriteAttribute("nullable-int16u")
     {
         AddArgument("attr-name", "nullable-int16u");
@@ -94217,13 +94217,13 @@ class WriteTestClusterNullableInt16u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt16u() {}
+    ~WriteUnitTestingNullableInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94236,7 +94236,7 @@ class WriteTestClusterNullableInt16u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt16u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt16u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94247,20 +94247,20 @@ class WriteTestClusterNullableInt16u : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt16u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt16u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt16u()
+    SubscribeAttributeUnitTestingNullableInt16u()
         : SubscribeAttribute("nullable-int16u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt16u() {}
+    ~SubscribeAttributeUnitTestingNullableInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94278,7 +94278,7 @@ class SubscribeAttributeTestClusterNullableInt16u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt16u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt16u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94289,27 +94289,27 @@ class SubscribeAttributeTestClusterNullableInt16u : public SubscribeAttribute {
 /*
  * Attribute NullableInt24u
  */
-class ReadTestClusterNullableInt24u : public ReadAttribute {
+class ReadUnitTestingNullableInt24u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt24u()
+    ReadUnitTestingNullableInt24u()
         : ReadAttribute("nullable-int24u")
     {
     }
 
-    ~ReadTestClusterNullableInt24u() {}
+    ~ReadUnitTestingNullableInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004007) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt24uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt24u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt24u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt24u read Error", error);
+                LogNSError("UnitTesting NullableInt24u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94317,9 +94317,9 @@ class ReadTestClusterNullableInt24u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt24u : public WriteAttribute {
+class WriteUnitTestingNullableInt24u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt24u()
+    WriteUnitTestingNullableInt24u()
         : WriteAttribute("nullable-int24u")
     {
         AddArgument("attr-name", "nullable-int24u");
@@ -94327,13 +94327,13 @@ class WriteTestClusterNullableInt24u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt24u() {}
+    ~WriteUnitTestingNullableInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004007) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94346,7 +94346,7 @@ class WriteTestClusterNullableInt24u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt24u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt24u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94357,20 +94357,20 @@ class WriteTestClusterNullableInt24u : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt24u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt24u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt24u()
+    SubscribeAttributeUnitTestingNullableInt24u()
         : SubscribeAttribute("nullable-int24u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt24u() {}
+    ~SubscribeAttributeUnitTestingNullableInt24u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004007) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94388,7 +94388,7 @@ class SubscribeAttributeTestClusterNullableInt24u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt24u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt24u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94399,27 +94399,27 @@ class SubscribeAttributeTestClusterNullableInt24u : public SubscribeAttribute {
 /*
  * Attribute NullableInt32u
  */
-class ReadTestClusterNullableInt32u : public ReadAttribute {
+class ReadUnitTestingNullableInt32u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt32u()
+    ReadUnitTestingNullableInt32u()
         : ReadAttribute("nullable-int32u")
     {
     }
 
-    ~ReadTestClusterNullableInt32u() {}
+    ~ReadUnitTestingNullableInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004008) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt32uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt32u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt32u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt32u read Error", error);
+                LogNSError("UnitTesting NullableInt32u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94427,9 +94427,9 @@ class ReadTestClusterNullableInt32u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt32u : public WriteAttribute {
+class WriteUnitTestingNullableInt32u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt32u()
+    WriteUnitTestingNullableInt32u()
         : WriteAttribute("nullable-int32u")
     {
         AddArgument("attr-name", "nullable-int32u");
@@ -94437,13 +94437,13 @@ class WriteTestClusterNullableInt32u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt32u() {}
+    ~WriteUnitTestingNullableInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004008) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94456,7 +94456,7 @@ class WriteTestClusterNullableInt32u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt32u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt32u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94467,20 +94467,20 @@ class WriteTestClusterNullableInt32u : public WriteAttribute {
     uint32_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt32u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt32u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt32u()
+    SubscribeAttributeUnitTestingNullableInt32u()
         : SubscribeAttribute("nullable-int32u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt32u() {}
+    ~SubscribeAttributeUnitTestingNullableInt32u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004008) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94498,7 +94498,7 @@ class SubscribeAttributeTestClusterNullableInt32u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt32u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt32u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94509,27 +94509,27 @@ class SubscribeAttributeTestClusterNullableInt32u : public SubscribeAttribute {
 /*
  * Attribute NullableInt40u
  */
-class ReadTestClusterNullableInt40u : public ReadAttribute {
+class ReadUnitTestingNullableInt40u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt40u()
+    ReadUnitTestingNullableInt40u()
         : ReadAttribute("nullable-int40u")
     {
     }
 
-    ~ReadTestClusterNullableInt40u() {}
+    ~ReadUnitTestingNullableInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004009) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt40uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt40u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt40u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt40u read Error", error);
+                LogNSError("UnitTesting NullableInt40u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94537,9 +94537,9 @@ class ReadTestClusterNullableInt40u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt40u : public WriteAttribute {
+class WriteUnitTestingNullableInt40u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt40u()
+    WriteUnitTestingNullableInt40u()
         : WriteAttribute("nullable-int40u")
     {
         AddArgument("attr-name", "nullable-int40u");
@@ -94547,13 +94547,13 @@ class WriteTestClusterNullableInt40u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt40u() {}
+    ~WriteUnitTestingNullableInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004009) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94566,7 +94566,7 @@ class WriteTestClusterNullableInt40u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt40u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt40u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94577,20 +94577,20 @@ class WriteTestClusterNullableInt40u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt40u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt40u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt40u()
+    SubscribeAttributeUnitTestingNullableInt40u()
         : SubscribeAttribute("nullable-int40u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt40u() {}
+    ~SubscribeAttributeUnitTestingNullableInt40u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004009) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94608,7 +94608,7 @@ class SubscribeAttributeTestClusterNullableInt40u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt40u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt40u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94619,27 +94619,27 @@ class SubscribeAttributeTestClusterNullableInt40u : public SubscribeAttribute {
 /*
  * Attribute NullableInt48u
  */
-class ReadTestClusterNullableInt48u : public ReadAttribute {
+class ReadUnitTestingNullableInt48u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt48u()
+    ReadUnitTestingNullableInt48u()
         : ReadAttribute("nullable-int48u")
     {
     }
 
-    ~ReadTestClusterNullableInt48u() {}
+    ~ReadUnitTestingNullableInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt48uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt48u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt48u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt48u read Error", error);
+                LogNSError("UnitTesting NullableInt48u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94647,9 +94647,9 @@ class ReadTestClusterNullableInt48u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt48u : public WriteAttribute {
+class WriteUnitTestingNullableInt48u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt48u()
+    WriteUnitTestingNullableInt48u()
         : WriteAttribute("nullable-int48u")
     {
         AddArgument("attr-name", "nullable-int48u");
@@ -94657,13 +94657,13 @@ class WriteTestClusterNullableInt48u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt48u() {}
+    ~WriteUnitTestingNullableInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94676,7 +94676,7 @@ class WriteTestClusterNullableInt48u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt48u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt48u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94687,20 +94687,20 @@ class WriteTestClusterNullableInt48u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt48u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt48u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt48u()
+    SubscribeAttributeUnitTestingNullableInt48u()
         : SubscribeAttribute("nullable-int48u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt48u() {}
+    ~SubscribeAttributeUnitTestingNullableInt48u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94718,7 +94718,7 @@ class SubscribeAttributeTestClusterNullableInt48u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt48u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt48u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94729,27 +94729,27 @@ class SubscribeAttributeTestClusterNullableInt48u : public SubscribeAttribute {
 /*
  * Attribute NullableInt56u
  */
-class ReadTestClusterNullableInt56u : public ReadAttribute {
+class ReadUnitTestingNullableInt56u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt56u()
+    ReadUnitTestingNullableInt56u()
         : ReadAttribute("nullable-int56u")
     {
     }
 
-    ~ReadTestClusterNullableInt56u() {}
+    ~ReadUnitTestingNullableInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt56uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt56u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt56u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt56u read Error", error);
+                LogNSError("UnitTesting NullableInt56u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94757,9 +94757,9 @@ class ReadTestClusterNullableInt56u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt56u : public WriteAttribute {
+class WriteUnitTestingNullableInt56u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt56u()
+    WriteUnitTestingNullableInt56u()
         : WriteAttribute("nullable-int56u")
     {
         AddArgument("attr-name", "nullable-int56u");
@@ -94767,13 +94767,13 @@ class WriteTestClusterNullableInt56u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt56u() {}
+    ~WriteUnitTestingNullableInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94786,7 +94786,7 @@ class WriteTestClusterNullableInt56u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt56u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt56u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94797,20 +94797,20 @@ class WriteTestClusterNullableInt56u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt56u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt56u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt56u()
+    SubscribeAttributeUnitTestingNullableInt56u()
         : SubscribeAttribute("nullable-int56u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt56u() {}
+    ~SubscribeAttributeUnitTestingNullableInt56u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94828,7 +94828,7 @@ class SubscribeAttributeTestClusterNullableInt56u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt56u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt56u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94839,27 +94839,27 @@ class SubscribeAttributeTestClusterNullableInt56u : public SubscribeAttribute {
 /*
  * Attribute NullableInt64u
  */
-class ReadTestClusterNullableInt64u : public ReadAttribute {
+class ReadUnitTestingNullableInt64u : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt64u()
+    ReadUnitTestingNullableInt64u()
         : ReadAttribute("nullable-int64u")
     {
     }
 
-    ~ReadTestClusterNullableInt64u() {}
+    ~ReadUnitTestingNullableInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400C) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt64uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt64u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt64u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt64u read Error", error);
+                LogNSError("UnitTesting NullableInt64u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94867,9 +94867,9 @@ class ReadTestClusterNullableInt64u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt64u : public WriteAttribute {
+class WriteUnitTestingNullableInt64u : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt64u()
+    WriteUnitTestingNullableInt64u()
         : WriteAttribute("nullable-int64u")
     {
         AddArgument("attr-name", "nullable-int64u");
@@ -94877,13 +94877,13 @@ class WriteTestClusterNullableInt64u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt64u() {}
+    ~WriteUnitTestingNullableInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -94896,7 +94896,7 @@ class WriteTestClusterNullableInt64u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt64u write Error", error);
+                                                    LogNSError("UnitTesting NullableInt64u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -94907,20 +94907,20 @@ class WriteTestClusterNullableInt64u : public WriteAttribute {
     uint64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt64u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt64u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt64u()
+    SubscribeAttributeUnitTestingNullableInt64u()
         : SubscribeAttribute("nullable-int64u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt64u() {}
+    ~SubscribeAttributeUnitTestingNullableInt64u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -94938,7 +94938,7 @@ class SubscribeAttributeTestClusterNullableInt64u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt64u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt64u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -94949,27 +94949,27 @@ class SubscribeAttributeTestClusterNullableInt64u : public SubscribeAttribute {
 /*
  * Attribute NullableInt8s
  */
-class ReadTestClusterNullableInt8s : public ReadAttribute {
+class ReadUnitTestingNullableInt8s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt8s()
+    ReadUnitTestingNullableInt8s()
         : ReadAttribute("nullable-int8s")
     {
     }
 
-    ~ReadTestClusterNullableInt8s() {}
+    ~ReadUnitTestingNullableInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400D) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt8s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt8s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt8s read Error", error);
+                LogNSError("UnitTesting NullableInt8s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -94977,9 +94977,9 @@ class ReadTestClusterNullableInt8s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt8s : public WriteAttribute {
+class WriteUnitTestingNullableInt8s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt8s()
+    WriteUnitTestingNullableInt8s()
         : WriteAttribute("nullable-int8s")
     {
         AddArgument("attr-name", "nullable-int8s");
@@ -94987,13 +94987,13 @@ class WriteTestClusterNullableInt8s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt8s() {}
+    ~WriteUnitTestingNullableInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95006,7 +95006,7 @@ class WriteTestClusterNullableInt8s : public WriteAttribute {
                                                params:params
                                            completion:^(NSError * _Nullable error) {
                                                if (error != nil) {
-                                                   LogNSError("TestCluster NullableInt8s write Error", error);
+                                                   LogNSError("UnitTesting NullableInt8s write Error", error);
                                                }
                                                SetCommandExitStatus(error);
                                            }];
@@ -95017,20 +95017,20 @@ class WriteTestClusterNullableInt8s : public WriteAttribute {
     int8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt8s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt8s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt8s()
+    SubscribeAttributeUnitTestingNullableInt8s()
         : SubscribeAttribute("nullable-int8s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt8s() {}
+    ~SubscribeAttributeUnitTestingNullableInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95048,7 +95048,7 @@ class SubscribeAttributeTestClusterNullableInt8s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt8s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt8s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95059,27 +95059,27 @@ class SubscribeAttributeTestClusterNullableInt8s : public SubscribeAttribute {
 /*
  * Attribute NullableInt16s
  */
-class ReadTestClusterNullableInt16s : public ReadAttribute {
+class ReadUnitTestingNullableInt16s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt16s()
+    ReadUnitTestingNullableInt16s()
         : ReadAttribute("nullable-int16s")
     {
     }
 
-    ~ReadTestClusterNullableInt16s() {}
+    ~ReadUnitTestingNullableInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt16s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt16s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt16s read Error", error);
+                LogNSError("UnitTesting NullableInt16s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95087,9 +95087,9 @@ class ReadTestClusterNullableInt16s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt16s : public WriteAttribute {
+class WriteUnitTestingNullableInt16s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt16s()
+    WriteUnitTestingNullableInt16s()
         : WriteAttribute("nullable-int16s")
     {
         AddArgument("attr-name", "nullable-int16s");
@@ -95097,13 +95097,13 @@ class WriteTestClusterNullableInt16s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt16s() {}
+    ~WriteUnitTestingNullableInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95116,7 +95116,7 @@ class WriteTestClusterNullableInt16s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt16s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt16s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95127,20 +95127,20 @@ class WriteTestClusterNullableInt16s : public WriteAttribute {
     int16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt16s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt16s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt16s()
+    SubscribeAttributeUnitTestingNullableInt16s()
         : SubscribeAttribute("nullable-int16s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt16s() {}
+    ~SubscribeAttributeUnitTestingNullableInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95158,7 +95158,7 @@ class SubscribeAttributeTestClusterNullableInt16s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt16s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt16s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95169,27 +95169,27 @@ class SubscribeAttributeTestClusterNullableInt16s : public SubscribeAttribute {
 /*
  * Attribute NullableInt24s
  */
-class ReadTestClusterNullableInt24s : public ReadAttribute {
+class ReadUnitTestingNullableInt24s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt24s()
+    ReadUnitTestingNullableInt24s()
         : ReadAttribute("nullable-int24s")
     {
     }
 
-    ~ReadTestClusterNullableInt24s() {}
+    ~ReadUnitTestingNullableInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000400F) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt24sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt24s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt24s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt24s read Error", error);
+                LogNSError("UnitTesting NullableInt24s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95197,9 +95197,9 @@ class ReadTestClusterNullableInt24s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt24s : public WriteAttribute {
+class WriteUnitTestingNullableInt24s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt24s()
+    WriteUnitTestingNullableInt24s()
         : WriteAttribute("nullable-int24s")
     {
         AddArgument("attr-name", "nullable-int24s");
@@ -95207,13 +95207,13 @@ class WriteTestClusterNullableInt24s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt24s() {}
+    ~WriteUnitTestingNullableInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000400F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95226,7 +95226,7 @@ class WriteTestClusterNullableInt24s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt24s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt24s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95237,20 +95237,20 @@ class WriteTestClusterNullableInt24s : public WriteAttribute {
     int32_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt24s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt24s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt24s()
+    SubscribeAttributeUnitTestingNullableInt24s()
         : SubscribeAttribute("nullable-int24s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt24s() {}
+    ~SubscribeAttributeUnitTestingNullableInt24s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000400F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95268,7 +95268,7 @@ class SubscribeAttributeTestClusterNullableInt24s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt24s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt24s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95279,27 +95279,27 @@ class SubscribeAttributeTestClusterNullableInt24s : public SubscribeAttribute {
 /*
  * Attribute NullableInt32s
  */
-class ReadTestClusterNullableInt32s : public ReadAttribute {
+class ReadUnitTestingNullableInt32s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt32s()
+    ReadUnitTestingNullableInt32s()
         : ReadAttribute("nullable-int32s")
     {
     }
 
-    ~ReadTestClusterNullableInt32s() {}
+    ~ReadUnitTestingNullableInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004010) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt32sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt32s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt32s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt32s read Error", error);
+                LogNSError("UnitTesting NullableInt32s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95307,9 +95307,9 @@ class ReadTestClusterNullableInt32s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt32s : public WriteAttribute {
+class WriteUnitTestingNullableInt32s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt32s()
+    WriteUnitTestingNullableInt32s()
         : WriteAttribute("nullable-int32s")
     {
         AddArgument("attr-name", "nullable-int32s");
@@ -95317,13 +95317,13 @@ class WriteTestClusterNullableInt32s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt32s() {}
+    ~WriteUnitTestingNullableInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95336,7 +95336,7 @@ class WriteTestClusterNullableInt32s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt32s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt32s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95347,20 +95347,20 @@ class WriteTestClusterNullableInt32s : public WriteAttribute {
     int32_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt32s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt32s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt32s()
+    SubscribeAttributeUnitTestingNullableInt32s()
         : SubscribeAttribute("nullable-int32s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt32s() {}
+    ~SubscribeAttributeUnitTestingNullableInt32s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95378,7 +95378,7 @@ class SubscribeAttributeTestClusterNullableInt32s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt32s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt32s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95389,27 +95389,27 @@ class SubscribeAttributeTestClusterNullableInt32s : public SubscribeAttribute {
 /*
  * Attribute NullableInt40s
  */
-class ReadTestClusterNullableInt40s : public ReadAttribute {
+class ReadUnitTestingNullableInt40s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt40s()
+    ReadUnitTestingNullableInt40s()
         : ReadAttribute("nullable-int40s")
     {
     }
 
-    ~ReadTestClusterNullableInt40s() {}
+    ~ReadUnitTestingNullableInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004011) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt40sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt40s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt40s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt40s read Error", error);
+                LogNSError("UnitTesting NullableInt40s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95417,9 +95417,9 @@ class ReadTestClusterNullableInt40s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt40s : public WriteAttribute {
+class WriteUnitTestingNullableInt40s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt40s()
+    WriteUnitTestingNullableInt40s()
         : WriteAttribute("nullable-int40s")
     {
         AddArgument("attr-name", "nullable-int40s");
@@ -95427,13 +95427,13 @@ class WriteTestClusterNullableInt40s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt40s() {}
+    ~WriteUnitTestingNullableInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004011) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95446,7 +95446,7 @@ class WriteTestClusterNullableInt40s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt40s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt40s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95457,20 +95457,20 @@ class WriteTestClusterNullableInt40s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt40s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt40s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt40s()
+    SubscribeAttributeUnitTestingNullableInt40s()
         : SubscribeAttribute("nullable-int40s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt40s() {}
+    ~SubscribeAttributeUnitTestingNullableInt40s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004011) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95488,7 +95488,7 @@ class SubscribeAttributeTestClusterNullableInt40s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt40s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt40s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95499,27 +95499,27 @@ class SubscribeAttributeTestClusterNullableInt40s : public SubscribeAttribute {
 /*
  * Attribute NullableInt48s
  */
-class ReadTestClusterNullableInt48s : public ReadAttribute {
+class ReadUnitTestingNullableInt48s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt48s()
+    ReadUnitTestingNullableInt48s()
         : ReadAttribute("nullable-int48s")
     {
     }
 
-    ~ReadTestClusterNullableInt48s() {}
+    ~ReadUnitTestingNullableInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004012) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt48sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt48s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt48s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt48s read Error", error);
+                LogNSError("UnitTesting NullableInt48s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95527,9 +95527,9 @@ class ReadTestClusterNullableInt48s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt48s : public WriteAttribute {
+class WriteUnitTestingNullableInt48s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt48s()
+    WriteUnitTestingNullableInt48s()
         : WriteAttribute("nullable-int48s")
     {
         AddArgument("attr-name", "nullable-int48s");
@@ -95537,13 +95537,13 @@ class WriteTestClusterNullableInt48s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt48s() {}
+    ~WriteUnitTestingNullableInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004012) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95556,7 +95556,7 @@ class WriteTestClusterNullableInt48s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt48s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt48s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95567,20 +95567,20 @@ class WriteTestClusterNullableInt48s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt48s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt48s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt48s()
+    SubscribeAttributeUnitTestingNullableInt48s()
         : SubscribeAttribute("nullable-int48s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt48s() {}
+    ~SubscribeAttributeUnitTestingNullableInt48s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004012) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95598,7 +95598,7 @@ class SubscribeAttributeTestClusterNullableInt48s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt48s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt48s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95609,27 +95609,27 @@ class SubscribeAttributeTestClusterNullableInt48s : public SubscribeAttribute {
 /*
  * Attribute NullableInt56s
  */
-class ReadTestClusterNullableInt56s : public ReadAttribute {
+class ReadUnitTestingNullableInt56s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt56s()
+    ReadUnitTestingNullableInt56s()
         : ReadAttribute("nullable-int56s")
     {
     }
 
-    ~ReadTestClusterNullableInt56s() {}
+    ~ReadUnitTestingNullableInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004013) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt56sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt56s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt56s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt56s read Error", error);
+                LogNSError("UnitTesting NullableInt56s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95637,9 +95637,9 @@ class ReadTestClusterNullableInt56s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt56s : public WriteAttribute {
+class WriteUnitTestingNullableInt56s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt56s()
+    WriteUnitTestingNullableInt56s()
         : WriteAttribute("nullable-int56s")
     {
         AddArgument("attr-name", "nullable-int56s");
@@ -95647,13 +95647,13 @@ class WriteTestClusterNullableInt56s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt56s() {}
+    ~WriteUnitTestingNullableInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004013) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95666,7 +95666,7 @@ class WriteTestClusterNullableInt56s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt56s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt56s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95677,20 +95677,20 @@ class WriteTestClusterNullableInt56s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt56s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt56s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt56s()
+    SubscribeAttributeUnitTestingNullableInt56s()
         : SubscribeAttribute("nullable-int56s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt56s() {}
+    ~SubscribeAttributeUnitTestingNullableInt56s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004013) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95708,7 +95708,7 @@ class SubscribeAttributeTestClusterNullableInt56s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt56s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt56s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95719,27 +95719,27 @@ class SubscribeAttributeTestClusterNullableInt56s : public SubscribeAttribute {
 /*
  * Attribute NullableInt64s
  */
-class ReadTestClusterNullableInt64s : public ReadAttribute {
+class ReadUnitTestingNullableInt64s : public ReadAttribute {
 public:
-    ReadTestClusterNullableInt64s()
+    ReadUnitTestingNullableInt64s()
         : ReadAttribute("nullable-int64s")
     {
     }
 
-    ~ReadTestClusterNullableInt64s() {}
+    ~ReadUnitTestingNullableInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004014) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableInt64sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableInt64s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableInt64s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableInt64s read Error", error);
+                LogNSError("UnitTesting NullableInt64s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95747,9 +95747,9 @@ class ReadTestClusterNullableInt64s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableInt64s : public WriteAttribute {
+class WriteUnitTestingNullableInt64s : public WriteAttribute {
 public:
-    WriteTestClusterNullableInt64s()
+    WriteUnitTestingNullableInt64s()
         : WriteAttribute("nullable-int64s")
     {
         AddArgument("attr-name", "nullable-int64s");
@@ -95757,13 +95757,13 @@ class WriteTestClusterNullableInt64s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableInt64s() {}
+    ~WriteUnitTestingNullableInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004014) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95776,7 +95776,7 @@ class WriteTestClusterNullableInt64s : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableInt64s write Error", error);
+                                                    LogNSError("UnitTesting NullableInt64s write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -95787,20 +95787,20 @@ class WriteTestClusterNullableInt64s : public WriteAttribute {
     int64_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableInt64s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableInt64s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableInt64s()
+    SubscribeAttributeUnitTestingNullableInt64s()
         : SubscribeAttribute("nullable-int64s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableInt64s() {}
+    ~SubscribeAttributeUnitTestingNullableInt64s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004014) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95818,7 +95818,7 @@ class SubscribeAttributeTestClusterNullableInt64s : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableInt64s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableInt64s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95829,27 +95829,27 @@ class SubscribeAttributeTestClusterNullableInt64s : public SubscribeAttribute {
 /*
  * Attribute NullableEnum8
  */
-class ReadTestClusterNullableEnum8 : public ReadAttribute {
+class ReadUnitTestingNullableEnum8 : public ReadAttribute {
 public:
-    ReadTestClusterNullableEnum8()
+    ReadUnitTestingNullableEnum8()
         : ReadAttribute("nullable-enum8")
     {
     }
 
-    ~ReadTestClusterNullableEnum8() {}
+    ~ReadUnitTestingNullableEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004015) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableEnum8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableEnum8 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableEnum8 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableEnum8 read Error", error);
+                LogNSError("UnitTesting NullableEnum8 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95857,9 +95857,9 @@ class ReadTestClusterNullableEnum8 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableEnum8 : public WriteAttribute {
+class WriteUnitTestingNullableEnum8 : public WriteAttribute {
 public:
-    WriteTestClusterNullableEnum8()
+    WriteUnitTestingNullableEnum8()
         : WriteAttribute("nullable-enum8")
     {
         AddArgument("attr-name", "nullable-enum8");
@@ -95867,13 +95867,13 @@ class WriteTestClusterNullableEnum8 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableEnum8() {}
+    ~WriteUnitTestingNullableEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004015) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95886,7 +95886,7 @@ class WriteTestClusterNullableEnum8 : public WriteAttribute {
                                                params:params
                                            completion:^(NSError * _Nullable error) {
                                                if (error != nil) {
-                                                   LogNSError("TestCluster NullableEnum8 write Error", error);
+                                                   LogNSError("UnitTesting NullableEnum8 write Error", error);
                                                }
                                                SetCommandExitStatus(error);
                                            }];
@@ -95897,20 +95897,20 @@ class WriteTestClusterNullableEnum8 : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableEnum8 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableEnum8 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableEnum8()
+    SubscribeAttributeUnitTestingNullableEnum8()
         : SubscribeAttribute("nullable-enum8")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableEnum8() {}
+    ~SubscribeAttributeUnitTestingNullableEnum8() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004015) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -95928,7 +95928,7 @@ class SubscribeAttributeTestClusterNullableEnum8 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableEnum8 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableEnum8 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -95939,27 +95939,27 @@ class SubscribeAttributeTestClusterNullableEnum8 : public SubscribeAttribute {
 /*
  * Attribute NullableEnum16
  */
-class ReadTestClusterNullableEnum16 : public ReadAttribute {
+class ReadUnitTestingNullableEnum16 : public ReadAttribute {
 public:
-    ReadTestClusterNullableEnum16()
+    ReadUnitTestingNullableEnum16()
         : ReadAttribute("nullable-enum16")
     {
     }
 
-    ~ReadTestClusterNullableEnum16() {}
+    ~ReadUnitTestingNullableEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004016) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableEnum16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableEnum16 response %@", [value description]);
+            NSLog(@"UnitTesting.NullableEnum16 response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableEnum16 read Error", error);
+                LogNSError("UnitTesting NullableEnum16 read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -95967,9 +95967,9 @@ class ReadTestClusterNullableEnum16 : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableEnum16 : public WriteAttribute {
+class WriteUnitTestingNullableEnum16 : public WriteAttribute {
 public:
-    WriteTestClusterNullableEnum16()
+    WriteUnitTestingNullableEnum16()
         : WriteAttribute("nullable-enum16")
     {
         AddArgument("attr-name", "nullable-enum16");
@@ -95977,13 +95977,13 @@ class WriteTestClusterNullableEnum16 : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableEnum16() {}
+    ~WriteUnitTestingNullableEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004016) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -95996,7 +95996,7 @@ class WriteTestClusterNullableEnum16 : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableEnum16 write Error", error);
+                                                    LogNSError("UnitTesting NullableEnum16 write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -96007,20 +96007,20 @@ class WriteTestClusterNullableEnum16 : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableEnum16 : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableEnum16 : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableEnum16()
+    SubscribeAttributeUnitTestingNullableEnum16()
         : SubscribeAttribute("nullable-enum16")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableEnum16() {}
+    ~SubscribeAttributeUnitTestingNullableEnum16() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004016) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96038,7 +96038,7 @@ class SubscribeAttributeTestClusterNullableEnum16 : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableEnum16 response %@", [value description]);
+                NSLog(@"UnitTesting.NullableEnum16 response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96049,27 +96049,27 @@ class SubscribeAttributeTestClusterNullableEnum16 : public SubscribeAttribute {
 /*
  * Attribute NullableFloatSingle
  */
-class ReadTestClusterNullableFloatSingle : public ReadAttribute {
+class ReadUnitTestingNullableFloatSingle : public ReadAttribute {
 public:
-    ReadTestClusterNullableFloatSingle()
+    ReadUnitTestingNullableFloatSingle()
         : ReadAttribute("nullable-float-single")
     {
     }
 
-    ~ReadTestClusterNullableFloatSingle() {}
+    ~ReadUnitTestingNullableFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004017) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableFloatSingleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableFloatSingle response %@", [value description]);
+            NSLog(@"UnitTesting.NullableFloatSingle response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableFloatSingle read Error", error);
+                LogNSError("UnitTesting NullableFloatSingle read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96077,9 +96077,9 @@ class ReadTestClusterNullableFloatSingle : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableFloatSingle : public WriteAttribute {
+class WriteUnitTestingNullableFloatSingle : public WriteAttribute {
 public:
-    WriteTestClusterNullableFloatSingle()
+    WriteUnitTestingNullableFloatSingle()
         : WriteAttribute("nullable-float-single")
     {
         AddArgument("attr-name", "nullable-float-single");
@@ -96087,13 +96087,13 @@ class WriteTestClusterNullableFloatSingle : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableFloatSingle() {}
+    ~WriteUnitTestingNullableFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004017) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96106,7 +96106,7 @@ class WriteTestClusterNullableFloatSingle : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster NullableFloatSingle write Error", error);
+                                                         LogNSError("UnitTesting NullableFloatSingle write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -96117,20 +96117,20 @@ class WriteTestClusterNullableFloatSingle : public WriteAttribute {
     float mValue;
 };
 
-class SubscribeAttributeTestClusterNullableFloatSingle : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableFloatSingle : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableFloatSingle()
+    SubscribeAttributeUnitTestingNullableFloatSingle()
         : SubscribeAttribute("nullable-float-single")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableFloatSingle() {}
+    ~SubscribeAttributeUnitTestingNullableFloatSingle() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004017) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96148,7 +96148,7 @@ class SubscribeAttributeTestClusterNullableFloatSingle : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableFloatSingle response %@", [value description]);
+                NSLog(@"UnitTesting.NullableFloatSingle response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96159,27 +96159,27 @@ class SubscribeAttributeTestClusterNullableFloatSingle : public SubscribeAttribu
 /*
  * Attribute NullableFloatDouble
  */
-class ReadTestClusterNullableFloatDouble : public ReadAttribute {
+class ReadUnitTestingNullableFloatDouble : public ReadAttribute {
 public:
-    ReadTestClusterNullableFloatDouble()
+    ReadUnitTestingNullableFloatDouble()
         : ReadAttribute("nullable-float-double")
     {
     }
 
-    ~ReadTestClusterNullableFloatDouble() {}
+    ~ReadUnitTestingNullableFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004018) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableFloatDoubleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableFloatDouble response %@", [value description]);
+            NSLog(@"UnitTesting.NullableFloatDouble response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableFloatDouble read Error", error);
+                LogNSError("UnitTesting NullableFloatDouble read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96187,9 +96187,9 @@ class ReadTestClusterNullableFloatDouble : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableFloatDouble : public WriteAttribute {
+class WriteUnitTestingNullableFloatDouble : public WriteAttribute {
 public:
-    WriteTestClusterNullableFloatDouble()
+    WriteUnitTestingNullableFloatDouble()
         : WriteAttribute("nullable-float-double")
     {
         AddArgument("attr-name", "nullable-float-double");
@@ -96197,13 +96197,13 @@ class WriteTestClusterNullableFloatDouble : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableFloatDouble() {}
+    ~WriteUnitTestingNullableFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004018) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96216,7 +96216,7 @@ class WriteTestClusterNullableFloatDouble : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster NullableFloatDouble write Error", error);
+                                                         LogNSError("UnitTesting NullableFloatDouble write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -96227,20 +96227,20 @@ class WriteTestClusterNullableFloatDouble : public WriteAttribute {
     double mValue;
 };
 
-class SubscribeAttributeTestClusterNullableFloatDouble : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableFloatDouble : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableFloatDouble()
+    SubscribeAttributeUnitTestingNullableFloatDouble()
         : SubscribeAttribute("nullable-float-double")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableFloatDouble() {}
+    ~SubscribeAttributeUnitTestingNullableFloatDouble() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004018) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96258,7 +96258,7 @@ class SubscribeAttributeTestClusterNullableFloatDouble : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableFloatDouble response %@", [value description]);
+                NSLog(@"UnitTesting.NullableFloatDouble response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96269,27 +96269,27 @@ class SubscribeAttributeTestClusterNullableFloatDouble : public SubscribeAttribu
 /*
  * Attribute NullableOctetString
  */
-class ReadTestClusterNullableOctetString : public ReadAttribute {
+class ReadUnitTestingNullableOctetString : public ReadAttribute {
 public:
-    ReadTestClusterNullableOctetString()
+    ReadUnitTestingNullableOctetString()
         : ReadAttribute("nullable-octet-string")
     {
     }
 
-    ~ReadTestClusterNullableOctetString() {}
+    ~ReadUnitTestingNullableOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004019) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableOctetString response %@", [value description]);
+            NSLog(@"UnitTesting.NullableOctetString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableOctetString read Error", error);
+                LogNSError("UnitTesting NullableOctetString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96297,9 +96297,9 @@ class ReadTestClusterNullableOctetString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableOctetString : public WriteAttribute {
+class WriteUnitTestingNullableOctetString : public WriteAttribute {
 public:
-    WriteTestClusterNullableOctetString()
+    WriteUnitTestingNullableOctetString()
         : WriteAttribute("nullable-octet-string")
     {
         AddArgument("attr-name", "nullable-octet-string");
@@ -96307,13 +96307,13 @@ class WriteTestClusterNullableOctetString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableOctetString() {}
+    ~WriteUnitTestingNullableOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004019) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96326,7 +96326,7 @@ class WriteTestClusterNullableOctetString : public WriteAttribute {
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("TestCluster NullableOctetString write Error", error);
+                                                         LogNSError("UnitTesting NullableOctetString write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -96337,20 +96337,20 @@ class WriteTestClusterNullableOctetString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterNullableOctetString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableOctetString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableOctetString()
+    SubscribeAttributeUnitTestingNullableOctetString()
         : SubscribeAttribute("nullable-octet-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableOctetString() {}
+    ~SubscribeAttributeUnitTestingNullableOctetString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004019) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96368,7 +96368,7 @@ class SubscribeAttributeTestClusterNullableOctetString : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableOctetString response %@", [value description]);
+                NSLog(@"UnitTesting.NullableOctetString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96379,27 +96379,27 @@ class SubscribeAttributeTestClusterNullableOctetString : public SubscribeAttribu
 /*
  * Attribute NullableCharString
  */
-class ReadTestClusterNullableCharString : public ReadAttribute {
+class ReadUnitTestingNullableCharString : public ReadAttribute {
 public:
-    ReadTestClusterNullableCharString()
+    ReadUnitTestingNullableCharString()
         : ReadAttribute("nullable-char-string")
     {
     }
 
-    ~ReadTestClusterNullableCharString() {}
+    ~ReadUnitTestingNullableCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000401E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableCharString response %@", [value description]);
+            NSLog(@"UnitTesting.NullableCharString response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableCharString read Error", error);
+                LogNSError("UnitTesting NullableCharString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96407,9 +96407,9 @@ class ReadTestClusterNullableCharString : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableCharString : public WriteAttribute {
+class WriteUnitTestingNullableCharString : public WriteAttribute {
 public:
-    WriteTestClusterNullableCharString()
+    WriteUnitTestingNullableCharString()
         : WriteAttribute("nullable-char-string")
     {
         AddArgument("attr-name", "nullable-char-string");
@@ -96417,13 +96417,13 @@ class WriteTestClusterNullableCharString : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableCharString() {}
+    ~WriteUnitTestingNullableCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000401E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96438,7 +96438,7 @@ class WriteTestClusterNullableCharString : public WriteAttribute {
                                                     params:params
                                                 completion:^(NSError * _Nullable error) {
                                                     if (error != nil) {
-                                                        LogNSError("TestCluster NullableCharString write Error", error);
+                                                        LogNSError("UnitTesting NullableCharString write Error", error);
                                                     }
                                                     SetCommandExitStatus(error);
                                                 }];
@@ -96449,20 +96449,20 @@ class WriteTestClusterNullableCharString : public WriteAttribute {
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeTestClusterNullableCharString : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableCharString : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableCharString()
+    SubscribeAttributeUnitTestingNullableCharString()
         : SubscribeAttribute("nullable-char-string")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableCharString() {}
+    ~SubscribeAttributeUnitTestingNullableCharString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000401E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96480,7 +96480,7 @@ class SubscribeAttributeTestClusterNullableCharString : public SubscribeAttribut
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableCharString response %@", [value description]);
+                NSLog(@"UnitTesting.NullableCharString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96491,27 +96491,27 @@ class SubscribeAttributeTestClusterNullableCharString : public SubscribeAttribut
 /*
  * Attribute NullableEnumAttr
  */
-class ReadTestClusterNullableEnumAttr : public ReadAttribute {
+class ReadUnitTestingNullableEnumAttr : public ReadAttribute {
 public:
-    ReadTestClusterNullableEnumAttr()
+    ReadUnitTestingNullableEnumAttr()
         : ReadAttribute("nullable-enum-attr")
     {
     }
 
-    ~ReadTestClusterNullableEnumAttr() {}
+    ~ReadUnitTestingNullableEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004024) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableEnumAttrWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableEnumAttr response %@", [value description]);
+            NSLog(@"UnitTesting.NullableEnumAttr response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableEnumAttr read Error", error);
+                LogNSError("UnitTesting NullableEnumAttr read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96519,9 +96519,9 @@ class ReadTestClusterNullableEnumAttr : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableEnumAttr : public WriteAttribute {
+class WriteUnitTestingNullableEnumAttr : public WriteAttribute {
 public:
-    WriteTestClusterNullableEnumAttr()
+    WriteUnitTestingNullableEnumAttr()
         : WriteAttribute("nullable-enum-attr")
     {
         AddArgument("attr-name", "nullable-enum-attr");
@@ -96529,13 +96529,13 @@ class WriteTestClusterNullableEnumAttr : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableEnumAttr() {}
+    ~WriteUnitTestingNullableEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004024) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96548,7 +96548,7 @@ class WriteTestClusterNullableEnumAttr : public WriteAttribute {
                                                   params:params
                                               completion:^(NSError * _Nullable error) {
                                                   if (error != nil) {
-                                                      LogNSError("TestCluster NullableEnumAttr write Error", error);
+                                                      LogNSError("UnitTesting NullableEnumAttr write Error", error);
                                                   }
                                                   SetCommandExitStatus(error);
                                               }];
@@ -96559,20 +96559,20 @@ class WriteTestClusterNullableEnumAttr : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableEnumAttr : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableEnumAttr : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableEnumAttr()
+    SubscribeAttributeUnitTestingNullableEnumAttr()
         : SubscribeAttribute("nullable-enum-attr")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableEnumAttr() {}
+    ~SubscribeAttributeUnitTestingNullableEnumAttr() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004024) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96590,7 +96590,7 @@ class SubscribeAttributeTestClusterNullableEnumAttr : public SubscribeAttribute
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableEnumAttr response %@", [value description]);
+                NSLog(@"UnitTesting.NullableEnumAttr response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96601,28 +96601,28 @@ class SubscribeAttributeTestClusterNullableEnumAttr : public SubscribeAttribute
 /*
  * Attribute NullableStruct
  */
-class ReadTestClusterNullableStruct : public ReadAttribute {
+class ReadUnitTestingNullableStruct : public ReadAttribute {
 public:
-    ReadTestClusterNullableStruct()
+    ReadUnitTestingNullableStruct()
         : ReadAttribute("nullable-struct")
     {
     }
 
-    ~ReadTestClusterNullableStruct() {}
+    ~ReadUnitTestingNullableStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004025) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableStructWithCompletion:^(
-            MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableStruct response %@", [value description]);
+            MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+            NSLog(@"UnitTesting.NullableStruct response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableStruct read Error", error);
+                LogNSError("UnitTesting NullableStruct read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96630,9 +96630,9 @@ class ReadTestClusterNullableStruct : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableStruct : public WriteAttribute {
+class WriteUnitTestingNullableStruct : public WriteAttribute {
 public:
-    WriteTestClusterNullableStruct()
+    WriteUnitTestingNullableStruct()
         : WriteAttribute("nullable-struct")
         , mComplex(&mValue)
     {
@@ -96641,24 +96641,24 @@ class WriteTestClusterNullableStruct : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableStruct() {}
+    ~WriteUnitTestingNullableStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004025) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
         params.timedWriteTimeout
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         params.dataVersion = mDataVersion.HasValue() ? [NSNumber numberWithUnsignedInt:mDataVersion.Value()] : nil;
-        MTRTestClusterClusterSimpleStruct * _Nullable value;
+        MTRUnitTestingClusterSimpleStruct * _Nullable value;
         if (mValue.IsNull()) {
             value = nil;
         } else {
-            value = [MTRTestClusterClusterSimpleStruct new];
+            value = [MTRUnitTestingClusterSimpleStruct new];
             value.a = [NSNumber numberWithUnsignedChar:mValue.Value().a];
             value.b = [NSNumber numberWithBool:mValue.Value().b];
             value.c = [NSNumber numberWithUnsignedChar:chip::to_underlying(mValue.Value().c)];
@@ -96675,7 +96675,7 @@ class WriteTestClusterNullableStruct : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster NullableStruct write Error", error);
+                                                    LogNSError("UnitTesting NullableStruct write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -96683,24 +96683,24 @@ class WriteTestClusterNullableStruct : public WriteAttribute {
     }
 
 private:
-    chip::app::DataModel::Nullable mValue;
-    TypedComplexArgument> mComplex;
+    chip::app::DataModel::Nullable mValue;
+    TypedComplexArgument> mComplex;
 };
 
-class SubscribeAttributeTestClusterNullableStruct : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableStruct : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableStruct()
+    SubscribeAttributeUnitTestingNullableStruct()
         : SubscribeAttribute("nullable-struct")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableStruct() {}
+    ~SubscribeAttributeUnitTestingNullableStruct() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004025) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96717,8 +96717,8 @@ class SubscribeAttributeTestClusterNullableStruct : public SubscribeAttribute {
             subscriptionEstablished:^() {
                 mSubscriptionEstablished = YES;
             }
-            reportHandler:^(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableStruct response %@", [value description]);
+            reportHandler:^(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                NSLog(@"UnitTesting.NullableStruct response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96729,27 +96729,27 @@ class SubscribeAttributeTestClusterNullableStruct : public SubscribeAttribute {
 /*
  * Attribute NullableRangeRestrictedInt8u
  */
-class ReadTestClusterNullableRangeRestrictedInt8u : public ReadAttribute {
+class ReadUnitTestingNullableRangeRestrictedInt8u : public ReadAttribute {
 public:
-    ReadTestClusterNullableRangeRestrictedInt8u()
+    ReadUnitTestingNullableRangeRestrictedInt8u()
         : ReadAttribute("nullable-range-restricted-int8u")
     {
     }
 
-    ~ReadTestClusterNullableRangeRestrictedInt8u() {}
+    ~ReadUnitTestingNullableRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004026) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableRangeRestrictedInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableRangeRestrictedInt8u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableRangeRestrictedInt8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableRangeRestrictedInt8u read Error", error);
+                LogNSError("UnitTesting NullableRangeRestrictedInt8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96757,9 +96757,9 @@ class ReadTestClusterNullableRangeRestrictedInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableRangeRestrictedInt8u : public WriteAttribute {
+class WriteUnitTestingNullableRangeRestrictedInt8u : public WriteAttribute {
 public:
-    WriteTestClusterNullableRangeRestrictedInt8u()
+    WriteUnitTestingNullableRangeRestrictedInt8u()
         : WriteAttribute("nullable-range-restricted-int8u")
     {
         AddArgument("attr-name", "nullable-range-restricted-int8u");
@@ -96767,13 +96767,13 @@ class WriteTestClusterNullableRangeRestrictedInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableRangeRestrictedInt8u() {}
+    ~WriteUnitTestingNullableRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004026) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96786,7 +96786,7 @@ class WriteTestClusterNullableRangeRestrictedInt8u : public WriteAttribute {
                                                               params:params
                                                           completion:^(NSError * _Nullable error) {
                                                               if (error != nil) {
-                                                                  LogNSError("TestCluster NullableRangeRestrictedInt8u write Error",
+                                                                  LogNSError("UnitTesting NullableRangeRestrictedInt8u write Error",
                                                                       error);
                                                               }
                                                               SetCommandExitStatus(error);
@@ -96798,20 +96798,20 @@ class WriteTestClusterNullableRangeRestrictedInt8u : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableRangeRestrictedInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableRangeRestrictedInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableRangeRestrictedInt8u()
+    SubscribeAttributeUnitTestingNullableRangeRestrictedInt8u()
         : SubscribeAttribute("nullable-range-restricted-int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableRangeRestrictedInt8u() {}
+    ~SubscribeAttributeUnitTestingNullableRangeRestrictedInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004026) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96829,7 +96829,7 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt8u : public Subscri
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableRangeRestrictedInt8u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableRangeRestrictedInt8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96840,27 +96840,27 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt8u : public Subscri
 /*
  * Attribute NullableRangeRestrictedInt8s
  */
-class ReadTestClusterNullableRangeRestrictedInt8s : public ReadAttribute {
+class ReadUnitTestingNullableRangeRestrictedInt8s : public ReadAttribute {
 public:
-    ReadTestClusterNullableRangeRestrictedInt8s()
+    ReadUnitTestingNullableRangeRestrictedInt8s()
         : ReadAttribute("nullable-range-restricted-int8s")
     {
     }
 
-    ~ReadTestClusterNullableRangeRestrictedInt8s() {}
+    ~ReadUnitTestingNullableRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004027) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableRangeRestrictedInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableRangeRestrictedInt8s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableRangeRestrictedInt8s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableRangeRestrictedInt8s read Error", error);
+                LogNSError("UnitTesting NullableRangeRestrictedInt8s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96868,9 +96868,9 @@ class ReadTestClusterNullableRangeRestrictedInt8s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableRangeRestrictedInt8s : public WriteAttribute {
+class WriteUnitTestingNullableRangeRestrictedInt8s : public WriteAttribute {
 public:
-    WriteTestClusterNullableRangeRestrictedInt8s()
+    WriteUnitTestingNullableRangeRestrictedInt8s()
         : WriteAttribute("nullable-range-restricted-int8s")
     {
         AddArgument("attr-name", "nullable-range-restricted-int8s");
@@ -96878,13 +96878,13 @@ class WriteTestClusterNullableRangeRestrictedInt8s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableRangeRestrictedInt8s() {}
+    ~WriteUnitTestingNullableRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004027) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -96897,7 +96897,7 @@ class WriteTestClusterNullableRangeRestrictedInt8s : public WriteAttribute {
                                                               params:params
                                                           completion:^(NSError * _Nullable error) {
                                                               if (error != nil) {
-                                                                  LogNSError("TestCluster NullableRangeRestrictedInt8s write Error",
+                                                                  LogNSError("UnitTesting NullableRangeRestrictedInt8s write Error",
                                                                       error);
                                                               }
                                                               SetCommandExitStatus(error);
@@ -96909,20 +96909,20 @@ class WriteTestClusterNullableRangeRestrictedInt8s : public WriteAttribute {
     int8_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableRangeRestrictedInt8s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableRangeRestrictedInt8s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableRangeRestrictedInt8s()
+    SubscribeAttributeUnitTestingNullableRangeRestrictedInt8s()
         : SubscribeAttribute("nullable-range-restricted-int8s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableRangeRestrictedInt8s() {}
+    ~SubscribeAttributeUnitTestingNullableRangeRestrictedInt8s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004027) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -96940,7 +96940,7 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt8s : public Subscri
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableRangeRestrictedInt8s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableRangeRestrictedInt8s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -96951,27 +96951,27 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt8s : public Subscri
 /*
  * Attribute NullableRangeRestrictedInt16u
  */
-class ReadTestClusterNullableRangeRestrictedInt16u : public ReadAttribute {
+class ReadUnitTestingNullableRangeRestrictedInt16u : public ReadAttribute {
 public:
-    ReadTestClusterNullableRangeRestrictedInt16u()
+    ReadUnitTestingNullableRangeRestrictedInt16u()
         : ReadAttribute("nullable-range-restricted-int16u")
     {
     }
 
-    ~ReadTestClusterNullableRangeRestrictedInt16u() {}
+    ~ReadUnitTestingNullableRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004028) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableRangeRestrictedInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableRangeRestrictedInt16u response %@", [value description]);
+            NSLog(@"UnitTesting.NullableRangeRestrictedInt16u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableRangeRestrictedInt16u read Error", error);
+                LogNSError("UnitTesting NullableRangeRestrictedInt16u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -96979,9 +96979,9 @@ class ReadTestClusterNullableRangeRestrictedInt16u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableRangeRestrictedInt16u : public WriteAttribute {
+class WriteUnitTestingNullableRangeRestrictedInt16u : public WriteAttribute {
 public:
-    WriteTestClusterNullableRangeRestrictedInt16u()
+    WriteUnitTestingNullableRangeRestrictedInt16u()
         : WriteAttribute("nullable-range-restricted-int16u")
     {
         AddArgument("attr-name", "nullable-range-restricted-int16u");
@@ -96989,13 +96989,13 @@ class WriteTestClusterNullableRangeRestrictedInt16u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableRangeRestrictedInt16u() {}
+    ~WriteUnitTestingNullableRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004028) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -97010,7 +97010,7 @@ class WriteTestClusterNullableRangeRestrictedInt16u : public WriteAttribute {
                                                       completion:^(NSError * _Nullable error) {
                                                           if (error != nil) {
                                                               LogNSError(
-                                                                  "TestCluster NullableRangeRestrictedInt16u write Error", error);
+                                                                  "UnitTesting NullableRangeRestrictedInt16u write Error", error);
                                                           }
                                                           SetCommandExitStatus(error);
                                                       }];
@@ -97021,20 +97021,20 @@ class WriteTestClusterNullableRangeRestrictedInt16u : public WriteAttribute {
     uint16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableRangeRestrictedInt16u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableRangeRestrictedInt16u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableRangeRestrictedInt16u()
+    SubscribeAttributeUnitTestingNullableRangeRestrictedInt16u()
         : SubscribeAttribute("nullable-range-restricted-int16u")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableRangeRestrictedInt16u() {}
+    ~SubscribeAttributeUnitTestingNullableRangeRestrictedInt16u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004028) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97052,7 +97052,7 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt16u : public Subscr
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableRangeRestrictedInt16u response %@", [value description]);
+                NSLog(@"UnitTesting.NullableRangeRestrictedInt16u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97063,27 +97063,27 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt16u : public Subscr
 /*
  * Attribute NullableRangeRestrictedInt16s
  */
-class ReadTestClusterNullableRangeRestrictedInt16s : public ReadAttribute {
+class ReadUnitTestingNullableRangeRestrictedInt16s : public ReadAttribute {
 public:
-    ReadTestClusterNullableRangeRestrictedInt16s()
+    ReadUnitTestingNullableRangeRestrictedInt16s()
         : ReadAttribute("nullable-range-restricted-int16s")
     {
     }
 
-    ~ReadTestClusterNullableRangeRestrictedInt16s() {}
+    ~ReadUnitTestingNullableRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x00004029) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeNullableRangeRestrictedInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.NullableRangeRestrictedInt16s response %@", [value description]);
+            NSLog(@"UnitTesting.NullableRangeRestrictedInt16s response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster NullableRangeRestrictedInt16s read Error", error);
+                LogNSError("UnitTesting NullableRangeRestrictedInt16s read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97091,9 +97091,9 @@ class ReadTestClusterNullableRangeRestrictedInt16s : public ReadAttribute {
     }
 };
 
-class WriteTestClusterNullableRangeRestrictedInt16s : public WriteAttribute {
+class WriteUnitTestingNullableRangeRestrictedInt16s : public WriteAttribute {
 public:
-    WriteTestClusterNullableRangeRestrictedInt16s()
+    WriteUnitTestingNullableRangeRestrictedInt16s()
         : WriteAttribute("nullable-range-restricted-int16s")
     {
         AddArgument("attr-name", "nullable-range-restricted-int16s");
@@ -97101,13 +97101,13 @@ class WriteTestClusterNullableRangeRestrictedInt16s : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterNullableRangeRestrictedInt16s() {}
+    ~WriteUnitTestingNullableRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x00004029) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -97122,7 +97122,7 @@ class WriteTestClusterNullableRangeRestrictedInt16s : public WriteAttribute {
                                                       completion:^(NSError * _Nullable error) {
                                                           if (error != nil) {
                                                               LogNSError(
-                                                                  "TestCluster NullableRangeRestrictedInt16s write Error", error);
+                                                                  "UnitTesting NullableRangeRestrictedInt16s write Error", error);
                                                           }
                                                           SetCommandExitStatus(error);
                                                       }];
@@ -97133,20 +97133,20 @@ class WriteTestClusterNullableRangeRestrictedInt16s : public WriteAttribute {
     int16_t mValue;
 };
 
-class SubscribeAttributeTestClusterNullableRangeRestrictedInt16s : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingNullableRangeRestrictedInt16s : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterNullableRangeRestrictedInt16s()
+    SubscribeAttributeUnitTestingNullableRangeRestrictedInt16s()
         : SubscribeAttribute("nullable-range-restricted-int16s")
     {
     }
 
-    ~SubscribeAttributeTestClusterNullableRangeRestrictedInt16s() {}
+    ~SubscribeAttributeUnitTestingNullableRangeRestrictedInt16s() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x00004029) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97164,7 +97164,7 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt16s : public Subscr
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.NullableRangeRestrictedInt16s response %@", [value description]);
+                NSLog(@"UnitTesting.NullableRangeRestrictedInt16s response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97175,27 +97175,27 @@ class SubscribeAttributeTestClusterNullableRangeRestrictedInt16s : public Subscr
 /*
  * Attribute WriteOnlyInt8u
  */
-class ReadTestClusterWriteOnlyInt8u : public ReadAttribute {
+class ReadUnitTestingWriteOnlyInt8u : public ReadAttribute {
 public:
-    ReadTestClusterWriteOnlyInt8u()
+    ReadUnitTestingWriteOnlyInt8u()
         : ReadAttribute("write-only-int8u")
     {
     }
 
-    ~ReadTestClusterWriteOnlyInt8u() {}
+    ~ReadUnitTestingWriteOnlyInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000402A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeWriteOnlyInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.WriteOnlyInt8u response %@", [value description]);
+            NSLog(@"UnitTesting.WriteOnlyInt8u response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster WriteOnlyInt8u read Error", error);
+                LogNSError("UnitTesting WriteOnlyInt8u read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97203,9 +97203,9 @@ class ReadTestClusterWriteOnlyInt8u : public ReadAttribute {
     }
 };
 
-class WriteTestClusterWriteOnlyInt8u : public WriteAttribute {
+class WriteUnitTestingWriteOnlyInt8u : public WriteAttribute {
 public:
-    WriteTestClusterWriteOnlyInt8u()
+    WriteUnitTestingWriteOnlyInt8u()
         : WriteAttribute("write-only-int8u")
     {
         AddArgument("attr-name", "write-only-int8u");
@@ -97213,13 +97213,13 @@ class WriteTestClusterWriteOnlyInt8u : public WriteAttribute {
         WriteAttribute::AddArguments();
     }
 
-    ~WriteTestClusterWriteOnlyInt8u() {}
+    ~WriteUnitTestingWriteOnlyInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) WriteAttribute (0x0000402A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRWriteParams * params = [[MTRWriteParams alloc] init];
@@ -97232,7 +97232,7 @@ class WriteTestClusterWriteOnlyInt8u : public WriteAttribute {
                                                 params:params
                                             completion:^(NSError * _Nullable error) {
                                                 if (error != nil) {
-                                                    LogNSError("TestCluster WriteOnlyInt8u write Error", error);
+                                                    LogNSError("UnitTesting WriteOnlyInt8u write Error", error);
                                                 }
                                                 SetCommandExitStatus(error);
                                             }];
@@ -97243,20 +97243,20 @@ class WriteTestClusterWriteOnlyInt8u : public WriteAttribute {
     uint8_t mValue;
 };
 
-class SubscribeAttributeTestClusterWriteOnlyInt8u : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingWriteOnlyInt8u : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterWriteOnlyInt8u()
+    SubscribeAttributeUnitTestingWriteOnlyInt8u()
         : SubscribeAttribute("write-only-int8u")
     {
     }
 
-    ~SubscribeAttributeTestClusterWriteOnlyInt8u() {}
+    ~SubscribeAttributeUnitTestingWriteOnlyInt8u() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000402A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97274,7 +97274,7 @@ class SubscribeAttributeTestClusterWriteOnlyInt8u : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.WriteOnlyInt8u response %@", [value description]);
+                NSLog(@"UnitTesting.WriteOnlyInt8u response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97285,27 +97285,27 @@ class SubscribeAttributeTestClusterWriteOnlyInt8u : public SubscribeAttribute {
 /*
  * Attribute GeneratedCommandList
  */
-class ReadTestClusterGeneratedCommandList : public ReadAttribute {
+class ReadUnitTestingGeneratedCommandList : public ReadAttribute {
 public:
-    ReadTestClusterGeneratedCommandList()
+    ReadUnitTestingGeneratedCommandList()
         : ReadAttribute("generated-command-list")
     {
     }
 
-    ~ReadTestClusterGeneratedCommandList() {}
+    ~ReadUnitTestingGeneratedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000FFF8) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.GeneratedCommandList response %@", [value description]);
+            NSLog(@"UnitTesting.GeneratedCommandList response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster GeneratedCommandList read Error", error);
+                LogNSError("UnitTesting GeneratedCommandList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97313,20 +97313,20 @@ class ReadTestClusterGeneratedCommandList : public ReadAttribute {
     }
 };
 
-class SubscribeAttributeTestClusterGeneratedCommandList : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingGeneratedCommandList : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterGeneratedCommandList()
+    SubscribeAttributeUnitTestingGeneratedCommandList()
         : SubscribeAttribute("generated-command-list")
     {
     }
 
-    ~SubscribeAttributeTestClusterGeneratedCommandList() {}
+    ~SubscribeAttributeUnitTestingGeneratedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000FFF8) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97344,7 +97344,7 @@ class SubscribeAttributeTestClusterGeneratedCommandList : public SubscribeAttrib
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.GeneratedCommandList response %@", [value description]);
+                NSLog(@"UnitTesting.GeneratedCommandList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97355,27 +97355,27 @@ class SubscribeAttributeTestClusterGeneratedCommandList : public SubscribeAttrib
 /*
  * Attribute AcceptedCommandList
  */
-class ReadTestClusterAcceptedCommandList : public ReadAttribute {
+class ReadUnitTestingAcceptedCommandList : public ReadAttribute {
 public:
-    ReadTestClusterAcceptedCommandList()
+    ReadUnitTestingAcceptedCommandList()
         : ReadAttribute("accepted-command-list")
     {
     }
 
-    ~ReadTestClusterAcceptedCommandList() {}
+    ~ReadUnitTestingAcceptedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000FFF9) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.AcceptedCommandList response %@", [value description]);
+            NSLog(@"UnitTesting.AcceptedCommandList response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster AcceptedCommandList read Error", error);
+                LogNSError("UnitTesting AcceptedCommandList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97383,20 +97383,20 @@ class ReadTestClusterAcceptedCommandList : public ReadAttribute {
     }
 };
 
-class SubscribeAttributeTestClusterAcceptedCommandList : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingAcceptedCommandList : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterAcceptedCommandList()
+    SubscribeAttributeUnitTestingAcceptedCommandList()
         : SubscribeAttribute("accepted-command-list")
     {
     }
 
-    ~SubscribeAttributeTestClusterAcceptedCommandList() {}
+    ~SubscribeAttributeUnitTestingAcceptedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000FFF9) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97414,7 +97414,7 @@ class SubscribeAttributeTestClusterAcceptedCommandList : public SubscribeAttribu
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.AcceptedCommandList response %@", [value description]);
+                NSLog(@"UnitTesting.AcceptedCommandList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97425,27 +97425,27 @@ class SubscribeAttributeTestClusterAcceptedCommandList : public SubscribeAttribu
 /*
  * Attribute AttributeList
  */
-class ReadTestClusterAttributeList : public ReadAttribute {
+class ReadUnitTestingAttributeList : public ReadAttribute {
 public:
-    ReadTestClusterAttributeList()
+    ReadUnitTestingAttributeList()
         : ReadAttribute("attribute-list")
     {
     }
 
-    ~ReadTestClusterAttributeList() {}
+    ~ReadUnitTestingAttributeList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000FFFB) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.AttributeList response %@", [value description]);
+            NSLog(@"UnitTesting.AttributeList response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster AttributeList read Error", error);
+                LogNSError("UnitTesting AttributeList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97453,20 +97453,20 @@ class ReadTestClusterAttributeList : public ReadAttribute {
     }
 };
 
-class SubscribeAttributeTestClusterAttributeList : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingAttributeList : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterAttributeList()
+    SubscribeAttributeUnitTestingAttributeList()
         : SubscribeAttribute("attribute-list")
     {
     }
 
-    ~SubscribeAttributeTestClusterAttributeList() {}
+    ~SubscribeAttributeUnitTestingAttributeList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000FFFB) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97484,7 +97484,7 @@ class SubscribeAttributeTestClusterAttributeList : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.AttributeList response %@", [value description]);
+                NSLog(@"UnitTesting.AttributeList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97495,27 +97495,27 @@ class SubscribeAttributeTestClusterAttributeList : public SubscribeAttribute {
 /*
  * Attribute FeatureMap
  */
-class ReadTestClusterFeatureMap : public ReadAttribute {
+class ReadUnitTestingFeatureMap : public ReadAttribute {
 public:
-    ReadTestClusterFeatureMap()
+    ReadUnitTestingFeatureMap()
         : ReadAttribute("feature-map")
     {
     }
 
-    ~ReadTestClusterFeatureMap() {}
+    ~ReadUnitTestingFeatureMap() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000FFFC) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.FeatureMap response %@", [value description]);
+            NSLog(@"UnitTesting.FeatureMap response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster FeatureMap read Error", error);
+                LogNSError("UnitTesting FeatureMap read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97523,20 +97523,20 @@ class ReadTestClusterFeatureMap : public ReadAttribute {
     }
 };
 
-class SubscribeAttributeTestClusterFeatureMap : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingFeatureMap : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterFeatureMap()
+    SubscribeAttributeUnitTestingFeatureMap()
         : SubscribeAttribute("feature-map")
     {
     }
 
-    ~SubscribeAttributeTestClusterFeatureMap() {}
+    ~SubscribeAttributeUnitTestingFeatureMap() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000FFFC) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97554,7 +97554,7 @@ class SubscribeAttributeTestClusterFeatureMap : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.FeatureMap response %@", [value description]);
+                NSLog(@"UnitTesting.FeatureMap response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97565,27 +97565,27 @@ class SubscribeAttributeTestClusterFeatureMap : public SubscribeAttribute {
 /*
  * Attribute ClusterRevision
  */
-class ReadTestClusterClusterRevision : public ReadAttribute {
+class ReadUnitTestingClusterRevision : public ReadAttribute {
 public:
-    ReadTestClusterClusterRevision()
+    ReadUnitTestingClusterRevision()
         : ReadAttribute("cluster-revision")
     {
     }
 
-    ~ReadTestClusterClusterRevision() {}
+    ~ReadUnitTestingClusterRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReadAttribute (0x0000FFFD) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"TestCluster.ClusterRevision response %@", [value description]);
+            NSLog(@"UnitTesting.ClusterRevision response %@", [value description]);
             if (error != nil) {
-                LogNSError("TestCluster ClusterRevision read Error", error);
+                LogNSError("UnitTesting ClusterRevision read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -97593,20 +97593,20 @@ class ReadTestClusterClusterRevision : public ReadAttribute {
     }
 };
 
-class SubscribeAttributeTestClusterClusterRevision : public SubscribeAttribute {
+class SubscribeAttributeUnitTestingClusterRevision : public SubscribeAttribute {
 public:
-    SubscribeAttributeTestClusterClusterRevision()
+    SubscribeAttributeUnitTestingClusterRevision()
         : SubscribeAttribute("cluster-revision")
     {
     }
 
-    ~SubscribeAttributeTestClusterClusterRevision() {}
+    ~SubscribeAttributeUnitTestingClusterRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC05) ReportAttribute (0x0000FFFD) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(endpointId)
                                                                                           queue:callbackQueue];
         MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
@@ -97624,7 +97624,7 @@ class SubscribeAttributeTestClusterClusterRevision : public SubscribeAttribute {
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"TestCluster.ClusterRevision response %@", [value description]);
+                NSLog(@"UnitTesting.ClusterRevision response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -100902,295 +100902,295 @@ void registerClusterElectricalMeasurement(Commands & commands)
 
     commands.Register(clusterName, clusterCommands);
 }
-void registerClusterTestCluster(Commands & commands)
+void registerClusterUnitTesting(Commands & commands)
 {
-    using namespace chip::app::Clusters::TestCluster;
+    using namespace chip::app::Clusters::UnitTesting;
 
-    const char * clusterName = "TestCluster";
+    const char * clusterName = "UnitTesting";
 
     commands_list clusterCommands = {
         make_unique(Id), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
         make_unique(Id), //
-        make_unique(), //
+        make_unique(), //
         make_unique(Id), //
-        make_unique(), //
+        make_unique(), //
         make_unique(Id), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
-        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
+        make_unique(), //
     };
 
     commands.Register(clusterName, clusterCommands);
@@ -101278,5 +101278,5 @@ void registerClusters(Commands & commands)
     registerClusterApplicationBasic(commands);
     registerClusterAccountLogin(commands);
     registerClusterElectricalMeasurement(commands);
-    registerClusterTestCluster(commands);
+    registerClusterUnitTesting(commands);
 }
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
index 071d53cc8ac407..0c4c3e8c97c424 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
@@ -74977,7 +74977,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommand_1()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -74996,7 +74996,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestNotHandledCommand_2()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75016,13 +75016,13 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestSpecificCommand_3()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster testSpecificWithCompletion:^(
-            MTRTestClusterClusterTestSpecificResponseParams * _Nullable values, NSError * _Nullable err) {
+            MTRUnitTestingClusterTestSpecificResponseParams * _Nullable values, NSError * _Nullable err) {
             NSLog(@"Send Test Specific Command Error: %@", err);
 
             VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0));
@@ -75041,16 +75041,16 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_4()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:3U];
         params.arg2 = [NSNumber numberWithUnsignedChar:17U];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 
@@ -75070,16 +75070,16 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendFailingTestAddArgumentsCommand_5()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:250U];
         params.arg2 = [NSNumber numberWithUnsignedChar:6U];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send failing Test Add Arguments Command Error: %@", err);
 
@@ -75097,7 +75097,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanDefaultValue_6()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75121,7 +75121,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBooleanTrue_7()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75143,7 +75143,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanTrue_8()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75167,7 +75167,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBooleanFalse_9()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75189,7 +75189,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanFalse_10()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75213,7 +75213,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8DefaultValue_11()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75237,7 +75237,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap8MaxValue_12()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75259,7 +75259,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8MaxValue_13()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75283,7 +75283,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap8MinValue_14()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75305,7 +75305,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8MinValue_15()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75329,7 +75329,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16DefaultValue_16()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75353,7 +75353,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap16MaxValue_17()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75375,7 +75375,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16MaxValue_18()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75399,7 +75399,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap16MinValue_19()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75421,7 +75421,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16MinValue_20()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75445,7 +75445,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32DefaultValue_21()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75469,7 +75469,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap32MaxValue_22()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75491,7 +75491,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32MaxValue_23()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75515,7 +75515,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap32MinValue_24()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75537,7 +75537,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32MinValue_25()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75561,7 +75561,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64DefaultValue_26()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75585,7 +75585,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap64MaxValue_27()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75607,7 +75607,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64MaxValue_28()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75631,7 +75631,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap64MinValue_29()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75653,7 +75653,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64MinValue_30()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75677,7 +75677,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uDefaultValue_31()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75701,7 +75701,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8uMaxValue_32()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75723,7 +75723,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uMaxValue_33()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75747,7 +75747,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8uMinValue_34()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75769,7 +75769,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uMinValue_35()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75793,7 +75793,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uDefaultValue_36()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75817,7 +75817,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16uMaxValue_37()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75839,7 +75839,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uMaxValue_38()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75863,7 +75863,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16uMinValue_39()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75885,7 +75885,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uMinValue_40()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75909,7 +75909,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uDefaultValue_41()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75933,7 +75933,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uMaxValue_42()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75955,7 +75955,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uMaxValue_43()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -75979,7 +75979,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uMinValue_44()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76001,7 +76001,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uMinValue_45()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76025,7 +76025,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uDefaultValue_46()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76049,7 +76049,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64uMaxValue_47()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76071,7 +76071,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uMaxValue_48()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76095,7 +76095,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64uMinValue_49()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76117,7 +76117,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uMinValue_50()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76141,7 +76141,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sDefaultValue_51()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76165,7 +76165,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8sMaxValue_52()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76187,7 +76187,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sMaxValue_53()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76211,7 +76211,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8sMinValue_54()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76233,7 +76233,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sMinValue_55()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76257,7 +76257,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8sDefaultValue_56()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76279,7 +76279,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sDefaultValue_57()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76303,7 +76303,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sDefaultValue_58()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76327,7 +76327,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16sMaxValue_59()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76349,7 +76349,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sMaxValue_60()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76373,7 +76373,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16sMinValue_61()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76395,7 +76395,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sMinValue_62()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76419,7 +76419,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16sDefaultValue_63()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76441,7 +76441,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sDefaultValue_64()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76465,7 +76465,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sDefaultValue_65()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76489,7 +76489,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32sMaxValue_66()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76511,7 +76511,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sMaxValue_67()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76535,7 +76535,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32sMinValue_68()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76557,7 +76557,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sMinValue_69()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76581,7 +76581,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32sDefaultValue_70()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76603,7 +76603,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sDefaultValue_71()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76627,7 +76627,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sDefaultValue_72()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76651,7 +76651,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64sMaxValue_73()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76673,7 +76673,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sMaxValue_74()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76697,7 +76697,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64sMinValue_75()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76719,7 +76719,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sMinValue_76()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76743,7 +76743,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64sDefaultValue_77()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76765,7 +76765,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sDefaultValue_78()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76789,7 +76789,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeSingleDefaultValue_79()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76813,7 +76813,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeSingleMediumValue_80()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76835,7 +76835,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeSingleMediumValue_81()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76859,7 +76859,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeSingleLargeValue_82()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76881,7 +76881,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeSingleLargeValue_83()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76905,7 +76905,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeSingleSmallValue_84()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76927,7 +76927,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeSingleSmallValue_85()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76951,7 +76951,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeSingleDefaultValue_86()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76973,7 +76973,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeSingleDefaultValue_87()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -76997,7 +76997,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeDoubleDefaultValue_88()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77021,7 +77021,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeDoubleMediumValue_89()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77043,7 +77043,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeDoubleMediumValue_90()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77067,7 +77067,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeDoubleLargeValue_91()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77089,7 +77089,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeDoubleLargeValue_92()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77113,7 +77113,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeDoubleSmallValue_93()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77135,7 +77135,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeDoubleSmallValue_94()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77159,7 +77159,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeDoubleDefaultValue_95()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77181,7 +77181,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeDoubleDefaultValue_96()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77205,7 +77205,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8DefaultValue_97()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77229,7 +77229,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum8MaxValue_98()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77251,7 +77251,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8MaxValue_99()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77275,7 +77275,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum8MinValue_100()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77297,7 +77297,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8MinValue_101()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77321,7 +77321,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16DefaultValue_102()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77345,7 +77345,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum16MaxValue_103()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77367,7 +77367,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16MaxValue_104()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77391,7 +77391,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum16MinValue_105()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77413,7 +77413,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16MinValue_106()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77437,7 +77437,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringDefaultValue_107()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77461,7 +77461,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringWithEmbeddedNull_108()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77483,7 +77483,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringWithEmbeddedNull_109()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77508,7 +77508,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringWithHexFormat_110()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77530,7 +77530,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringWithHexFormat_111()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77555,7 +77555,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringWithWeirdChars_112()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77577,7 +77577,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringWithWeirdChars_113()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77602,7 +77602,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetString_114()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77624,7 +77624,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetString_115()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77649,7 +77649,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetString_116()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77675,7 +77675,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetString_117()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77700,7 +77700,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetString_118()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77722,7 +77722,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeLongOctetStringDefaultValue_119()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77746,7 +77746,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeLongOctetString_120()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77772,7 +77772,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeLongOctetString_121()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77802,7 +77802,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeLongOctetString_122()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77824,7 +77824,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringDefaultValue_123()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77848,7 +77848,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharString_124()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77870,7 +77870,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharString_125()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77894,7 +77894,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValueTooLong_126()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77920,7 +77920,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharString_127()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77944,7 +77944,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringEmpty_128()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77966,7 +77966,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeLongCharStringDefaultValue_129()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -77990,7 +77990,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeLongCharString_130()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78015,7 +78015,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeLongCharString_131()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78042,7 +78042,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeLongCharString_132()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78064,7 +78064,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListLongOctetStringForChunkedRead_133()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78124,7 +78124,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListLongOctetStringForChunkedWrite_134()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78190,7 +78190,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListLongOctetStringForChunkedRead_135()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78259,7 +78259,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsDefaultValue_136()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78283,7 +78283,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochUsMaxValue_137()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78305,7 +78305,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsMaxValue_138()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78329,7 +78329,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochUsMinValue_139()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78351,7 +78351,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsMinValue_140()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78375,7 +78375,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSDefaultValue_141()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78399,7 +78399,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochSMaxValue_142()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78421,7 +78421,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSMaxValue_143()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78445,7 +78445,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochSMinValue_144()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78467,7 +78467,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSMinValue_145()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78491,7 +78491,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeUnsupported_146()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78520,7 +78520,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteattributeUnsupported_147()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78547,7 +78547,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandToUnsupportedEndpoint_148()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(200)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78567,7 +78567,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandToUnsupportedCluster_149()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(0)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78587,7 +78587,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeVendorIdDefaultValue_150()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78611,7 +78611,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeVendorId_151()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78633,7 +78633,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeVendorId_152()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78657,7 +78657,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestRestoreAttributeVendorId_153()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -78679,17 +78679,17 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendACommandWithAVendorIdAndEnum_154()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestEnumsRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestEnumsRequestParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedShort:20003U];
         params.arg2 = [NSNumber numberWithUnsignedChar:1U];
         [cluster
             testEnumsRequestWithParams:params
-                            completion:^(MTRTestClusterClusterTestEnumsResponseParams * _Nullable values, NSError * _Nullable err) {
+                            completion:^(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable values, NSError * _Nullable err) {
                                 NSLog(@"Send a command with a vendor_id and enum Error: %@", err);
 
                                 VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0));
@@ -78713,17 +78713,17 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendACommandWithAVendorIdAndInvalidEnum_155()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestEnumsRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestEnumsRequestParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedShort:20003U];
         params.arg2 = [NSNumber numberWithUnsignedChar:101U];
         [cluster
             testEnumsRequestWithParams:params
-                            completion:^(MTRTestClusterClusterTestEnumsResponseParams * _Nullable values, NSError * _Nullable err) {
+                            completion:^(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable values, NSError * _Nullable err) {
                                 NSLog(@"Send a command with a vendor_id and invalid enum Error: %@", err);
 
                                 VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0));
@@ -78747,24 +78747,24 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithStructArgumentAndArg1bIsTrue_156()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestStructArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0];
+        __auto_type * params = [[MTRUnitTestingClusterTestStructArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.0f];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0];
 
         [cluster testStructArgumentRequestWithParams:params
-                                          completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                          completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                               NSError * _Nullable err) {
                                               NSLog(@"Send Test Command With Struct Argument and arg1.b is true Error: %@", err);
 
@@ -78784,24 +78784,24 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithStructArgumentAndArg1bIsFalse_157()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestStructArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:false];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0];
+        __auto_type * params = [[MTRUnitTestingClusterTestStructArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:false];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.0f];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0];
 
         [cluster testStructArgumentRequestWithParams:params
-                                          completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                          completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                               NSError * _Nullable err) {
                                               NSLog(@"Send Test Command With Struct Argument and arg1.b is false Error: %@", err);
 
@@ -78821,35 +78821,35 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithNestedStructArgumentAndArg1cbIsTrue_158()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterNestedStruct alloc] init];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).a =
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterNestedStruct alloc] init];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).a =
             [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).b =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).b =
             [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).c =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).c =
             [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).d =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).d =
             [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).f =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).f =
             [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).g =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).g =
             [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).h =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).h =
             [NSNumber numberWithDouble:0];
 
         [cluster
             testNestedStructArgumentRequestWithParams:params
-                                           completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                           completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                NSError * _Nullable err) {
                                                NSLog(
                                                    @"Send Test Command With Nested Struct Argument and arg1.c.b is true Error: %@",
@@ -78871,35 +78871,35 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithNestedStructArgumentArg1cbIsFalse_159()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterNestedStruct alloc] init];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterNestedStruct *) params.arg1).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).a =
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterNestedStruct alloc] init];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterNestedStruct *) params.arg1).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).a =
             [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).b =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).b =
             [NSNumber numberWithBool:false];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).c =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).c =
             [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).d =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).d =
             [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).f =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).f =
             [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).g =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).g =
             [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStruct *) params.arg1).c).h =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStruct *) params.arg1).c).h =
             [NSNumber numberWithDouble:0];
 
         [cluster
             testNestedStructArgumentRequestWithParams:params
-                                           completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                           completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                NSError * _Nullable err) {
                                                NSLog(@"Send Test Command With Nested Struct Argument arg1.c.b is false Error: %@",
                                                    err);
@@ -78920,79 +78920,79 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithNestedStructListArgumentAndAllFieldsBOfArg1dAreTrue_160()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructListArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterNestedStructList alloc] init];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).a =
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructListArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterNestedStructList alloc] init];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).a =
             [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).b =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).b =
             [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).c =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).c =
             [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).d =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).d =
             [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).f =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).f =
             [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).g =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).g =
             [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).h =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).h =
             [NSNumber numberWithDouble:0];
 
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
-            temp_1[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).a = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).e = @"nested_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).h = [NSNumber numberWithDouble:0];
-
-            temp_1[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).a = [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).e = @"nested_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).h = [NSNumber numberWithDouble:0];
-
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).d = temp_1;
+            temp_1[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).a = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).e = @"nested_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).h = [NSNumber numberWithDouble:0];
+
+            temp_1[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).a = [NSNumber numberWithUnsignedChar:2U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).e = @"nested_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).h = [NSNumber numberWithDouble:0];
+
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).d = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [NSNumber numberWithUnsignedInt:1UL];
             temp_1[1] = [NSNumber numberWithUnsignedInt:2UL];
             temp_1[2] = [NSNumber numberWithUnsignedInt:3UL];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).e = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).e = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [[NSData alloc] initWithBytes:"octet_string_1" length:14];
             temp_1[1] = [[NSData alloc] initWithBytes:"octect_string_2" length:15];
             temp_1[2] = [[NSData alloc] initWithBytes:"octet_string_3" length:14];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).f = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).f = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [NSNumber numberWithUnsignedChar:0U];
             temp_1[1] = [NSNumber numberWithUnsignedChar:255U];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).g = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).g = temp_1;
         }
 
         [cluster testNestedStructListArgumentRequestWithParams:params
-                                                    completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                    completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                         NSError * _Nullable err) {
                                                         NSLog(@"Send Test Command With Nested Struct List Argument and all fields "
                                                               @"b of arg1.d are true Error: %@",
@@ -79014,79 +79014,79 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithNestedStructListArgumentAndSomeFieldsBOfArg1dAreFalse_161()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNestedStructListArgumentRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterNestedStructList alloc] init];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterNestedStructList *) params.arg1).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).a =
+        __auto_type * params = [[MTRUnitTestingClusterTestNestedStructListArgumentRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterNestedStructList alloc] init];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).a = [NSNumber numberWithUnsignedChar:0U];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterNestedStructList *) params.arg1).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).a =
             [NSNumber numberWithUnsignedChar:0U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).b =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).b =
             [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).c =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).c =
             [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).d =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).d =
             [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).f =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).f =
             [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).g =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).g =
             [NSNumber numberWithFloat:0.0f];
-        ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) params.arg1).c).h =
+        ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) params.arg1).c).h =
             [NSNumber numberWithDouble:0];
 
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
-            temp_1[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).a = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).e = @"nested_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[0]).h = [NSNumber numberWithDouble:0];
-
-            temp_1[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).a = [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).b = [NSNumber numberWithBool:false];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).e = @"nested_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_1[1]).h = [NSNumber numberWithDouble:0];
-
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).d = temp_1;
+            temp_1[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).a = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).e = @"nested_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[0]).h = [NSNumber numberWithDouble:0];
+
+            temp_1[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).a = [NSNumber numberWithUnsignedChar:2U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).b = [NSNumber numberWithBool:false];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).e = @"nested_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_1[1]).h = [NSNumber numberWithDouble:0];
+
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).d = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [NSNumber numberWithUnsignedInt:1UL];
             temp_1[1] = [NSNumber numberWithUnsignedInt:2UL];
             temp_1[2] = [NSNumber numberWithUnsignedInt:3UL];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).e = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).e = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [[NSData alloc] initWithBytes:"octet_string_1" length:14];
             temp_1[1] = [[NSData alloc] initWithBytes:"octect_string_2" length:15];
             temp_1[2] = [[NSData alloc] initWithBytes:"octet_string_3" length:14];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).f = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).f = temp_1;
         }
         {
             NSMutableArray * temp_1 = [[NSMutableArray alloc] init];
             temp_1[0] = [NSNumber numberWithUnsignedChar:0U];
             temp_1[1] = [NSNumber numberWithUnsignedChar:255U];
-            ((MTRTestClusterClusterNestedStructList *) params.arg1).g = temp_1;
+            ((MTRUnitTestingClusterNestedStructList *) params.arg1).g = temp_1;
         }
 
         [cluster testNestedStructListArgumentRequestWithParams:params
-                                                    completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                    completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                         NSError * _Nullable err) {
                                                         NSLog(@"Send Test Command With Nested Struct List Argument and some fields "
                                                               @"b of arg1.d are false Error: %@",
@@ -79108,25 +79108,25 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithStructArgumentAndSeeWhatWeGetBack_162()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterSimpleStructEchoRequestParams alloc] init];
-        params.arg1 = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:17U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:false];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).e = @"char_string";
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.1f];
-        ((MTRTestClusterClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0.1];
+        __auto_type * params = [[MTRUnitTestingClusterSimpleStructEchoRequestParams alloc] init];
+        params.arg1 = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).a = [NSNumber numberWithUnsignedChar:17U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).b = [NSNumber numberWithBool:false];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).c = [NSNumber numberWithUnsignedChar:2U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).d = [[NSData alloc] initWithBytes:"octet_string" length:12];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).e = @"char_string";
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).f = [NSNumber numberWithUnsignedChar:1U];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).g = [NSNumber numberWithFloat:0.1f];
+        ((MTRUnitTestingClusterSimpleStruct *) params.arg1).h = [NSNumber numberWithDouble:0.1];
 
         [cluster
             simpleStructEchoRequestWithParams:params
-                                   completion:^(MTRTestClusterClusterSimpleStructResponseParams * _Nullable values,
+                                   completion:^(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable values,
                                        NSError * _Nullable err) {
                                        NSLog(@"Send Test Command With Struct Argument and see what we get back Error: %@", err);
 
@@ -79135,22 +79135,22 @@ class TestCluster : public TestCommandBridge {
                                        {
                                            id actualValue = values.arg1;
                                            VerifyOrReturn(
-                                               CheckValue("a", ((MTRTestClusterClusterSimpleStruct *) actualValue).a, 17U));
+                                               CheckValue("a", ((MTRUnitTestingClusterSimpleStruct *) actualValue).a, 17U));
                                            VerifyOrReturn(
-                                               CheckValue("b", ((MTRTestClusterClusterSimpleStruct *) actualValue).b, false));
+                                               CheckValue("b", ((MTRUnitTestingClusterSimpleStruct *) actualValue).b, false));
                                            VerifyOrReturn(
-                                               CheckValue("c", ((MTRTestClusterClusterSimpleStruct *) actualValue).c, 2U));
+                                               CheckValue("c", ((MTRUnitTestingClusterSimpleStruct *) actualValue).c, 2U));
                                            VerifyOrReturn(
-                                               CheckValueAsString("d", ((MTRTestClusterClusterSimpleStruct *) actualValue).d,
+                                               CheckValueAsString("d", ((MTRUnitTestingClusterSimpleStruct *) actualValue).d,
                                                    [[NSData alloc] initWithBytes:"octet_string" length:12]));
                                            VerifyOrReturn(CheckValueAsString(
-                                               "e", ((MTRTestClusterClusterSimpleStruct *) actualValue).e, @"char_string"));
+                                               "e", ((MTRUnitTestingClusterSimpleStruct *) actualValue).e, @"char_string"));
                                            VerifyOrReturn(
-                                               CheckValue("f", ((MTRTestClusterClusterSimpleStruct *) actualValue).f, 1U));
+                                               CheckValue("f", ((MTRUnitTestingClusterSimpleStruct *) actualValue).f, 1U));
                                            VerifyOrReturn(
-                                               CheckValue("g", ((MTRTestClusterClusterSimpleStruct *) actualValue).g, 0.1f));
+                                               CheckValue("g", ((MTRUnitTestingClusterSimpleStruct *) actualValue).g, 0.1f));
                                            VerifyOrReturn(
-                                               CheckValue("h", ((MTRTestClusterClusterSimpleStruct *) actualValue).h, 0.1));
+                                               CheckValue("h", ((MTRUnitTestingClusterSimpleStruct *) actualValue).h, 0.1));
                                        }
 
                                        NextTest();
@@ -79162,12 +79162,12 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfInt8uAndNoneOfThemIsSetTo0_163()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
             temp_0[0] = [NSNumber numberWithUnsignedChar:1U];
@@ -79183,7 +79183,7 @@ class TestCluster : public TestCommandBridge {
         }
         [cluster
             testListInt8UArgumentRequestWithParams:params
-                                        completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                        completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                             NSError * _Nullable err) {
                                             NSLog(@"Send Test Command With List of INT8U and none of them is set to 0 Error: %@",
                                                 err);
@@ -79204,12 +79204,12 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfInt8uAndOneOfThemIsSetTo0_164()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
             temp_0[0] = [NSNumber numberWithUnsignedChar:1U];
@@ -79226,7 +79226,7 @@ class TestCluster : public TestCommandBridge {
         }
         [cluster
             testListInt8UArgumentRequestWithParams:params
-                                        completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                        completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                             NSError * _Nullable err) {
                                             NSLog(
                                                 @"Send Test Command With List of INT8U and one of them is set to 0 Error: %@", err);
@@ -79247,12 +79247,12 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfInt8uAndGetItReversed_165()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UReverseRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UReverseRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
             temp_0[0] = [NSNumber numberWithUnsignedChar:1U];
@@ -79268,7 +79268,7 @@ class TestCluster : public TestCommandBridge {
         }
         [cluster
             testListInt8UReverseRequestWithParams:params
-                                       completion:^(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable values,
+                                       completion:^(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable values,
                                            NSError * _Nullable err) {
                                            NSLog(@"Send Test Command With List of INT8U and get it reversed Error: %@", err);
 
@@ -79297,19 +79297,19 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithEmptyListOfInt8uAndGetAnEmptyListBack_166()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListInt8UReverseRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListInt8UReverseRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
             params.arg1 = temp_0;
         }
         [cluster
             testListInt8UReverseRequestWithParams:params
-                                       completion:^(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable values,
+                                       completion:^(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable values,
                                            NSError * _Nullable err) {
                                            NSLog(@"Send Test Command With empty List of INT8U and get an empty list back Error: %@",
                                                err);
@@ -79330,38 +79330,38 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfStructArgumentAndArg1bOfFirstItemIsTrue_167()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListStructArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListStructArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).c = [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).d = [[NSData alloc] initWithBytes:"first_octet_string" length:18];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).e = @"first_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).h = [NSNumber numberWithDouble:0];
-
-            temp_0[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).a = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).d = [[NSData alloc] initWithBytes:"second_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).e = @"second_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).h = [NSNumber numberWithDouble:0];
+            temp_0[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).c = [NSNumber numberWithUnsignedChar:2U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).d = [[NSData alloc] initWithBytes:"first_octet_string" length:18];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).e = @"first_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).h = [NSNumber numberWithDouble:0];
+
+            temp_0[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).a = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).d = [[NSData alloc] initWithBytes:"second_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).e = @"second_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).h = [NSNumber numberWithDouble:0];
 
             params.arg1 = temp_0;
         }
         [cluster testListStructArgumentRequestWithParams:params
-                                              completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                              completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                   NSError * _Nullable err) {
                                                   NSLog(@"Send Test Command With List of Struct Argument and arg1.b of first item "
                                                         @"is true Error: %@",
@@ -79383,38 +79383,38 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfStructArgumentAndArg1bOfFirstItemIsFalse_168()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListStructArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListStructArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).c = [NSNumber numberWithUnsignedChar:3U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).d = [[NSData alloc] initWithBytes:"second_octet_string" length:19];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).e = @"second_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[0]).h = [NSNumber numberWithDouble:0];
-
-            temp_0[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).a = [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).b = [NSNumber numberWithBool:false];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).c = [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).d = [[NSData alloc] initWithBytes:"first_octet_string" length:18];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).e = @"first_char_string";
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).f = [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).g = [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) temp_0[1]).h = [NSNumber numberWithDouble:0];
+            temp_0[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).c = [NSNumber numberWithUnsignedChar:3U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).d = [[NSData alloc] initWithBytes:"second_octet_string" length:19];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).e = @"second_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[0]).h = [NSNumber numberWithDouble:0];
+
+            temp_0[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).a = [NSNumber numberWithUnsignedChar:0U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).b = [NSNumber numberWithBool:false];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).c = [NSNumber numberWithUnsignedChar:2U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).d = [[NSData alloc] initWithBytes:"first_octet_string" length:18];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).e = @"first_char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).f = [NSNumber numberWithUnsignedChar:1U];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).g = [NSNumber numberWithFloat:0.0f];
+            ((MTRUnitTestingClusterSimpleStruct *) temp_0[1]).h = [NSNumber numberWithDouble:0];
 
             params.arg1 = temp_0;
         }
         [cluster testListStructArgumentRequestWithParams:params
-                                              completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                              completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                   NSError * _Nullable err) {
                                                   NSLog(@"Send Test Command With List of Struct Argument and arg1.b of first item "
                                                         @"is false Error: %@",
@@ -79436,85 +79436,85 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithListOfNestedStructListArgumentAndAllFieldsBOfElementsOfArg1dAreTrue_169()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListNestedStructListArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterNestedStructList alloc] init];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).a =
+            temp_0[0] = [[MTRUnitTestingClusterNestedStructList alloc] init];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).a =
                 [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).b =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).b =
                 [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).c =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).c =
                 [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).d =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).d =
                 [[NSData alloc] initWithBytes:"octet_string" length:12];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).e = @"char_string";
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).f =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).e = @"char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).f =
                 [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).g =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).g =
                 [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).h =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).h =
                 [NSNumber numberWithDouble:0];
 
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
-                temp_2[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).a = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).b = [NSNumber numberWithBool:true];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).c = [NSNumber numberWithUnsignedChar:3U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
+                temp_2[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).a = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).b = [NSNumber numberWithBool:true];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).c = [NSNumber numberWithUnsignedChar:3U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
                                                                                              length:19];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).e = @"nested_char_string";
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).f = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).g = [NSNumber numberWithFloat:0.0f];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).h = [NSNumber numberWithDouble:0];
-
-                temp_2[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).a = [NSNumber numberWithUnsignedChar:2U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).b = [NSNumber numberWithBool:true];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).c = [NSNumber numberWithUnsignedChar:3U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).e = @"nested_char_string";
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).f = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).g = [NSNumber numberWithFloat:0.0f];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).h = [NSNumber numberWithDouble:0];
+
+                temp_2[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).a = [NSNumber numberWithUnsignedChar:2U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).b = [NSNumber numberWithBool:true];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).c = [NSNumber numberWithUnsignedChar:3U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
                                                                                              length:19];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).e = @"nested_char_string";
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).f = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).g = [NSNumber numberWithFloat:0.0f];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).h = [NSNumber numberWithDouble:0];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).e = @"nested_char_string";
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).f = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).g = [NSNumber numberWithFloat:0.0f];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).h = [NSNumber numberWithDouble:0];
 
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).d = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).d = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [NSNumber numberWithUnsignedInt:1UL];
                 temp_2[1] = [NSNumber numberWithUnsignedInt:2UL];
                 temp_2[2] = [NSNumber numberWithUnsignedInt:3UL];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).e = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).e = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [[NSData alloc] initWithBytes:"octet_string_1" length:14];
                 temp_2[1] = [[NSData alloc] initWithBytes:"octect_string_2" length:15];
                 temp_2[2] = [[NSData alloc] initWithBytes:"octet_string_3" length:14];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).f = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).f = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [NSNumber numberWithUnsignedChar:0U];
                 temp_2[1] = [NSNumber numberWithUnsignedChar:255U];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).g = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).g = temp_2;
             }
 
             params.arg1 = temp_0;
         }
         [cluster testListNestedStructListArgumentRequestWithParams:params
-                                                        completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                        completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                             NSError * _Nullable err) {
                                                             NSLog(@"Send Test Command With List of Nested Struct List Argument and "
                                                                   @"all fields b of elements of arg1.d are true Error: %@",
@@ -79536,85 +79536,85 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithNestedStructListArgumentAndSomeFieldsBOfElementsOfArg1dAreFalse_170()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestListNestedStructListArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams alloc] init];
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterNestedStructList alloc] init];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).b = [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c = [[MTRTestClusterClusterSimpleStruct alloc] init];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).a =
+            temp_0[0] = [[MTRUnitTestingClusterNestedStructList alloc] init];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).a = [NSNumber numberWithUnsignedChar:0U];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).b = [NSNumber numberWithBool:true];
+            ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).a =
                 [NSNumber numberWithUnsignedChar:0U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).b =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).b =
                 [NSNumber numberWithBool:true];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).c =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).c =
                 [NSNumber numberWithUnsignedChar:2U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).d =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).d =
                 [[NSData alloc] initWithBytes:"octet_string" length:12];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).e = @"char_string";
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).f =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).e = @"char_string";
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).f =
                 [NSNumber numberWithUnsignedChar:1U];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).g =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).g =
                 [NSNumber numberWithFloat:0.0f];
-            ((MTRTestClusterClusterSimpleStruct *) ((MTRTestClusterClusterNestedStructList *) temp_0[0]).c).h =
+            ((MTRUnitTestingClusterSimpleStruct *) ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).c).h =
                 [NSNumber numberWithDouble:0];
 
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
-                temp_2[0] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).a = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).b = [NSNumber numberWithBool:true];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).c = [NSNumber numberWithUnsignedChar:3U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
+                temp_2[0] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).a = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).b = [NSNumber numberWithBool:true];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).c = [NSNumber numberWithUnsignedChar:3U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
                                                                                              length:19];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).e = @"nested_char_string";
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).f = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).g = [NSNumber numberWithFloat:0.0f];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[0]).h = [NSNumber numberWithDouble:0];
-
-                temp_2[1] = [[MTRTestClusterClusterSimpleStruct alloc] init];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).a = [NSNumber numberWithUnsignedChar:2U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).b = [NSNumber numberWithBool:false];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).c = [NSNumber numberWithUnsignedChar:3U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).e = @"nested_char_string";
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).f = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).g = [NSNumber numberWithFloat:0.0f];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[0]).h = [NSNumber numberWithDouble:0];
+
+                temp_2[1] = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).a = [NSNumber numberWithUnsignedChar:2U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).b = [NSNumber numberWithBool:false];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).c = [NSNumber numberWithUnsignedChar:3U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).d = [[NSData alloc] initWithBytes:"nested_octet_string"
                                                                                              length:19];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).e = @"nested_char_string";
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).f = [NSNumber numberWithUnsignedChar:1U];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).g = [NSNumber numberWithFloat:0.0f];
-                ((MTRTestClusterClusterSimpleStruct *) temp_2[1]).h = [NSNumber numberWithDouble:0];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).e = @"nested_char_string";
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).f = [NSNumber numberWithUnsignedChar:1U];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).g = [NSNumber numberWithFloat:0.0f];
+                ((MTRUnitTestingClusterSimpleStruct *) temp_2[1]).h = [NSNumber numberWithDouble:0];
 
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).d = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).d = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [NSNumber numberWithUnsignedInt:1UL];
                 temp_2[1] = [NSNumber numberWithUnsignedInt:2UL];
                 temp_2[2] = [NSNumber numberWithUnsignedInt:3UL];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).e = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).e = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [[NSData alloc] initWithBytes:"octet_string_1" length:14];
                 temp_2[1] = [[NSData alloc] initWithBytes:"octect_string_2" length:15];
                 temp_2[2] = [[NSData alloc] initWithBytes:"octet_string_3" length:14];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).f = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).f = temp_2;
             }
             {
                 NSMutableArray * temp_2 = [[NSMutableArray alloc] init];
                 temp_2[0] = [NSNumber numberWithUnsignedChar:0U];
                 temp_2[1] = [NSNumber numberWithUnsignedChar:255U];
-                ((MTRTestClusterClusterNestedStructList *) temp_0[0]).g = temp_2;
+                ((MTRUnitTestingClusterNestedStructList *) temp_0[0]).g = temp_2;
             }
 
             params.arg1 = temp_0;
         }
         [cluster testListNestedStructListArgumentRequestWithParams:params
-                                                        completion:^(MTRTestClusterClusterBooleanResponseParams * _Nullable values,
+                                                        completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable values,
                                                             NSError * _Nullable err) {
                                                             NSLog(@"Send Test Command With Nested Struct List Argument and some "
                                                                   @"fields b of elements of arg1.d are false Error: %@",
@@ -79636,7 +79636,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListWithListOfInt8uAndNoneOfThemIsSetTo0_171()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79666,7 +79666,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListWithListOfInt8u_172()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79694,7 +79694,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListWithListOfOctetString_173()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79723,7 +79723,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListWithListOfOctetString_174()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79751,7 +79751,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListWithListOfListStructOctetString_175()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79759,21 +79759,21 @@ class TestCluster : public TestCommandBridge {
         id listStructOctetStringArgument;
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterTestListStructOctet alloc] init];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[0]).member1 = [NSNumber numberWithUnsignedLongLong:0ULL];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[0]).member2 = [[NSData alloc] initWithBytes:"Test0" length:5];
+            temp_0[0] = [[MTRUnitTestingClusterTestListStructOctet alloc] init];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[0]).member1 = [NSNumber numberWithUnsignedLongLong:0ULL];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[0]).member2 = [[NSData alloc] initWithBytes:"Test0" length:5];
 
-            temp_0[1] = [[MTRTestClusterClusterTestListStructOctet alloc] init];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[1]).member1 = [NSNumber numberWithUnsignedLongLong:1ULL];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[1]).member2 = [[NSData alloc] initWithBytes:"Test1" length:5];
+            temp_0[1] = [[MTRUnitTestingClusterTestListStructOctet alloc] init];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[1]).member1 = [NSNumber numberWithUnsignedLongLong:1ULL];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[1]).member2 = [[NSData alloc] initWithBytes:"Test1" length:5];
 
-            temp_0[2] = [[MTRTestClusterClusterTestListStructOctet alloc] init];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[2]).member1 = [NSNumber numberWithUnsignedLongLong:2ULL];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[2]).member2 = [[NSData alloc] initWithBytes:"Test2" length:5];
+            temp_0[2] = [[MTRUnitTestingClusterTestListStructOctet alloc] init];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[2]).member1 = [NSNumber numberWithUnsignedLongLong:2ULL];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[2]).member2 = [[NSData alloc] initWithBytes:"Test2" length:5];
 
-            temp_0[3] = [[MTRTestClusterClusterTestListStructOctet alloc] init];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[3]).member1 = [NSNumber numberWithUnsignedLongLong:3ULL];
-            ((MTRTestClusterClusterTestListStructOctet *) temp_0[3]).member2 = [[NSData alloc] initWithBytes:"Test3" length:5];
+            temp_0[3] = [[MTRUnitTestingClusterTestListStructOctet alloc] init];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[3]).member1 = [NSNumber numberWithUnsignedLongLong:3ULL];
+            ((MTRUnitTestingClusterTestListStructOctet *) temp_0[3]).member2 = [[NSData alloc] initWithBytes:"Test3" length:5];
 
             listStructOctetStringArgument = temp_0;
         }
@@ -79794,7 +79794,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListWithListOfListStructOctetString_176()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79807,17 +79807,17 @@ class TestCluster : public TestCommandBridge {
             {
                 id actualValue = value;
                 VerifyOrReturn(CheckValue("list_struct_octet_string", [actualValue count], static_cast(4)));
-                VerifyOrReturn(CheckValue("member1", ((MTRTestClusterClusterTestListStructOctet *) actualValue[0]).member1, 0ULL));
-                VerifyOrReturn(CheckValueAsString("member2", ((MTRTestClusterClusterTestListStructOctet *) actualValue[0]).member2,
+                VerifyOrReturn(CheckValue("member1", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[0]).member1, 0ULL));
+                VerifyOrReturn(CheckValueAsString("member2", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[0]).member2,
                     [[NSData alloc] initWithBytes:"Test0" length:5]));
-                VerifyOrReturn(CheckValue("member1", ((MTRTestClusterClusterTestListStructOctet *) actualValue[1]).member1, 1ULL));
-                VerifyOrReturn(CheckValueAsString("member2", ((MTRTestClusterClusterTestListStructOctet *) actualValue[1]).member2,
+                VerifyOrReturn(CheckValue("member1", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[1]).member1, 1ULL));
+                VerifyOrReturn(CheckValueAsString("member2", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[1]).member2,
                     [[NSData alloc] initWithBytes:"Test1" length:5]));
-                VerifyOrReturn(CheckValue("member1", ((MTRTestClusterClusterTestListStructOctet *) actualValue[2]).member1, 2ULL));
-                VerifyOrReturn(CheckValueAsString("member2", ((MTRTestClusterClusterTestListStructOctet *) actualValue[2]).member2,
+                VerifyOrReturn(CheckValue("member1", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[2]).member1, 2ULL));
+                VerifyOrReturn(CheckValueAsString("member2", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[2]).member2,
                     [[NSData alloc] initWithBytes:"Test2" length:5]));
-                VerifyOrReturn(CheckValue("member1", ((MTRTestClusterClusterTestListStructOctet *) actualValue[3]).member1, 3ULL));
-                VerifyOrReturn(CheckValueAsString("member2", ((MTRTestClusterClusterTestListStructOctet *) actualValue[3]).member2,
+                VerifyOrReturn(CheckValue("member1", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[3]).member1, 3ULL));
+                VerifyOrReturn(CheckValueAsString("member2", ((MTRUnitTestingClusterTestListStructOctet *) actualValue[3]).member2,
                     [[NSData alloc] initWithBytes:"Test3" length:5]));
             }
 
@@ -79830,15 +79830,15 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithOptionalArgSet_177()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNullableOptionalRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNullableOptionalRequestParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:5U];
         [cluster testNullableOptionalRequestWithParams:params
-                                            completion:^(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable values,
+                                            completion:^(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable values,
                                                 NSError * _Nullable err) {
                                                 NSLog(@"Send Test Command with optional arg set. Error: %@", err);
 
@@ -79874,14 +79874,14 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendTestCommandWithoutItsOptionalArg_178()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestNullableOptionalRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestNullableOptionalRequestParams alloc] init];
         [cluster testNullableOptionalRequestWithParams:params
-                                            completion:^(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable values,
+                                            completion:^(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable values,
                                                 NSError * _Nullable err) {
                                                 NSLog(@"Send Test Command without its optional arg. Error: %@", err);
 
@@ -79901,7 +79901,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadListOfStructsContainingNullablesAndOptionals_179()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79915,13 +79915,13 @@ class TestCluster : public TestCommandBridge {
                 id actualValue = value;
                 VerifyOrReturn(CheckValue("list_nullables_and_optionals_struct", [actualValue count], static_cast(1)));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableInt", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableInt));
+                    "NullableInt", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableInt));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableString", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableString));
+                    "NullableString", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableString));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableStruct", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableStruct));
+                    "NullableStruct", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableStruct));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableList", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList));
+                    "NullableList", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList));
             }
 
             NextTest();
@@ -79933,7 +79933,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteListOfStructsContainingNullablesAndOptionals_180()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79941,15 +79941,15 @@ class TestCluster : public TestCommandBridge {
         id listNullablesAndOptionalsStructArgument;
         {
             NSMutableArray * temp_0 = [[NSMutableArray alloc] init];
-            temp_0[0] = [[MTRTestClusterClusterNullablesAndOptionalsStruct alloc] init];
-            ((MTRTestClusterClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableInt = nil;
-            ((MTRTestClusterClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableString = nil;
-            ((MTRTestClusterClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableStruct = nil;
+            temp_0[0] = [[MTRUnitTestingClusterNullablesAndOptionalsStruct alloc] init];
+            ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableInt = nil;
+            ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableString = nil;
+            ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableStruct = nil;
             {
                 NSMutableArray * temp_3 = [[NSMutableArray alloc] init];
                 temp_3[0] = [NSNumber numberWithUnsignedChar:1U];
                 temp_3[1] = [NSNumber numberWithUnsignedChar:2U];
-                ((MTRTestClusterClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableList = temp_3;
+                ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) temp_0[0]).nullableList = temp_3;
             }
 
             listNullablesAndOptionalsStructArgument = temp_0;
@@ -79971,7 +79971,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadListOfStructsContainingNullablesAndOptionalsAfterWriting_181()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -79985,20 +79985,20 @@ class TestCluster : public TestCommandBridge {
                 id actualValue = value;
                 VerifyOrReturn(CheckValue("list_nullables_and_optionals_struct", [actualValue count], static_cast(1)));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableInt", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableInt));
+                    "NullableInt", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableInt));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableString", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableString));
+                    "NullableString", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableString));
                 VerifyOrReturn(CheckValueNull(
-                    "NullableStruct", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableStruct));
+                    "NullableStruct", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableStruct));
                 VerifyOrReturn(CheckValueNonNull(
-                    "NullableList", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList));
+                    "NullableList", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList));
                 VerifyOrReturn(CheckValue("NullableList",
-                    [((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList count],
+                    [((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList count],
                     static_cast(2)));
                 VerifyOrReturn(
-                    CheckValue("", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList[0], 1U));
+                    CheckValue("", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList[0], 1U));
                 VerifyOrReturn(
-                    CheckValue("", ((MTRTestClusterClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList[1], 2U));
+                    CheckValue("", ((MTRUnitTestingClusterNullablesAndOptionalsStruct *) actualValue[0]).nullableList[1], 2U));
             }
 
             NextTest();
@@ -80010,7 +80010,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBooleanNull_182()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80033,7 +80033,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBooleanNull_183()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80060,7 +80060,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBooleanTrue_184()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80082,7 +80082,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBooleanTrue_185()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80107,7 +80107,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBooleanNotNull_186()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80130,7 +80130,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap8MaxValue_187()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80152,7 +80152,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap8MaxValue_188()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80177,7 +80177,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap8InvalidValue_189()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80204,7 +80204,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap8UnchangedValue_190()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80232,7 +80232,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap8NullValue_191()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80254,7 +80254,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap8NullValue_192()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80278,7 +80278,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap8Not254Value_193()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80301,7 +80301,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap16MaxValue_194()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80323,7 +80323,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap16MaxValue_195()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80348,7 +80348,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap16InvalidValue_196()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80374,7 +80374,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap16UnchangedValue_197()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80399,7 +80399,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap16NullValue_198()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80421,7 +80421,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap16NullValue_199()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80445,7 +80445,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap32MaxValue_200()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80467,7 +80467,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap32MaxValue_201()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80492,7 +80492,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap32InvalidValue_202()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80518,7 +80518,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap32UnchangedValue_203()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80543,7 +80543,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap32NullValue_204()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80565,7 +80565,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap32NullValue_205()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80589,7 +80589,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap64MaxValue_206()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80611,7 +80611,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap64MaxValue_207()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80636,7 +80636,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap64InvalidValue_208()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80662,7 +80662,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap64UnchangedValue_209()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80687,7 +80687,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableBitmap64NullValue_210()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80709,7 +80709,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableBitmap64NullValue_211()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80733,7 +80733,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8uMinValue_212()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80755,7 +80755,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uMinValue_213()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80780,7 +80780,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8uMaxValue_214()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80802,7 +80802,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uMaxValue_215()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80827,7 +80827,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8uInvalidValue_216()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80853,7 +80853,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uUnchangedValue_217()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80878,7 +80878,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uUnchangedValueWithConstraint_218()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80901,7 +80901,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8uNullValue_219()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80923,7 +80923,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uNullValue_220()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80947,7 +80947,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uNullValueRange_221()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80972,7 +80972,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uNullValueNot_222()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -80995,7 +80995,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8uValue_223()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81017,7 +81017,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uValueInRange_224()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81042,7 +81042,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8uNotValueOk_225()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81065,7 +81065,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16uMinValue_226()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81087,7 +81087,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uMinValue_227()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81112,7 +81112,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16uMaxValue_228()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81134,7 +81134,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uMaxValue_229()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81159,7 +81159,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16uInvalidValue_230()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81185,7 +81185,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uUnchangedValue_231()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81210,7 +81210,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16uNullValue_232()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81232,7 +81232,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uNullValue_233()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81256,7 +81256,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uNullValueRange_234()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81281,7 +81281,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uNullValueNot_235()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81304,7 +81304,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16uValue_236()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81326,7 +81326,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uValueInRange_237()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81351,7 +81351,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16uNotValueOk_238()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81374,7 +81374,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32uMinValue_239()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81396,7 +81396,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uMinValue_240()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81421,7 +81421,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32uMaxValue_241()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81443,7 +81443,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uMaxValue_242()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81468,7 +81468,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32uInvalidValue_243()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81494,7 +81494,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uUnchangedValue_244()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81519,7 +81519,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32uNullValue_245()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81541,7 +81541,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uNullValue_246()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81565,7 +81565,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uNullValueRange_247()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81590,7 +81590,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uNullValueNot_248()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81613,7 +81613,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32uValue_249()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81635,7 +81635,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uValueInRange_250()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81660,7 +81660,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32uNotValueOk_251()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81683,7 +81683,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64uMinValue_252()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81705,7 +81705,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uMinValue_253()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81730,7 +81730,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64uMaxValue_254()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81752,7 +81752,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uMaxValue_255()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81777,7 +81777,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64uInvalidValue_256()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81803,7 +81803,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uUnchangedValue_257()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81828,7 +81828,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64uNullValue_258()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81850,7 +81850,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uNullValue_259()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81874,7 +81874,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uNullValueRange_260()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81900,7 +81900,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uNullValueNot_261()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81923,7 +81923,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64uValue_262()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81945,7 +81945,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uValueInRange_263()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81971,7 +81971,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64uNotValueOk_264()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -81994,7 +81994,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8sMinValue_265()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82016,7 +82016,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sMinValue_266()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82041,7 +82041,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8sInvalidValue_267()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82067,7 +82067,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sUnchangedValue_268()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82092,7 +82092,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8sNullValue_269()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82114,7 +82114,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sNullValue_270()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82138,7 +82138,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sNullValueRange_271()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82163,7 +82163,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sNullValueNot_272()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82186,7 +82186,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt8sValue_273()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82208,7 +82208,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sValueInRange_274()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82233,7 +82233,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt8sNotValueOk_275()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82256,7 +82256,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16sMinValue_276()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82278,7 +82278,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sMinValue_277()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82303,7 +82303,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16sInvalidValue_278()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82329,7 +82329,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sUnchangedValue_279()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82354,7 +82354,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16sNullValue_280()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82376,7 +82376,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sNullValue_281()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82400,7 +82400,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sNullValueRange_282()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82425,7 +82425,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sNullValueNot_283()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82448,7 +82448,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt16sValue_284()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82470,7 +82470,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sValueInRange_285()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82495,7 +82495,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt16sNotValueOk_286()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82518,7 +82518,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32sMinValue_287()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82540,7 +82540,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sMinValue_288()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82565,7 +82565,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32sInvalidValue_289()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82591,7 +82591,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sUnchangedValue_290()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82616,7 +82616,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32sNullValue_291()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82638,7 +82638,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sNullValue_292()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82662,7 +82662,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sNullValueRange_293()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82687,7 +82687,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sNullValueNot_294()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82710,7 +82710,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt32sValue_295()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82732,7 +82732,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sValueInRange_296()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82757,7 +82757,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt32sNotValueOk_297()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82780,7 +82780,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64sMinValue_298()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82802,7 +82802,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sMinValue_299()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82827,7 +82827,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64sInvalidValue_300()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82853,7 +82853,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sUnchangedValue_301()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82878,7 +82878,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64sNullValue_302()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82900,7 +82900,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sNullValue_303()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82924,7 +82924,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sNullValueRange_304()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82949,7 +82949,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sNullValueNot_305()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82972,7 +82972,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableInt64sValue_306()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -82994,7 +82994,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sValueInRange_307()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83019,7 +83019,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableInt64sNotValueOk_308()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83042,7 +83042,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSingleMediumValue_309()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83064,7 +83064,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSingleMediumValue_310()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83089,7 +83089,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSingleLargestValue_311()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83111,7 +83111,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSingleLargestValue_312()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83136,7 +83136,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSingleSmallestValue_313()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83158,7 +83158,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSingleSmallestValue_314()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83183,7 +83183,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSingleNullValue_315()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83205,7 +83205,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSingleNullValue_316()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83229,7 +83229,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSingle0Value_317()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83251,7 +83251,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSingle0Value_318()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83276,7 +83276,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableDoubleMediumValue_319()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83298,7 +83298,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableDoubleMediumValue_320()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83323,7 +83323,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableDoubleLargestValue_321()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83345,7 +83345,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableDoubleLargestValue_322()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83370,7 +83370,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableDoubleSmallestValue_323()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83392,7 +83392,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableDoubleSmallestValue_324()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83417,7 +83417,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableDoubleNullValue_325()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83439,7 +83439,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableDoubleNullValue_326()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83463,7 +83463,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableDouble0Value_327()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83485,7 +83485,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableDouble0Value_328()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83510,7 +83510,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum8MinValue_329()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83532,7 +83532,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum8MinValue_330()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83557,7 +83557,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum8MaxValue_331()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83579,7 +83579,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum8MaxValue_332()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83604,7 +83604,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum8InvalidValue_333()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83630,7 +83630,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum8UnchangedValue_334()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83655,7 +83655,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum8NullValue_335()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83677,7 +83677,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum8NullValue_336()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83701,7 +83701,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum16MinValue_337()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83723,7 +83723,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum16MinValue_338()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83748,7 +83748,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum16MaxValue_339()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83770,7 +83770,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum16MaxValue_340()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83795,7 +83795,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum16InvalidValue_341()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83821,7 +83821,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum16UnchangedValue_342()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83846,7 +83846,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableEnum16NullValue_343()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83868,7 +83868,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableEnum16NullValue_344()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83892,7 +83892,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSimpleEnumMinValue_345()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83914,7 +83914,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSimpleEnumMinValue_346()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83939,7 +83939,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSimpleEnumMaxValue_347()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83961,7 +83961,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSimpleEnumMaxValue_348()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -83986,7 +83986,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSimpleEnumInvalidValue_349()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84013,7 +84013,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSimpleEnumUnchangedValue_350()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84041,7 +84041,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableSimpleEnumNullValue_351()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84063,7 +84063,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSimpleEnumNullValue_352()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84087,7 +84087,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableSimpleEnumNot3Value_353()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84110,7 +84110,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableOctetStringDefaultValue_354()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84136,7 +84136,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableOctetString_355()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84159,7 +84159,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableOctetString_356()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84188,7 +84188,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableOctetString_357()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84210,7 +84210,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableOctetString_358()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84234,7 +84234,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableOctetString_359()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84256,7 +84256,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableOctetString_360()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84282,7 +84282,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableOctetStringNotTestValue_361()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84305,7 +84305,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharStringDefaultValue_362()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84330,7 +84330,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableCharString_363()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84353,7 +84353,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharString_364()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84381,7 +84381,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharString_365()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84410,7 +84410,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableCharStringValueTooLong_366()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84432,7 +84432,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharString_367()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84456,7 +84456,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeNullableCharStringEmpty_368()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84478,7 +84478,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharString_369()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84503,7 +84503,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeNullableCharStringNott_370()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84526,7 +84526,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeFromNonexistentEndpoint_371()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(200)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84546,7 +84546,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeFromNonexistentCluster_372()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(0)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84566,12 +84566,12 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendACommandThatTakesAnOptionalParameterButDoNotSetIt_373()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams alloc] init];
         [cluster testSimpleOptionalArgumentRequestWithParams:params
                                                   completion:^(NSError * _Nullable err) {
                                                       NSLog(@"Send a command that takes an optional parameter but do not set it. "
@@ -84593,12 +84593,12 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSendACommandThatTakesAnOptionalParameterButDoNotSetIt_374()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams alloc] init];
         params.arg1 = [NSNumber numberWithBool:1];
         [cluster testSimpleOptionalArgumentRequestWithParams:params
                                                   completion:^(NSError * _Nullable err) {
@@ -84619,7 +84619,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReportSubscribeToListAttribute_375()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84648,7 +84648,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestSubscribeToListAttribute_376()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84682,7 +84682,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteSubscribedToListAttribute_377()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84711,7 +84711,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestCheckForListAttributeReport_378()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84739,7 +84739,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadRangeRestrictedUnsigned8BitInteger_379()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84763,7 +84763,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToARangeRestrictedUnsigned8BitInteger_380()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84791,7 +84791,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToARangeRestrictedUnsigned8BitInteger_381()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84819,7 +84819,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToARangeRestrictedUnsigned8BitInteger_382()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84847,7 +84847,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToARangeRestrictedUnsigned8BitInteger_383()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84875,7 +84875,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned8BitIntegerValueHasNotChanged_384()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84899,7 +84899,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToARangeRestrictedUnsigned8BitInteger_385()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84923,7 +84923,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned8BitIntegerValueIsAtMinValid_386()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84947,7 +84947,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToARangeRestrictedUnsigned8BitInteger_387()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84971,7 +84971,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned8BitIntegerValueIsAtMaxValid_388()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -84995,7 +84995,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToARangeRestrictedUnsigned8BitInteger_389()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85019,7 +85019,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned8BitIntegerValueIsAtMidValid_390()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85043,7 +85043,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadRangeRestrictedUnsigned16BitInteger_391()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85067,7 +85067,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToARangeRestrictedUnsigned16BitInteger_392()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85095,7 +85095,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToARangeRestrictedUnsigned16BitInteger_393()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85123,7 +85123,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToARangeRestrictedUnsigned16BitInteger_394()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85151,7 +85151,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToARangeRestrictedUnsigned16BitInteger_395()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85179,7 +85179,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned16BitIntegerValueHasNotChanged_396()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85203,7 +85203,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToARangeRestrictedUnsigned16BitInteger_397()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85227,7 +85227,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned16BitIntegerValueIsAtMinValid_398()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85251,7 +85251,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToARangeRestrictedUnsigned16BitInteger_399()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85275,7 +85275,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned16BitIntegerValueIsAtMaxValid_400()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85299,7 +85299,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToARangeRestrictedUnsigned16BitInteger_401()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85323,7 +85323,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedUnsigned16BitIntegerValueIsAtMidValid_402()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85347,7 +85347,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadRangeRestrictedSigned8BitInteger_403()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85371,7 +85371,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToARangeRestrictedSigned8BitInteger_404()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85398,7 +85398,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToARangeRestrictedSigned8BitInteger_405()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85426,7 +85426,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToARangeRestrictedSigned8BitInteger_406()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85454,7 +85454,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToARangeRestrictedSigned8BitInteger_407()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85481,7 +85481,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned8BitIntegerValueHasNotChanged_408()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85505,7 +85505,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToARangeRestrictedSigned8BitInteger_409()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85530,7 +85530,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned8BitIntegerValueIsAtMinValid_410()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85554,7 +85554,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToARangeRestrictedSigned8BitInteger_411()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85579,7 +85579,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned8BitIntegerValueIsAtMaxValid_412()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85603,7 +85603,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToARangeRestrictedSigned8BitInteger_413()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85627,7 +85627,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned8BitIntegerValueIsAtMidValid_414()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85651,7 +85651,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadRangeRestrictedSigned16BitInteger_415()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85675,7 +85675,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToARangeRestrictedSigned16BitInteger_416()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85703,7 +85703,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToARangeRestrictedSigned16BitInteger_417()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85731,7 +85731,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToARangeRestrictedSigned16BitInteger_418()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85759,7 +85759,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToARangeRestrictedSigned16BitInteger_419()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85787,7 +85787,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned16BitIntegerValueHasNotChanged_420()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85811,7 +85811,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToARangeRestrictedSigned16BitInteger_421()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85835,7 +85835,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned16BitIntegerValueIsAtMinValid_422()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85859,7 +85859,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToARangeRestrictedSigned16BitInteger_423()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85883,7 +85883,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned16BitIntegerValueIsAtMaxValid_424()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85907,7 +85907,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToARangeRestrictedSigned16BitInteger_425()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85931,7 +85931,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyRangeRestrictedSigned16BitIntegerValueIsAtMidValid_426()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85955,7 +85955,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadNullableRangeRestrictedUnsigned8BitInteger_427()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -85980,7 +85980,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToANullableRangeRestrictedUnsigned8BitInteger_428()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86008,7 +86008,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToANullableRangeRestrictedUnsigned8BitInteger_429()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86036,7 +86036,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToANullableRangeRestrictedUnsigned8BitInteger_430()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86064,7 +86064,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToANullableRangeRestrictedUnsigned8BitInteger_431()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86092,7 +86092,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned8BitIntegerValueHasNotChanged_432()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86117,7 +86117,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToANullableRangeRestrictedUnsigned8BitInteger_433()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86141,7 +86141,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned8BitIntegerValueIsAtMinValid_434()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86166,7 +86166,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToANullableRangeRestrictedUnsigned8BitInteger_435()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86190,7 +86190,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned8BitIntegerValueIsAtMaxValid_436()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86215,7 +86215,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToANullableRangeRestrictedUnsigned8BitInteger_437()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86239,7 +86239,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned8BitIntegerValueIsAtMidValid_438()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86264,7 +86264,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteNullValueToANullableRangeRestrictedUnsigned8BitInteger_439()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86288,7 +86288,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned8BitIntegerValueIsNull_440()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86312,7 +86312,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadNullableRangeRestrictedUnsigned16BitInteger_441()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86337,7 +86337,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToANullableRangeRestrictedUnsigned16BitInteger_442()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86365,7 +86365,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToANullableRangeRestrictedUnsigned16BitInteger_443()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86393,7 +86393,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToANullableRangeRestrictedUnsigned16BitInteger_444()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86421,7 +86421,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToANullableRangeRestrictedUnsigned16BitInteger_445()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86449,7 +86449,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned16BitIntegerValueHasNotChanged_446()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86474,7 +86474,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToANullableRangeRestrictedUnsigned16BitInteger_447()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86498,7 +86498,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned16BitIntegerValueIsAtMinValid_448()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86523,7 +86523,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToANullableRangeRestrictedUnsigned16BitInteger_449()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86547,7 +86547,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned16BitIntegerValueIsAtMaxValid_450()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86572,7 +86572,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToANullableRangeRestrictedUnsigned16BitInteger_451()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86596,7 +86596,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned16BitIntegerValueIsAtMidValid_452()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86621,7 +86621,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteNullValueToANullableRangeRestrictedUnsigned16BitInteger_453()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86645,7 +86645,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedUnsigned16BitIntegerValueIsNull_454()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86669,7 +86669,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadNullableRangeRestrictedSigned8BitInteger_455()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86694,7 +86694,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToANullableRangeRestrictedSigned8BitInteger_456()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86722,7 +86722,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToANullableRangeRestrictedSigned8BitInteger_457()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86750,7 +86750,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToANullableRangeRestrictedSigned8BitInteger_458()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86778,7 +86778,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToANullableRangeRestrictedSigned8BitInteger_459()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86806,7 +86806,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned8BitIntegerValueHasNotChanged_460()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86831,7 +86831,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToANullableRangeRestrictedSigned8BitInteger_461()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86855,7 +86855,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned8BitIntegerValueIsAtMinValid_462()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86880,7 +86880,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToANullableRangeRestrictedSigned8BitInteger_463()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86904,7 +86904,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned8BitIntegerValueIsAtMaxValid_464()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86929,7 +86929,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToANullableRangeRestrictedSigned8BitInteger_465()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86953,7 +86953,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned8BitIntegerValueIsAtMidValid_466()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -86978,7 +86978,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteNullValueToANullableRangeRestrictedSigned8BitInteger_467()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87002,7 +87002,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned8BitIntegerValueIsAtNull_468()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87026,7 +87026,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadNullableRangeRestrictedSigned16BitInteger_469()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87051,7 +87051,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValueToANullableRangeRestrictedSigned16BitInteger_470()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87079,7 +87079,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustBelowRangeValueToANullableRangeRestrictedSigned16BitInteger_471()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87107,7 +87107,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteJustAboveRangeValueToANullableRangeRestrictedSigned16BitInteger_472()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87135,7 +87135,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValueToANullableRangeRestrictedSigned16BitInteger_473()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87163,7 +87163,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned16BitIntegerValueHasNotChanged_474()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87188,7 +87188,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMinValidValueToANullableRangeRestrictedSigned16BitInteger_475()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87212,7 +87212,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned16BitIntegerValueIsAtMinValid_476()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87237,7 +87237,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMaxValidValueToANullableRangeRestrictedSigned16BitInteger_477()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87261,7 +87261,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned16BitIntegerValueIsAtMaxValid_478()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87286,7 +87286,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteMiddleValidValueToANullableRangeRestrictedSigned16BitInteger_479()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87310,7 +87310,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned16BitIntegerValueIsAtMidValid_480()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87335,7 +87335,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteNullValueToANullableRangeRestrictedSigned16BitInteger_481()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87359,7 +87359,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestVerifyNullableRangeRestrictedSigned16BitIntegerValueIsNull_482()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87383,7 +87383,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeThatReturnsGeneralStatusOnWrite_483()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87409,7 +87409,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeThatReturnsClusterSpecificStatusOnWrite_484()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87437,7 +87437,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeThatReturnsGeneralStatusOnRead_485()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87457,7 +87457,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeThatReturnsClusterSpecificStatusOnRead_486()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87477,7 +87477,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadAcceptedCommandListAttribute_487()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87519,7 +87519,7 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadGeneratedCommandListAttribute_488()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87552,21 +87552,21 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestWriteStructTypedAttribute_489()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id structAttrArgument;
-        structAttrArgument = [[MTRTestClusterClusterSimpleStruct alloc] init];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).a = [NSNumber numberWithUnsignedChar:5U];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).b = [NSNumber numberWithBool:true];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).c = [NSNumber numberWithUnsignedChar:2U];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).d = [[NSData alloc] initWithBytes:"abc" length:3];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).e = @"";
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).f = [NSNumber numberWithUnsignedChar:17U];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).g = [NSNumber numberWithFloat:1.5f];
-        ((MTRTestClusterClusterSimpleStruct *) structAttrArgument).h = [NSNumber numberWithDouble:3.14159265358979];
+        structAttrArgument = [[MTRUnitTestingClusterSimpleStruct alloc] init];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).a = [NSNumber numberWithUnsignedChar:5U];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).b = [NSNumber numberWithBool:true];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).c = [NSNumber numberWithUnsignedChar:2U];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).d = [[NSData alloc] initWithBytes:"abc" length:3];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).e = @"";
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).f = [NSNumber numberWithUnsignedChar:17U];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).g = [NSNumber numberWithFloat:1.5f];
+        ((MTRUnitTestingClusterSimpleStruct *) structAttrArgument).h = [NSNumber numberWithDouble:3.14159265358979];
 
         [cluster writeAttributeStructAttrWithValue:structAttrArgument
                                         completion:^(NSError * _Nullable err) {
@@ -87583,28 +87583,28 @@ class TestCluster : public TestCommandBridge {
     CHIP_ERROR TestReadStructTypedAttribute_490()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster
-            readAttributeStructAttrWithCompletion:^(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable err) {
+            readAttributeStructAttrWithCompletion:^(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable err) {
                 NSLog(@"Read struct-typed attribute Error: %@", err);
 
                 VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0));
 
                 {
                     id actualValue = value;
-                    VerifyOrReturn(CheckValue("a", ((MTRTestClusterClusterSimpleStruct *) actualValue).a, 5U));
-                    VerifyOrReturn(CheckValue("b", ((MTRTestClusterClusterSimpleStruct *) actualValue).b, true));
-                    VerifyOrReturn(CheckValue("c", ((MTRTestClusterClusterSimpleStruct *) actualValue).c, 2U));
+                    VerifyOrReturn(CheckValue("a", ((MTRUnitTestingClusterSimpleStruct *) actualValue).a, 5U));
+                    VerifyOrReturn(CheckValue("b", ((MTRUnitTestingClusterSimpleStruct *) actualValue).b, true));
+                    VerifyOrReturn(CheckValue("c", ((MTRUnitTestingClusterSimpleStruct *) actualValue).c, 2U));
                     VerifyOrReturn(CheckValueAsString(
-                        "d", ((MTRTestClusterClusterSimpleStruct *) actualValue).d, [[NSData alloc] initWithBytes:"abc" length:3]));
-                    VerifyOrReturn(CheckValueAsString("e", ((MTRTestClusterClusterSimpleStruct *) actualValue).e, @""));
-                    VerifyOrReturn(CheckValue("f", ((MTRTestClusterClusterSimpleStruct *) actualValue).f, 17U));
-                    VerifyOrReturn(CheckValue("g", ((MTRTestClusterClusterSimpleStruct *) actualValue).g, 1.5f));
-                    VerifyOrReturn(CheckValue("h", ((MTRTestClusterClusterSimpleStruct *) actualValue).h, 3.14159265358979));
+                        "d", ((MTRUnitTestingClusterSimpleStruct *) actualValue).d, [[NSData alloc] initWithBytes:"abc" length:3]));
+                    VerifyOrReturn(CheckValueAsString("e", ((MTRUnitTestingClusterSimpleStruct *) actualValue).e, @""));
+                    VerifyOrReturn(CheckValue("f", ((MTRUnitTestingClusterSimpleStruct *) actualValue).f, 17U));
+                    VerifyOrReturn(CheckValue("g", ((MTRUnitTestingClusterSimpleStruct *) actualValue).g, 1.5f));
+                    VerifyOrReturn(CheckValue("h", ((MTRUnitTestingClusterSimpleStruct *) actualValue).h, 3.14159265358979));
                 }
 
                 NextTest();
@@ -87926,7 +87926,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListWithListOfInt8u_1()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87955,7 +87955,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListWithPartialListOfInt8uThatShouldBeInIt_2()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -87978,7 +87978,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeListWithPartialListOfInt8uThatShouldNotBeIncluded_3()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88000,7 +88000,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeListBackToDefaultValue_4()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88025,7 +88025,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32DefaultValue_5()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88049,7 +88049,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap32WithMaskVal1AndMaskVal3_6()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88071,7 +88071,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32WithMaskVal1AndMaskVal3AndEnsureMaskVal2IsNotSet_7()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88095,7 +88095,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32WithMaskVal1AndMaskVal3AndEnsureMaskVal1IsSet_8()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88119,7 +88119,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32WithMaskVal1AndMaskVal3AndEnsureMaskVal3IsSet_9()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88143,7 +88143,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32WithMaskVal1AndMaskVal3AndEnsureMaskval1AndMaskVal3AreSet_10()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88167,7 +88167,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uValue_11()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88189,7 +88189,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uValueMinValueConstraints_12()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88210,7 +88210,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uValueMaxValueConstraints_13()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88231,7 +88231,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uValueNotValueConstraints_14()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88252,7 +88252,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uValueBackToDefaultValue_15()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88274,7 +88274,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_16()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88296,7 +88296,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueMinLengthConstraints_17()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88316,7 +88316,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueMaxLengthConstraints_18()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88336,7 +88336,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueStartsWithConstraints_19()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88356,7 +88356,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueEndsWithConstraints_20()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88376,7 +88376,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_21()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88398,7 +88398,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueIsLowerCaseIsUpperCaseConstraints_22()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88419,7 +88419,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_23()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88441,7 +88441,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueIsLowerCaseIsUpperCaseConstraints_24()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88462,7 +88462,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_25()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88484,7 +88484,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueIsLowerCaseIsUpperCaseConstraints_26()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88505,7 +88505,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_27()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88527,7 +88527,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueIsHexStringConstraints_28()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88547,7 +88547,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValue_29()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88569,7 +88569,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringValueIsHexStringConstraints_30()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -88589,7 +88589,7 @@ class TestConstraints : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringValueBackToDefaultValue_31()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89675,16 +89675,16 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_1()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:3U];
         params.arg2 = [NSNumber numberWithUnsignedChar:17U];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 
@@ -89707,16 +89707,16 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_2()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:3U];
         params.arg2 = [NSNumber numberWithUnsignedChar:17U];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 
@@ -89736,16 +89736,16 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_3()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:3U];
         params.arg2 = [TestAddArgumentDefaultValue copy];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 
@@ -89764,7 +89764,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanDefaultValue_4()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89791,7 +89791,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBooleanNotDefaultValue_5()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89813,7 +89813,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanNotDefaultValue_6()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89834,7 +89834,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBooleanDefaultValue_7()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89856,7 +89856,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBooleanFalse_8()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89881,7 +89881,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8DefaultValue_9()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89908,7 +89908,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap8NotDefaultValue_10()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89930,7 +89930,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8NotDefaultValue_11()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89951,7 +89951,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap8DefaultValue_12()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89973,7 +89973,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap8DefaultValue_13()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -89998,7 +89998,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16DefaultValue_14()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90025,7 +90025,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap16NotDefaultValue_15()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90047,7 +90047,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16NotDefaultValue_16()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90068,7 +90068,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap16DefaultValue_17()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90090,7 +90090,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap16DefaultValue_18()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90115,7 +90115,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32DefaultValue_19()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90142,7 +90142,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap32NotDefaultValue_20()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90164,7 +90164,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32NotDefaultValue_21()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90185,7 +90185,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap32DefaultValue_22()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90207,7 +90207,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap32DefaultValue_23()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90232,7 +90232,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64DefaultValue_24()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90259,7 +90259,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap64NotDefaultValue_25()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90281,7 +90281,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64DefaultValue_26()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90302,7 +90302,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeBitmap64DefaultValue_27()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90324,7 +90324,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeBitmap64DefaultValue_28()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90349,7 +90349,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uDefaultValue_29()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90376,7 +90376,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8uNotDefaultValue_30()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90398,7 +90398,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uNotDefaultValue_31()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90419,7 +90419,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8uDefaultValue_32()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90441,7 +90441,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8uDefaultValue_33()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90466,7 +90466,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uDefaultValue_34()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90493,7 +90493,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16uNotDefaultValue_35()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90515,7 +90515,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uNotDefaultValue_36()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90536,7 +90536,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16uDefaultValue_37()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90558,7 +90558,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16uDefaultValue_38()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90583,7 +90583,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uDefaultValue_39()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90610,7 +90610,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uNotDefaultValue_40()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90632,7 +90632,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uNotDefaultValue_41()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90653,7 +90653,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32uDefaultValue_42()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90675,7 +90675,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32uDefaultValue_43()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90700,7 +90700,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uDefaultValue_44()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90727,7 +90727,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64uNotDefaultValue_45()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90749,7 +90749,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uNotDefaultValue_46()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90770,7 +90770,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64uDefaultValue_47()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90792,7 +90792,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64uDefaultValue_48()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90817,7 +90817,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sDefaultValue_49()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90844,7 +90844,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8sNotDefaultValue_50()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90866,7 +90866,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sNotDefaultValue_51()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90887,7 +90887,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt8sDefaultValue_52()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90909,7 +90909,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt8sDefaultValue_53()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90934,7 +90934,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sDefaultValue_54()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90961,7 +90961,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16sNotDefaultValue_55()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -90983,7 +90983,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sNotDefaultValue_56()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91004,7 +91004,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt16sDefaultValue_57()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91026,7 +91026,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt16sDefaultValue_58()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91051,7 +91051,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sDefaultValue_59()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91078,7 +91078,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32sNotDefaultValue_60()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91100,7 +91100,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sNotDefaultValue_61()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91121,7 +91121,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt32sDefaultValue_62()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91143,7 +91143,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt32sDefaultValue_63()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91168,7 +91168,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sDefaultValue_64()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91195,7 +91195,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeIntsNotDefaultValue_65()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91217,7 +91217,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sNotDefaultValue_66()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91238,7 +91238,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeInt64sDefaultValue_67()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91260,7 +91260,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeInt64sDefaultValue_68()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91285,7 +91285,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8DefaultValue_69()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91312,7 +91312,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum8NotDefaultValue_70()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91334,7 +91334,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8NotDefaultValue_71()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91355,7 +91355,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum8DefaultValue_72()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91377,7 +91377,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum8DefaultValue_73()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91402,7 +91402,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16DefaultValue_74()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91429,7 +91429,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum16NotDefaultValue_75()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91451,7 +91451,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16NotDefaultValue_76()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91472,7 +91472,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEnum16DefaultValue_77()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91494,7 +91494,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEnum16DefaultValue_78()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91519,7 +91519,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsDefaultValue_79()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91546,7 +91546,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochUsNotDefaultValue_80()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91568,7 +91568,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsNotDefaultValue_81()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91589,7 +91589,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochUsDefaultValue_82()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91611,7 +91611,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochUsDefaultValue_83()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91636,7 +91636,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSDefaultValue_84()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91663,7 +91663,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochSNotDefaultValue_85()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91685,7 +91685,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSNotDefaultValue_86()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91706,7 +91706,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeEpochSDefaultValue_87()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91728,7 +91728,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeEpochSDefaultValue_88()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91753,7 +91753,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeVendorIdDefaultValue_89()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91780,7 +91780,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeVendorIdNotDefaultValue_90()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91802,7 +91802,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeVendorIdNotDefaultValue_91()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91823,7 +91823,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeVendorIdDefaultValue_92()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91845,7 +91845,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeVendorIdDefaultValue_93()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91870,7 +91870,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringDefaultValue_94()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91897,7 +91897,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringDefaultValueAndCompareToSavedValue_95()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91921,7 +91921,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringNotDefaultValue_96()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91944,7 +91944,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringNotDefaultValue_97()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91973,7 +91973,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringNotDefaultValueAndCompareToSavedValue_98()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -91999,7 +91999,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringNotDefaultValueFromSavedValue_99()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92021,7 +92021,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeCharStringNotDefaultValueAndCompareToExpectedValue_100()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92045,7 +92045,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeCharStringDefaultValue_101()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92068,7 +92068,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringDefaultValue_102()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92095,7 +92095,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringDefaultValueAndCompareToSavedValue_103()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92119,7 +92119,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringNotDefaultValue_104()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92142,7 +92142,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringNotDefaultValue_105()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92172,7 +92172,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringNotDefaultValueAndCompareToSavedValue_106()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92198,7 +92198,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringNotDefaultValueFromSavedValue_107()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92221,7 +92221,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestReadAttributeOctetStringNotDefaultValueAndCompareToExpectedValue_108()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92246,7 +92246,7 @@ class TestSaveAs : public TestCommandBridge {
     CHIP_ERROR TestWriteAttributeOctetStringDefaultValue_109()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
@@ -92371,16 +92371,16 @@ class TestConfigVariables : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_1()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = [NSNumber numberWithUnsignedChar:3U];
         params.arg2 = [NSNumber numberWithUnsignedChar:17U];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 
@@ -92403,16 +92403,16 @@ class TestConfigVariables : public TestCommandBridge {
     CHIP_ERROR TestSendTestAddArgumentsCommand_2()
     {
         MTRBaseDevice * device = GetDevice("alpha");
-        MTRBaseClusterTestCluster * cluster = [[MTRBaseClusterTestCluster alloc] initWithDevice:device
+        MTRBaseClusterUnitTesting * cluster = [[MTRBaseClusterUnitTesting alloc] initWithDevice:device
                                                                                      endpointID:@(1)
                                                                                           queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
-        __auto_type * params = [[MTRTestClusterClusterTestAddArgumentsParams alloc] init];
+        __auto_type * params = [[MTRUnitTestingClusterTestAddArgumentsParams alloc] init];
         params.arg1 = mArg1.HasValue() ? [NSNumber numberWithUnsignedChar:mArg1.Value()] : [NSNumber numberWithUnsignedChar:5U];
         params.arg2 = [TestAddArgumentDefaultValue copy];
         [cluster testAddArgumentsWithParams:params
-                                 completion:^(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable values,
+                                 completion:^(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable values,
                                      NSError * _Nullable err) {
                                      NSLog(@"Send Test Add Arguments Command Error: %@", err);
 

From 6519b91503b874f9037200ed80c789b9b4a962f2 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Tue, 15 Nov 2022 09:01:00 -0500
Subject: [PATCH 02/36] Update ZAP to tip. (#23601)

---
 third_party/zap/repo | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/zap/repo b/third_party/zap/repo
index 249fa1c522a78b..22a059d9e97278 160000
--- a/third_party/zap/repo
+++ b/third_party/zap/repo
@@ -1 +1 @@
-Subproject commit 249fa1c522a78bf2a7460cb074e0071edc97a5e1
+Subproject commit 22a059d9e97278094cdeb7ec8c8db63d17804e87

From 700ee0e0c9d715f15cbecbcac98981ee3c0658a7 Mon Sep 17 00:00:00 2001
From: Kamil Kasperczyk <66371704+kkasperczyk-no@users.noreply.github.com>
Date: Tue, 15 Nov 2022 19:38:02 +0100
Subject: [PATCH 03/36] [nrfconnect] Moved FlashHandler implementation to
 separate file (#23570)

The FlashHandler implementation was coupled with Matter
OTAImageProcessorImpl, what resulted with the fact that it was
not possible to use build other DFU mechanisms, like DFU over
BT SMP without Matter OTA enabled.

Summary of changes:
* Moved FlashHandler to separate file called ExternalFlashManager
* Added ifdefs to OTAUtil that prevents from building Matter OTA
dependencies while Matter OTA is disabled.
---
 .../nrfconnect/CMakeLists.txt                 |  2 +-
 .../nrfconnect/CMakeLists.txt                 |  2 +-
 .../nrfconnect/CMakeLists.txt                 |  2 +-
 .../lighting-app/nrfconnect/CMakeLists.txt    |  2 +-
 examples/lock-app/nrfconnect/CMakeLists.txt   |  2 +-
 .../platform/nrfconnect/util/DFUOverSMP.cpp   |  4 +-
 examples/platform/nrfconnect/util/OTAUtil.cpp | 21 +++++---
 .../nrfconnect/util/include/OTAUtil.h         | 21 +++++---
 examples/pump-app/nrfconnect/CMakeLists.txt   |  2 +-
 .../nrfconnect/CMakeLists.txt                 |  2 +-
 examples/window-app/nrfconnect/CMakeLists.txt |  2 +-
 src/platform/nrfconnect/BUILD.gn              |  1 +
 .../nrfconnect/ExternalFlashManager.h         | 51 +++++++++++++++++++
 .../nrfconnect/OTAImageProcessorImpl.cpp      | 22 ++------
 .../nrfconnect/OTAImageProcessorImpl.h        | 19 ++-----
 15 files changed, 97 insertions(+), 58 deletions(-)
 create mode 100644 src/platform/nrfconnect/ExternalFlashManager.h

diff --git a/examples/all-clusters-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-app/nrfconnect/CMakeLists.txt
index a70f92af2440c7..34a14486434256 100644
--- a/examples/all-clusters-app/nrfconnect/CMakeLists.txt
+++ b/examples/all-clusters-app/nrfconnect/CMakeLists.txt
@@ -68,7 +68,7 @@ chip_configure_data_model(app
     ZAP_FILE ${ALL_CLUSTERS_COMMON_DIR}/all-clusters-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt b/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt
index d1bc3092977a05..cdff02ee1dedb8 100644
--- a/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt
+++ b/examples/all-clusters-minimal-app/nrfconnect/CMakeLists.txt
@@ -67,7 +67,7 @@ chip_configure_data_model(app
     ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../all-clusters-common/all-clusters-minimal-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/light-switch-app/nrfconnect/CMakeLists.txt b/examples/light-switch-app/nrfconnect/CMakeLists.txt
index 3a0084efa79c42..0304f21a9ed3ad 100644
--- a/examples/light-switch-app/nrfconnect/CMakeLists.txt
+++ b/examples/light-switch-app/nrfconnect/CMakeLists.txt
@@ -63,7 +63,7 @@ target_sources(app PRIVATE
                ${NRFCONNECT_COMMON}/util/LEDWidget.cpp)
 
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/lighting-app/nrfconnect/CMakeLists.txt b/examples/lighting-app/nrfconnect/CMakeLists.txt
index 5c813e69c8768e..59c9cf219a62ac 100644
--- a/examples/lighting-app/nrfconnect/CMakeLists.txt
+++ b/examples/lighting-app/nrfconnect/CMakeLists.txt
@@ -69,7 +69,7 @@ chip_configure_data_model(app
     GEN_DIR ${GEN_DIR}/lighting-app/zap-generated
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/lock-app/nrfconnect/CMakeLists.txt b/examples/lock-app/nrfconnect/CMakeLists.txt
index 3581d05438e9c2..d60d050d31c91e 100644
--- a/examples/lock-app/nrfconnect/CMakeLists.txt
+++ b/examples/lock-app/nrfconnect/CMakeLists.txt
@@ -65,7 +65,7 @@ chip_configure_data_model(app
     ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../lock-common/lock-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/platform/nrfconnect/util/DFUOverSMP.cpp b/examples/platform/nrfconnect/util/DFUOverSMP.cpp
index e58638342948a2..629bb8bc894db5 100644
--- a/examples/platform/nrfconnect/util/DFUOverSMP.cpp
+++ b/examples/platform/nrfconnect/util/DFUOverSMP.cpp
@@ -55,10 +55,10 @@ void DFUOverSMP::Init(DFUOverSMPRestartAdvertisingHandler startAdvertisingCb)
         switch (opcode)
         {
         case MGMT_EVT_OP_CMD_RECV:
-            GetFlashHandler().DoAction(FlashHandler::Action::WAKE_UP);
+            GetFlashHandler().DoAction(ExternalFlashManager::Action::WAKE_UP);
             break;
         case MGMT_EVT_OP_CMD_DONE:
-            GetFlashHandler().DoAction(FlashHandler::Action::SLEEP);
+            GetFlashHandler().DoAction(ExternalFlashManager::Action::SLEEP);
             break;
         default:
             break;
diff --git a/examples/platform/nrfconnect/util/OTAUtil.cpp b/examples/platform/nrfconnect/util/OTAUtil.cpp
index 4addd5c30a7d30..733a8ebd741d1f 100644
--- a/examples/platform/nrfconnect/util/OTAUtil.cpp
+++ b/examples/platform/nrfconnect/util/OTAUtil.cpp
@@ -15,16 +15,22 @@
  *    limitations under the License.
  */
 
+#include "OTAUtil.h"
+
+#if CONFIG_CHIP_OTA_REQUESTOR
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
+#endif
 
 using namespace chip;
 using namespace chip::DeviceLayer;
 
+#if CONFIG_CHIP_OTA_REQUESTOR
+
 namespace {
 
 DefaultOTARequestorStorage sOTARequestorStorage;
@@ -33,12 +39,6 @@ chip::BDXDownloader sBDXDownloader;
 chip::DefaultOTARequestor sOTARequestor;
 } // namespace
 
-FlashHandler & GetFlashHandler()
-{
-    static FlashHandler sFlashHandler;
-    return sFlashHandler;
-}
-
 // compile-time factory method
 OTAImageProcessorImpl & GetOTAImageProcessor()
 {
@@ -61,5 +61,12 @@ void InitBasicOTARequestor()
     sOTARequestor.Init(Server::GetInstance(), sOTARequestorStorage, sOTARequestorDriver, sBDXDownloader);
     chip::SetRequestorInstance(&sOTARequestor);
     sOTARequestorDriver.Init(&sOTARequestor, &imageProcessor);
-    imageProcessor.TriggerFlashAction(FlashHandler::Action::SLEEP);
+    imageProcessor.TriggerFlashAction(ExternalFlashManager::Action::SLEEP);
+}
+#endif
+
+ExternalFlashManager & GetFlashHandler()
+{
+    static ExternalFlashManager sFlashHandler;
+    return sFlashHandler;
 }
diff --git a/examples/platform/nrfconnect/util/include/OTAUtil.h b/examples/platform/nrfconnect/util/include/OTAUtil.h
index d952ef9fea9617..55b51129aa81a0 100644
--- a/examples/platform/nrfconnect/util/include/OTAUtil.h
+++ b/examples/platform/nrfconnect/util/include/OTAUtil.h
@@ -17,6 +17,9 @@
 
 #pragma once
 
+#include 
+
+#if CONFIG_CHIP_OTA_REQUESTOR
 #include 
 
 namespace chip {
@@ -25,14 +28,6 @@ class OTAImageProcessorImpl;
 } // namespace DeviceLayer
 } // namespace chip
 
-/**
- * Get FlashHandler static instance.
- *
- * Returned object can be used to control the QSPI external flash,
- * which can be introduced into sleep mode and woken up on demand.
- */
-chip::DeviceLayer::FlashHandler & GetFlashHandler();
-
 /**
  * Select recommended OTA image processor implementation.
  *
@@ -50,3 +45,13 @@ chip::DeviceLayer::OTAImageProcessorImpl & GetOTAImageProcessor();
  * an update so the confirmation must be done on the OTA provider side.
  */
 void InitBasicOTARequestor();
+
+#endif // CONFIG_CHIP_OTA_REQUESTOR
+
+/**
+ * Get ExternalFlashManager static instance.
+ *
+ * Returned object can be used to control the QSPI external flash,
+ * which can be introduced into sleep mode and woken up on demand.
+ */
+chip::DeviceLayer::ExternalFlashManager & GetFlashHandler();
diff --git a/examples/pump-app/nrfconnect/CMakeLists.txt b/examples/pump-app/nrfconnect/CMakeLists.txt
index 15988152d17351..f7eb2579398efb 100644
--- a/examples/pump-app/nrfconnect/CMakeLists.txt
+++ b/examples/pump-app/nrfconnect/CMakeLists.txt
@@ -65,7 +65,7 @@ chip_configure_data_model(app
     ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../pump-common/pump-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/pump-controller-app/nrfconnect/CMakeLists.txt b/examples/pump-controller-app/nrfconnect/CMakeLists.txt
index 2d115d5c308e83..adf087afe2dabf 100644
--- a/examples/pump-controller-app/nrfconnect/CMakeLists.txt
+++ b/examples/pump-controller-app/nrfconnect/CMakeLists.txt
@@ -65,7 +65,7 @@ chip_configure_data_model(app
     ZAP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../pump-controller-common/pump-controller-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/examples/window-app/nrfconnect/CMakeLists.txt b/examples/window-app/nrfconnect/CMakeLists.txt
index 0dc64ec5ccd3e9..8a609d5a888257 100644
--- a/examples/window-app/nrfconnect/CMakeLists.txt
+++ b/examples/window-app/nrfconnect/CMakeLists.txt
@@ -68,7 +68,7 @@ chip_configure_data_model(app
     ZAP_FILE ${WIN_APP_COMMON_DIR}/window-app.zap
 )
 
-if(CONFIG_CHIP_OTA_REQUESTOR)
+if(CONFIG_CHIP_OTA_REQUESTOR OR CONFIG_MCUMGR_SMP_BT)
     target_sources(app PRIVATE ${NRFCONNECT_COMMON}/util/OTAUtil.cpp)
 endif()
 
diff --git a/src/platform/nrfconnect/BUILD.gn b/src/platform/nrfconnect/BUILD.gn
index 7d32f8102b2558..a841a2bb374020 100644
--- a/src/platform/nrfconnect/BUILD.gn
+++ b/src/platform/nrfconnect/BUILD.gn
@@ -41,6 +41,7 @@ static_library("nrfconnect") {
     "ConfigurationManagerImpl.h",
     "ConnectivityManagerImpl.cpp",
     "ConnectivityManagerImpl.h",
+    "ExternalFlashManager.h",
     "InetPlatformConfig.h",
     "KeyValueStoreManagerImpl.h",
     "PlatformManagerImpl.h",
diff --git a/src/platform/nrfconnect/ExternalFlashManager.h b/src/platform/nrfconnect/ExternalFlashManager.h
new file mode 100644
index 00000000000000..2a1b3f7f19ff63
--- /dev/null
+++ b/src/platform/nrfconnect/ExternalFlashManager.h
@@ -0,0 +1,51 @@
+/*
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+#include 
+#include 
+
+namespace chip {
+namespace DeviceLayer {
+
+class ExternalFlashManager
+{
+public:
+    enum class Action : uint8_t
+    {
+        WAKE_UP,
+        SLEEP
+    };
+
+    virtual ~ExternalFlashManager() {}
+
+    virtual void DoAction(Action aAction)
+    {
+#if CONFIG_PM_DEVICE && CONFIG_NORDIC_QSPI_NOR
+        // utilize the QSPI driver sleep power mode
+        const auto * qspi_dev = DEVICE_DT_GET(DT_INST(0, nordic_qspi_nor));
+        if (device_is_ready(qspi_dev))
+        {
+            const auto requestedAction = Action::WAKE_UP == aAction ? PM_DEVICE_ACTION_RESUME : PM_DEVICE_ACTION_SUSPEND;
+            (void) pm_device_action_run(qspi_dev, requestedAction); // not much can be done in case of a failure
+        }
+#endif
+    }
+};
+
+} // namespace DeviceLayer
+} // namespace chip
diff --git a/src/platform/nrfconnect/OTAImageProcessorImpl.cpp b/src/platform/nrfconnect/OTAImageProcessorImpl.cpp
index 96c2fe22a55b36..0daf01cb892d15 100644
--- a/src/platform/nrfconnect/OTAImageProcessorImpl.cpp
+++ b/src/platform/nrfconnect/OTAImageProcessorImpl.cpp
@@ -53,7 +53,7 @@ CHIP_ERROR OTAImageProcessorImpl::PrepareDownload()
 {
     VerifyOrReturnError(mDownloader != nullptr, CHIP_ERROR_INCORRECT_STATE);
 
-    TriggerFlashAction(FlashHandler::Action::WAKE_UP);
+    TriggerFlashAction(ExternalFlashManager::Action::WAKE_UP);
 
     return DeviceLayer::SystemLayer().ScheduleLambda([this] { mDownloader->OnPreparedForDownload(PrepareDownloadImpl()); });
 }
@@ -104,7 +104,7 @@ CHIP_ERROR OTAImageProcessorImpl::Abort()
 {
     CHIP_ERROR error = System::MapErrorZephyr(dfu_multi_image_done(false));
 
-    TriggerFlashAction(FlashHandler::Action::SLEEP);
+    TriggerFlashAction(ExternalFlashManager::Action::SLEEP);
 
     return error;
 }
@@ -114,7 +114,7 @@ CHIP_ERROR OTAImageProcessorImpl::Apply()
     // Schedule update of all images
     int err = dfu_target_schedule_update(-1);
 
-    TriggerFlashAction(FlashHandler::Action::SLEEP);
+    TriggerFlashAction(ExternalFlashManager::Action::SLEEP);
 
 #ifdef CONFIG_CHIP_OTA_REQUESTOR_REBOOT_ON_APPLY
     if (!err)
@@ -200,7 +200,7 @@ CHIP_ERROR OTAImageProcessorImpl::ProcessHeader(ByteSpan & aBlock)
     return CHIP_NO_ERROR;
 }
 
-void OTAImageProcessorImpl::TriggerFlashAction(FlashHandler::Action action)
+void OTAImageProcessorImpl::TriggerFlashAction(ExternalFlashManager::Action action)
 {
     if (mFlashHandler)
     {
@@ -208,19 +208,5 @@ void OTAImageProcessorImpl::TriggerFlashAction(FlashHandler::Action action)
     }
 }
 
-// external flash power consumption optimization
-void FlashHandler::DoAction(Action aAction)
-{
-#if CONFIG_PM_DEVICE && CONFIG_NORDIC_QSPI_NOR
-    // utilize the QSPI driver sleep power mode
-    const auto * qspi_dev = DEVICE_DT_GET(DT_INST(0, nordic_qspi_nor));
-    if (device_is_ready(qspi_dev))
-    {
-        const auto requestedAction = Action::WAKE_UP == aAction ? PM_DEVICE_ACTION_RESUME : PM_DEVICE_ACTION_SUSPEND;
-        (void) pm_device_action_run(qspi_dev, requestedAction); // not much can be done in case of a failure
-    }
-#endif
-}
-
 } // namespace DeviceLayer
 } // namespace chip
diff --git a/src/platform/nrfconnect/OTAImageProcessorImpl.h b/src/platform/nrfconnect/OTAImageProcessorImpl.h
index 09c94bb1969456..6012e20c29ac81 100644
--- a/src/platform/nrfconnect/OTAImageProcessorImpl.h
+++ b/src/platform/nrfconnect/OTAImageProcessorImpl.h
@@ -19,6 +19,7 @@
 #include 
 #include 
 #include 
+#include 
 
 namespace chip {
 
@@ -26,27 +27,15 @@ class OTADownloader;
 
 namespace DeviceLayer {
 
-class FlashHandler
-{
-public:
-    enum class Action : uint8_t
-    {
-        WAKE_UP,
-        SLEEP
-    };
-    virtual ~FlashHandler() {}
-    virtual void DoAction(Action aAction);
-};
-
 class OTAImageProcessorImpl : public OTAImageProcessorInterface
 {
 public:
     static constexpr size_t kBufferSize = CONFIG_CHIP_OTA_REQUESTOR_BUFFER_SIZE;
 
-    explicit OTAImageProcessorImpl(FlashHandler * flashHandler = nullptr) : mFlashHandler(flashHandler) {}
+    explicit OTAImageProcessorImpl(ExternalFlashManager * flashHandler = nullptr) : mFlashHandler(flashHandler) {}
 
     void SetOTADownloader(OTADownloader * downloader) { mDownloader = downloader; };
-    void TriggerFlashAction(FlashHandler::Action action);
+    void TriggerFlashAction(ExternalFlashManager::Action action);
 
     CHIP_ERROR PrepareDownload() override;
     CHIP_ERROR Finalize() override;
@@ -63,7 +52,7 @@ class OTAImageProcessorImpl : public OTAImageProcessorInterface
     OTADownloader * mDownloader = nullptr;
     OTAImageHeaderParser mHeaderParser;
     uint8_t mBuffer[kBufferSize];
-    FlashHandler * mFlashHandler;
+    ExternalFlashManager * mFlashHandler;
 };
 
 } // namespace DeviceLayer

From 5c6a45abae9bb4ae831e3dee44b0dc685e29dbbc Mon Sep 17 00:00:00 2001
From: Adam Bodurka 
Date: Wed, 16 Nov 2022 14:54:34 +0100
Subject: [PATCH 04/36] [QPG] Move AppTask::Init function to reduce stack usage
 (#23595)

* Moved AppTask Init function to Application_Init

* Cleanup

* Updated lock app with SDP011-1042 content

* Missing UpdateLEDs call added

* Fixed shell app build
---
 examples/lighting-app/qpg/include/AppTask.h |   2 +-
 examples/lighting-app/qpg/src/AppTask.cpp   |   9 +-
 examples/lock-app/qpg/include/AppTask.h     |   5 +-
 examples/lock-app/qpg/src/AppTask.cpp       | 116 +++++++++++---------
 examples/platform/qpg/app/main.cpp          |  11 +-
 examples/shell/qpg/include/AppTask.h        |   1 +
 examples/shell/qpg/src/AppTask.cpp          |   5 +
 7 files changed, 87 insertions(+), 62 deletions(-)

diff --git a/examples/lighting-app/qpg/include/AppTask.h b/examples/lighting-app/qpg/include/AppTask.h
index 7651124669546d..66c3003df11b0b 100644
--- a/examples/lighting-app/qpg/include/AppTask.h
+++ b/examples/lighting-app/qpg/include/AppTask.h
@@ -37,6 +37,7 @@ class AppTask
 {
 
 public:
+    CHIP_ERROR Init();
     CHIP_ERROR StartAppTask();
     static void AppTaskMain(void * pvParameter);
 
@@ -49,7 +50,6 @@ class AppTask
 private:
     friend AppTask & GetAppTask(void);
 
-    CHIP_ERROR Init();
     static void InitServer(intptr_t arg);
     static void OpenCommissioning(intptr_t arg);
 
diff --git a/examples/lighting-app/qpg/src/AppTask.cpp b/examples/lighting-app/qpg/src/AppTask.cpp
index 27724b1f271329..d7dd3c282791f6 100644
--- a/examples/lighting-app/qpg/src/AppTask.cpp
+++ b/examples/lighting-app/qpg/src/AppTask.cpp
@@ -289,6 +289,8 @@ CHIP_ERROR AppTask::Init()
     ConfigurationMgr().LogDeviceConfig();
     PrintOnboardingCodes(chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE));
 
+    UpdateLEDs();
+
     return err;
 }
 
@@ -296,13 +298,6 @@ void AppTask::AppTaskMain(void * pvParameter)
 {
     AppEvent event;
 
-    CHIP_ERROR err = sAppTask.Init();
-    if (err != CHIP_NO_ERROR)
-    {
-        ChipLogError(NotSpecified, "AppTask.Init() failed: %" CHIP_ERROR_FORMAT, err.Format());
-        return;
-    }
-
     while (true)
     {
         BaseType_t eventReceived = xQueueReceive(sAppEventQueue, &event, portMAX_DELAY);
diff --git a/examples/lock-app/qpg/include/AppTask.h b/examples/lock-app/qpg/include/AppTask.h
index 997257ed8352bf..3219c5676036f9 100644
--- a/examples/lock-app/qpg/include/AppTask.h
+++ b/examples/lock-app/qpg/include/AppTask.h
@@ -41,6 +41,7 @@ class AppTask
 {
 
 public:
+    CHIP_ERROR Init();
     CHIP_ERROR StartAppTask();
     static void AppTaskMain(void * pvParameter);
 
@@ -53,7 +54,6 @@ class AppTask
 private:
     friend AppTask & GetAppTask(void);
 
-    CHIP_ERROR Init();
     static void InitServer(intptr_t arg);
 
     static void ActionInitiated(BoltLockManager::Action_t aAction, int32_t aActor);
@@ -68,6 +68,9 @@ class AppTask
     static void LockActionEventHandler(AppEvent * aEvent);
     static void TimerEventHandler(chip::System::Layer * aLayer, void * aAppState);
 
+    static void MatterEventHandler(const chip::DeviceLayer::ChipDeviceEvent * event, intptr_t arg);
+    static void UpdateLEDs(void);
+
     void StartTimer(uint32_t aTimeoutMs);
 
     enum Function_t
diff --git a/examples/lock-app/qpg/src/AppTask.cpp b/examples/lock-app/qpg/src/AppTask.cpp
index 993a91068049b9..bc24d7fbbe8b46 100644
--- a/examples/lock-app/qpg/src/AppTask.cpp
+++ b/examples/lock-app/qpg/src/AppTask.cpp
@@ -54,7 +54,7 @@ using namespace chip::DeviceLayer;
 #define FACTORY_RESET_CANCEL_WINDOW_TIMEOUT 3000
 #define OTA_START_TRIGGER_TIMEOUT 1500
 
-#define APP_TASK_STACK_SIZE (3 * 1024)
+#define APP_TASK_STACK_SIZE (2 * 1024)
 #define APP_TASK_PRIORITY 2
 #define APP_EVENT_QUEUE_SIZE 10
 #define QPG_LOCK_ENDPOINT_ID (1)
@@ -135,6 +135,8 @@ CHIP_ERROR AppTask::Init()
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
 
+    PlatformMgr().AddEventHandler(MatterEventHandler, 0);
+
     ChipLogProgress(NotSpecified, "Current Software Version: %s", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING);
 
     // Init ZCL Data Model and start server
@@ -165,6 +167,8 @@ CHIP_ERROR AppTask::Init()
     ConfigurationMgr().LogDeviceConfig();
     PrintOnboardingCodes(chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE));
 
+    UpdateLEDs();
+
     return err;
 }
 
@@ -172,63 +176,14 @@ void AppTask::AppTaskMain(void * pvParameter)
 {
     AppEvent event;
 
-    CHIP_ERROR err = sAppTask.Init();
-    if (err != CHIP_NO_ERROR)
-    {
-        ChipLogError(NotSpecified, "AppTask.Init() failed: %" CHIP_ERROR_FORMAT, err.Format());
-    }
-
-    ChipLogProgress(NotSpecified, "App Task started");
-
     while (true)
     {
-        BaseType_t eventReceived = xQueueReceive(sAppEventQueue, &event, pdMS_TO_TICKS(10));
+        BaseType_t eventReceived = xQueueReceive(sAppEventQueue, &event, portMAX_DELAY);
         while (eventReceived == pdTRUE)
         {
             sAppTask.DispatchEvent(&event);
             eventReceived = xQueueReceive(sAppEventQueue, &event, 0);
         }
-
-        // Collect connectivity and configuration state from the CHIP stack. Because
-        // the CHIP event loop is being run in a separate task, the stack must be
-        // locked while these values are queried.  However we use a non-blocking
-        // lock request (TryLockCHIPStack()) to avoid blocking other UI activities
-        // when the CHIP task is busy (e.g. with a long crypto operation).
-        if (PlatformMgr().TryLockChipStack())
-        {
-            sIsThreadProvisioned = ConnectivityMgr().IsThreadProvisioned();
-            sIsThreadEnabled     = ConnectivityMgr().IsThreadEnabled();
-            sHaveBLEConnections  = (ConnectivityMgr().NumBLEConnections() != 0);
-            PlatformMgr().UnlockChipStack();
-        }
-
-        // Update the status LED if factory reset has not been initiated.
-        //
-        // If system has "full connectivity", keep the LED On constantly.
-        //
-        // If thread and service provisioned, but not attached to the thread network
-        // yet OR no connectivity to the service OR subscriptions are not fully
-        // established THEN blink the LED Off for a short period of time.
-        //
-        // If the system has ble connection(s) uptill the stage above, THEN blink
-        // the LEDs at an even rate of 100ms.
-        //
-        // Otherwise, blink the LED ON for a very short time.
-        if (sAppTask.mFunction != kFunction_FactoryReset)
-        {
-            if (sIsThreadProvisioned && sIsThreadEnabled)
-            {
-                qvIO_LedBlink(SYSTEM_STATE_LED, 950, 50);
-            }
-            else if (sHaveBLEConnections)
-            {
-                qvIO_LedBlink(SYSTEM_STATE_LED, 100, 100);
-            }
-            else
-            {
-                qvIO_LedBlink(SYSTEM_STATE_LED, 50, 950);
-            }
-        }
     }
 }
 
@@ -556,3 +511,62 @@ void AppTask::UpdateClusterState(void)
         ChipLogError(NotSpecified, "ERR: updating DoorLock %x", status);
     }
 }
+
+void AppTask::UpdateLEDs(void)
+{
+    // If system has "full connectivity", keep the LED On constantly.
+    //
+    // If thread and service provisioned, but not attached to the thread network
+    // yet OR no connectivity to the service OR subscriptions are not fully
+    // established THEN blink the LED Off for a short period of time.
+    //
+    // If the system has ble connection(s) uptill the stage above, THEN blink
+    // the LEDs at an even rate of 100ms.
+    //
+    // Otherwise, blink the LED ON for a very short time.
+    if (sIsThreadProvisioned && sIsThreadEnabled)
+    {
+        qvIO_LedBlink(SYSTEM_STATE_LED, 950, 50);
+    }
+    else if (sHaveBLEConnections)
+    {
+        qvIO_LedBlink(SYSTEM_STATE_LED, 100, 100);
+    }
+    else
+    {
+        qvIO_LedBlink(SYSTEM_STATE_LED, 50, 950);
+    }
+}
+
+void AppTask::MatterEventHandler(const ChipDeviceEvent * event, intptr_t)
+{
+    switch (event->Type)
+    {
+    case DeviceEventType::kServiceProvisioningChange: {
+        sIsThreadProvisioned = event->ServiceProvisioningChange.IsServiceProvisioned;
+        UpdateLEDs();
+        break;
+    }
+
+    case DeviceEventType::kThreadConnectivityChange: {
+        sIsThreadEnabled = (event->ThreadConnectivityChange.Result == kConnectivity_Established);
+        UpdateLEDs();
+        break;
+    }
+
+    case DeviceEventType::kCHIPoBLEConnectionEstablished: {
+        sHaveBLEConnections = true;
+        UpdateLEDs();
+        break;
+    }
+
+    case DeviceEventType::kCHIPoBLEConnectionClosed: {
+        sHaveBLEConnections = false;
+        UpdateLEDs();
+        break;
+    }
+
+    default:
+        break;
+    }
+}
diff --git a/examples/platform/qpg/app/main.cpp b/examples/platform/qpg/app/main.cpp
index c5ff8b9869daa5..3c21833f1362b6 100644
--- a/examples/platform/qpg/app/main.cpp
+++ b/examples/platform/qpg/app/main.cpp
@@ -97,12 +97,19 @@ void Application_Init(void)
     ChipLogProgress(NotSpecified, "Qorvo " APP_NAME " Launching");
     ChipLogProgress(NotSpecified, "============================");
 
-    CHIP_ERROR ret = GetAppTask().StartAppTask();
-    if (ret != CHIP_NO_ERROR)
+    error = GetAppTask().Init();
+    if (error != CHIP_NO_ERROR)
     {
         ChipLogError(NotSpecified, "GetAppTask().Init() failed");
         return;
     }
+
+    error = GetAppTask().StartAppTask();
+    if (error != CHIP_NO_ERROR)
+    {
+        ChipLogError(NotSpecified, "GetAppTask().StartAppTask() failed");
+        return;
+    }
 }
 
 void ChipEventHandler(const ChipDeviceEvent * aEvent, intptr_t /* arg */)
diff --git a/examples/shell/qpg/include/AppTask.h b/examples/shell/qpg/include/AppTask.h
index 45ea3bcb5b00f9..fb449697fb3959 100644
--- a/examples/shell/qpg/include/AppTask.h
+++ b/examples/shell/qpg/include/AppTask.h
@@ -29,6 +29,7 @@ class AppTask
 {
 
 public:
+    CHIP_ERROR Init();
     CHIP_ERROR StartAppTask();
 
 private:
diff --git a/examples/shell/qpg/src/AppTask.cpp b/examples/shell/qpg/src/AppTask.cpp
index fcad76e3855b45..c9c6af3261424c 100644
--- a/examples/shell/qpg/src/AppTask.cpp
+++ b/examples/shell/qpg/src/AppTask.cpp
@@ -26,3 +26,8 @@ CHIP_ERROR AppTask::StartAppTask()
 {
     return CHIP_NO_ERROR;
 }
+
+CHIP_ERROR AppTask::Init()
+{
+    return CHIP_NO_ERROR;
+}

From 26e3636189469ab78ee49b1e253554306e5ea761 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Wed, 16 Nov 2022 10:54:08 -0500
Subject: [PATCH 05/36] Add Darwin backwards-compat shims for the TestCluster
 rename. (#23611)

https://github.com/project-chip/connectedhomeip/pull/23495 renamed "TestCluster"
to "UnitTesting", which changed a bunch of Darwin APIs.  This PR puts in place
backwards-compat shims to avoid API changes.  Specifically, compared to revision
9a41c9c3d971797010ab9de4eb04804015674fb0 (right before #23495 landed), the
changes to Darwin code end up looking like this:

1. MTRAttributeTLVValueDecoder.mm: internal-only changes to cluster ids.
2. MTRBaseClusters.h:
   * MTRBaseClusterTestCluster renamed to MTRBaseClusterUnitTesting, which is
     marked MTR_NEWLY_AVAILABLE.
   * Various modifications to methods on MTRBaseClusterUnitTesting that are
     marked MTR_NEWLY_AVAILABLE, so these changes are OK.
   * MTRBaseClusterTestCluster is added as a subclass of
     MTRBaseClusterUnitTesting.
   * The MTRBaseClusterTestCluster (Deprecated) bits are not changed at all.
   * The MTRUnitTesting enums/bitmaps are added as MTR_NEWLY_AVAILABLE.
   * The MTRTestCluster enums/bitmaps are marked as MTR_NEWLY_DEPRECATED.
3. MTRBaseClusters.mm: The various (Deprecated) bits get shims on the
   completion handlers to handle the fact that for MTRBaseClusterTestCluster
   (Deprecated) the types in the completions are TestCluster but we want to
   call things that expect UnitTesting types, so we have to cast between them.
   We could restrict these shims to just TestCluster with enough work, but it
   does not seem worth it.
4. MTRBaseClusters_internal.h: just follows the renaming from MTRBaseClusters.h
5. MTRCallbackBridge.mm: just follows the renamings of the various struct types,
   commands, etc..
6. MTRCallbackBridge_internal.h: just follows the renaming of the various
   struct types.
7. MTRClusterConstants.h: marks the old constants as MTR_NEWLY_DEPRECATED and
   adds the new constants as MTR_NEWLY_AVAILABLE.
8. MTRClusters.h:
   * MTRClusterTestCluster renamed to MTRClusterUnitTesting, which is marked
     MTR_NEWLY_AVAILABLE.
   * Various modifications to methods on MTRClusterUnitTesting that are marked
     MTR_NEWLY_AVAILABLE, so these changes are OK.
   * MTRClusterTestCluster is added as a subclass of MTRClusterUnitTesting.
   * The MTRClusterTestCluster (Deprecated) bits are not changed at all.
9. MTRClusters.mm: The various (Deprecated) bits get shims on the
   completion handlers, like for MTRBaseClusters.mm above.
10. MTRClusters_internal.h: Just follows the renaming from MTRClusters.h
11. MTRCommandPayloadsObjc.h:
    * Renames payload structs to UnitTesting, marks them MTR_NEWLY_AVAILABLE
    * Adds subclasses of the payload structs with the old name that
      are marked as MTR_NEWLY_DEPRECATED and have no extra selectors.
    * Changes types of struct members of payloads to have the UnitTesting types.
12. MTRCommandPayloadsObjc.mm: just follows the header changes.
13. MTREventTLVValueDecoder.mm: Internal changes to ID names.
14. MTRStructsObjc.h:
    * Renames structs defined in the unit testing cluster to UnitTesting names,
      marks them MTR_NEWLY_AVAILABLE.
    * Adds subclasses of the structs with the old name that are marked as
      MTR_NEWLY_DEPRECATED and have no extra selectors.
15. MTRStructsObjc.mm: just follows the header changes.
---
 .../CHIP/templates/MTRBaseClusters-src.zapt   |    53 +-
 .../CHIP/templates/MTRBaseClusters.zapt       |    58 +-
 .../CHIP/templates/MTRClusterConstants.zapt   |    67 +-
 .../CHIP/templates/MTRClusters-src.zapt       |    25 +-
 .../Framework/CHIP/templates/MTRClusters.zapt |    19 +-
 .../templates/MTRCommandPayloadsObjc-src.zapt |     5 +
 .../templates/MTRCommandPayloadsObjc.zapt     |    10 +
 .../CHIP/templates/MTRStructsObjc-src.zapt    |     8 +
 .../CHIP/templates/MTRStructsObjc.zapt        |    15 +
 .../partials/command_completion_type.zapt     |     9 +-
 .../CHIP/zap-generated/MTRBaseClusters.h      |   175 +-
 .../CHIP/zap-generated/MTRBaseClusters.mm     | 17337 ++++++++++++----
 .../CHIP/zap-generated/MTRClusterConstants.h  |   520 +-
 .../CHIP/zap-generated/MTRClusters.h          |    96 +-
 .../CHIP/zap-generated/MTRClusters.mm         |   807 +-
 .../zap-generated/MTRCommandPayloadsObjc.h    |   211 +
 .../zap-generated/MTRCommandPayloadsObjc.mm   |   102 +
 .../CHIP/zap-generated/MTRStructsObjc.h       |    39 +
 .../CHIP/zap-generated/MTRStructsObjc.mm      |    27 +
 19 files changed, 15630 insertions(+), 3953 deletions(-)

diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
index 768ae191d21e9e..a8a4c9deee6540 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
@@ -237,18 +237,32 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value
 {{/chip_server_cluster_attributes}}
 
 @end
+{{#if (isStrEqual (asUpperCamelCase name) "UnitTesting")}}
 
-@implementation MTRBaseCluster{{asUpperCamelCase name}} (Deprecated)
+@implementation MTRBaseClusterTestCluster
+@end
+{{/if}}
+
+@implementation MTRBaseCluster{{compatClusterNameRemapping name}} (Deprecated)
 
 {{#chip_cluster_commands}}
-- (void){{asLowerCamelCase name}}WithParams:(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithParams:(MTR{{compatClusterNameRemapping parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
 {
-  [self {{asLowerCamelCase name}}WithParams:params completion:completionHandler];
+  [self {{asLowerCamelCase name}}WithParams:params completion:
+    {{#if hasSpecificResponse}}
+    ^(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase responseName}}Params * _Nullable data, NSError * _Nullable error) {
+      // Cast is safe because subclass does not add any selectors.
+      completionHandler(static_cast(data), error);
+    }
+    {{else}}
+    completionHandler
+    {{/if}}
+    ];
 }
 {{#unless (hasArguments)}}
-- (void){{asLowerCamelCase name}}WithCompletionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithCompletionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
 {
-  [self {{asLowerCamelCase name}}WithParams:nil completion:completionHandler];
+  [self {{asLowerCamelCase name}}WithParams:nil completionHandler:completionHandler];
 }
 {{/unless}}
 {{/chip_cluster_commands}}
@@ -263,16 +277,20 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value
 {{~else~}}
   CompletionHandler:
 {{~/if_is_fabric_scoped_struct~}}
-(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completionHandler
+(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler
 {
-  [self readAttribute{{asUpperCamelCase name}}With{{#if_is_fabric_scoped_struct type}}Params:params completion:{{else}}Completion:{{/if_is_fabric_scoped_struct}}completionHandler];
+  [self readAttribute{{asUpperCamelCase name}}With{{#if_is_fabric_scoped_struct type}}Params:params completion:{{else}}Completion:{{/if_is_fabric_scoped_struct}}
+      ^({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast<{{asObjectiveCClass type parent.name compatRemapClusterName=true}} *>(value), error);
+      }];
 }
 {{#if isWritableAttribute}}
-- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value completionHandler:(MTRStatusCompletion)completionHandler
+- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value completionHandler:(MTRStatusCompletion)completionHandler
 {
   [self writeAttribute{{asUpperCamelCase name}}WithValue:value params:nil completion:completionHandler];
 }
-- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value params:(MTRWriteParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
+- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value params:(MTRWriteParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
 {
   [self writeAttribute{{asUpperCamelCase name}}WithValue:value params:params completion:completionHandler];
 }
@@ -280,7 +298,7 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value
 {{#if isReportableAttribute}}
 - (void) subscribe{{>attribute}}WithMinInterval:(NSNumber * _Nonnull)minInterval  maxInterval:(NSNumber * _Nonnull)maxInterval
        params:(MTRSubscribeParams * _Nullable)params
-subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler
+subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))reportHandler
 {
   MTRSubscribeParams * _Nullable subscribeParams = [params copy];
   if (subscribeParams == nil) {
@@ -289,11 +307,19 @@ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptio
       subscribeParams.minInterval = minInterval;
       subscribeParams.maxInterval = maxInterval;
   }
-  [self subscribeAttribute{{asUpperCamelCase name}}WithParams:subscribeParams subscriptionEstablished:subscriptionEstablishedHandler reportHandler:reportHandler];
+  [self subscribeAttribute{{asUpperCamelCase name}}WithParams:subscribeParams subscriptionEstablished:subscriptionEstablishedHandler reportHandler:
+     ^({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error) {
+       // Cast is safe because subclass does not add any selectors.
+       reportHandler(static_cast<{{asObjectiveCClass type parent.name compatRemapClusterName=true}} *>(value), error)     ;
+     }];
 }
-+ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completionHandler
++ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler
 {
-  [self readAttribute{{asUpperCamelCase name}}WithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+  [self readAttribute{{asUpperCamelCase name}}WithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:
+      ^({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast<{{asObjectiveCClass type parent.name compatRemapClusterName=true}} *>(value), error);
+      }];
 }
 {{/if}}
 {{/chip_server_cluster_attributes}}
@@ -308,4 +334,5 @@ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptio
 @end
 
 {{/chip_client_clusters}}
+
 // NOLINTEND(clang-analyzer-cplusplus.NewDeleteLeaks)
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
index e9c1326acf3df1..2ee582ea1f3598 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
@@ -16,6 +16,9 @@ NS_ASSUME_NONNULL_BEGIN
  * Cluster {{name}}
  *    {{description}}
  */
+{{#if (isStrEqual (asUpperCamelCase name) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
 @interface MTRBaseCluster{{asUpperCamelCase name}} : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
@@ -60,19 +63,37 @@ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptio
 
 {{/chip_client_clusters}}
 
+MTR_NEWLY_DEPRECATED("Please use MTRBaseClusterUnitTesting")
+@interface MTRBaseClusterTestCluster : MTRBaseClusterUnitTesting
+@end
+
 {{#zcl_clusters}}
 {{#zcl_enums}}
-typedef NS_ENUM({{asUnderlyingZclType name}}, {{objCEnumName ../name label}}) {
+{{#*inline "enumDef"}}
+typedef NS_ENUM({{asUnderlyingZclType name}}, {{objCEnumName clusterName label}}) {
    {{#zcl_enum_items}}
-   {{objCEnumName ../../name ../label}}{{objCEnumItemLabel label}} = {{asHex value 2}},
+   {{objCEnumName ../clusterName ../label}}{{objCEnumItemLabel label}} = {{asHex value 2}},
    {{/zcl_enum_items}}
-};
+}
+{{#if (isStrEqual (asUpperCamelCase clusterName) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{else if (isStrEqual (asUpperCamelCase clusterName) "TestCluster")}}
+MTR_NEWLY_DEPRECATED("Please use {{objCEnumName "UnitTesting" label}}")
+{{/if}}
+;
+{{/inline}}
+{{> enumDef name=name clusterName=../name label=label}}
 
+{{#if (isStrEqual (asUpperCamelCase ../name) "UnitTesting")}}
+{{> enumDef name=name clusterName="TestCluster" label=label}}
+
+{{/if}}
 {{/zcl_enums}}
 {{#zcl_bitmaps}}
-typedef NS_OPTIONS({{asUnderlyingZclType name}}, {{objCEnumName ../name label}}) {
+{{#*inline "bitmapDef"}}
+typedef NS_OPTIONS({{asUnderlyingZclType name}}, {{objCEnumName clusterName label}}) {
    {{#zcl_bitmap_items}}
-   {{objCEnumName ../../name ../label}}{{objCEnumItemLabel label}} = {{asHex mask}},
+   {{objCEnumName ../clusterName ../label}}{{objCEnumItemLabel label}} = {{asHex mask}},
    {{/zcl_bitmap_items}}
 }
 {{! TODO: We need a better setup for the API_AVALABLE annotations here; this does not scale at all sanely. }}
@@ -86,23 +107,34 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 {{/if}}
 {{/if}}
+{{#if (isStrEqual (asUpperCamelCase clusterName) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{else if (isStrEqual (asUpperCamelCase clusterName) "TestCluster")}}
+MTR_NEWLY_DEPRECATED("Please use {{objCEnumName "UnitTesting" label}}")
+{{/if}}
 ;
+{{/inline}}
+{{> bitmapDef name=name clusterName=../name label=label}}
 
+{{#if (isStrEqual (asUpperCamelCase ../name) "UnitTesting")}}
+{{> bitmapDef name=name clusterName="TestCluster" label=label}}
+
+{{/if}}
 {{/zcl_bitmaps}}
 {{/zcl_clusters}}
 
 {{#chip_client_clusters includeAll=true}}
-@interface MTRBaseCluster{{asUpperCamelCase name}} (Deprecated)
+@interface MTRBaseCluster{{compatClusterNameRemapping name}} (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpointID:queue:");
 
 {{#chip_cluster_commands}}
-- (void){{asLowerCamelCase name}}WithParams:(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithParams:(MTR{{compatClusterNameRemapping parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
   MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithParams:completion:");
 {{#unless (hasArguments)}}
-- (void){{asLowerCamelCase name}}WithCompletionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithCompletionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
   MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithCompletion:");
 {{/unless}}
 {{/chip_cluster_commands}}
@@ -117,21 +149,21 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 {{~else~}}
   CompletionHandler:
 {{~/if_is_fabric_scoped_struct~}}
-(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
+(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
   MTR_NEWLY_DEPRECATED("Please use read{{>attribute}}With{{#if_is_fabric_scoped_struct type}}Params:completion:{{else}}Completion:{{/if_is_fabric_scoped_struct}}");
 {{#if isWritableAttribute}}
-- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value completionHandler:(MTRStatusCompletion)completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
+- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value completionHandler:(MTRStatusCompletion)completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
   MTR_NEWLY_DEPRECATED("Please use write{{>attribute}}WithValue:completion:");
-- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value params:(MTRWriteParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
+- (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name compatRemapClusterName=true}})value params:(MTRWriteParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
   MTR_NEWLY_DEPRECATED("Please use write{{>attribute}}WithValue:params:completion:");
 {{/if}}
 {{#if isReportableAttribute}}
 {{! TODO: We need a better setup for the API_AVALABLE annotations here; this does not scale at all sanely. }}
 - (void) subscribe{{>attribute}}WithMinInterval:(NSNumber * _Nonnull)minInterval  maxInterval:(NSNumber * _Nonnull)maxInterval
        params:(MTRSubscribeParams * _Nullable)params
-subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
+subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler reportHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))reportHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
   MTR_NEWLY_DEPRECATED("Please use subscribe{{>attribute}}WithParams:subscriptionEstablished:");
-+ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
++ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}}
   MTR_NEWLY_DEPRECATED("Please use read{{>attribute}}WithAttributeCache:endpoint:queue:completion:");
 {{/if}}
 {{/chip_server_cluster_attributes}}
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
index acaf677e83649b..ff5350c4d67efe 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
@@ -7,7 +7,10 @@
 
 typedef NS_ENUM(uint32_t, MTRClusterIDType) {
 {{#zcl_clusters}}
-MTRCluster{{asUpperCamelCase label}}ID = {{asMEI manufacturerCode code}},
+MTRCluster{{asUpperCamelCase label}}ID {{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}MTR_NEWLY_AVAILABLE{{/if}}= {{asMEI manufacturerCode code}},
+{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
+MTRClusterTestClusterID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingID") = {{asMEI manufacturerCode code}},
+{{/if}}
 {{/zcl_clusters}}
 };
 
@@ -22,26 +25,44 @@ MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID = {{asMEI manufacturerCode
 {{/zcl_attributes_server}}
 
 {{#zcl_clusters}}
+{{#*inline "attributeIDs"}}
 {{#zcl_attributes_server}}
 {{#first}}
-// Cluster {{asUpperCamelCase parent.label}} attributes
+// Cluster {{asUpperCamelCase ../clusterName}} attributes
 {{/first}}
 {{#if clusterRef}}
 {{! TODO: We need a better setup for the API_AVALABLE annotations here; this does not scale at all sanely. }}
-MTRCluster{{asUpperCamelCase parent.label}}Attribute{{asUpperCamelCase label}}ID {{#if (isStrEqual (asUpperCamelCase parent.label) "Descriptor")}} {{#if (isStrEqual (asUpperCamelCase label) "DeviceTypeList")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}} = {{asMEI manufacturerCode code}},
+MTRCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID
+{{#if (isStrEqual (asUpperCamelCase ../clusterName) "Descriptor")}}
+{{#if (isStrEqual (asUpperCamelCase label) "DeviceTypeList")}}
+API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+{{/if}}
+{{else if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
+MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttribute{{asUpperCamelCase label}}ID")
+{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
+= {{asMEI manufacturerCode code}},
 {{!Backwards compat for now: DeviceList as an alias for DeviceTypeList}}
-{{#if (isStrEqual (asUpperCamelCase parent.label) "Descriptor")}}
+{{#if (isStrEqual (asUpperCamelCase ../clusterName) "Descriptor")}}
 {{#if (isStrEqual (asUpperCamelCase label) "DeviceTypeList")}}
 MTRClusterDescriptorAttributeDeviceListID = {{asMEI manufacturerCode code}},
 {{/if}}
 {{/if}}
 {{else}}
-MTRCluster{{asUpperCamelCase parent.label}}Attribute{{asUpperCamelCase label}}ID = MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID,
+MTRCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID = MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID,
 {{/if}}
 {{#last}}
 
 {{/last}}
 {{/zcl_attributes_server}}
+{{/inline}}
+
+{{> attributeIDs clusterName=label}}
+{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
+
+{{> attributeIDs clusterName="TestCluster"}}
+{{/if}}
 {{/zcl_clusters}}
 };
 
@@ -49,15 +70,29 @@ MTRCluster{{asUpperCamelCase parent.label}}Attribute{{asUpperCamelCase label}}ID
 
 typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
 {{#zcl_clusters}}
+{{#*inline "commandIDs"}}
 {{#zcl_commands}}
 {{#first}}
-// Cluster {{asUpperCamelCase parent.label}} commands
+// Cluster {{asUpperCamelCase ../clusterName}} commands
 {{/first}}
-MTRCluster{{asUpperCamelCase parent.label}}Command{{asUpperCamelCase label}}ID = {{asMEI manufacturerCode code}},
+MTRCluster{{asUpperCamelCase ../clusterName}}Command{{asUpperCamelCase label}}ID
+{{#if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
+MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommand{{asUpperCamelCase label}}ID")
+{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
+= {{asMEI manufacturerCode code}},
 {{#last}}
 
 {{/last}}
 {{/zcl_commands}}
+{{/inline}}
+
+{{> commandIDs clusterName=label}}
+{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
+
+{{> commandIDs clusterName="TestCluster"}}
+{{/if}}
 {{/zcl_clusters}}
 };
 
@@ -65,14 +100,28 @@ MTRCluster{{asUpperCamelCase parent.label}}Command{{asUpperCamelCase label}}ID =
 
 typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
 {{#zcl_clusters}}
+{{#*inline "eventIDs"}}
 {{#zcl_events}}
 {{#first}}
-// Cluster {{asUpperCamelCase parent.label}} events
+// Cluster {{asUpperCamelCase ../clusterName}} events
 {{/first}}
-MTRCluster{{asUpperCamelCase parent.label}}Event{{asUpperCamelCase name}}ID = {{asMEI manufacturerCode code}},
+MTRCluster{{asUpperCamelCase ../clusterName}}Event{{asUpperCamelCase name}}ID
+{{#if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
+MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingEvent{{asUpperCamelCase name}}ID")
+{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
+= {{asMEI manufacturerCode code}},
 {{#last}}
 
 {{/last}}
 {{/zcl_events}}
+{{/inline}}
+
+{{> eventIDs clusterName=label}}
+{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
+
+{{> eventIDs clusterName="TestCluster"}}
+{{/if}}
 {{/zcl_clusters}}
 };
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
index 59e5575e462a10..52fb5f66773a06 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
@@ -151,8 +151,13 @@ using chip::SessionHandle;
 {{/chip_server_cluster_attributes}}
 
 @end
+{{#if (isStrEqual (asUpperCamelCase name) "UnitTesting")}}
 
-@implementation MTRCluster{{asUpperCamelCase name}} (Deprecated)
+@implementation MTRClusterTestCluster
+@end
+{{/if}}
+
+@implementation MTRCluster{{compatClusterNameRemapping name}} (Deprecated)
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
 {
@@ -160,18 +165,28 @@ using chip::SessionHandle;
 }
 
 {{#chip_cluster_commands}}
-- (void){{asLowerCamelCase name}}WithParams:(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithParams:(MTR{{compatClusterNameRemapping parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
 {
-  [self {{asLowerCamelCase name}}WithParams:params expectedValues:expectedDataValueDictionaries expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+  [self {{asLowerCamelCase name}}WithParams:params expectedValues:expectedDataValueDictionaries expectedValueInterval:expectedValueIntervalMs completion:
+      {{#if hasSpecificResponse}}
+    ^(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase responseName}}Params * _Nullable data, NSError * _Nullable error) {
+      // Cast is safe because subclass does not add any selectors.
+      completionHandler(static_cast(data), error);
+    }
+    {{else}}
+    completionHandler
+    {{/if}}
+    ];
 }
 {{#unless (hasArguments)}}
-- (void){{asLowerCamelCase name}}WithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completionHandler:({{>command_completion_type command=.}})completionHandler
+- (void){{asLowerCamelCase name}}WithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler
 {
-  [self {{asLowerCamelCase name}}WithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+  [self {{asLowerCamelCase name}}WithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completionHandler:completionHandler];
 }
 {{/unless}}
 {{/chip_cluster_commands}}
 @end
 
 {{/chip_client_clusters}}
+
 // NOLINTEND(clang-analyzer-cplusplus.NewDeleteLeaks)
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
index a0f8349e95ca83..e44a6150f37f60 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
@@ -18,6 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
  * Cluster {{name}}
  *    {{description}}
  */
+{{#if (isStrEqual (asUpperCamelCase name) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
 @interface MTRCluster{{asUpperCamelCase name}} : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRDevice *)device
@@ -35,10 +38,10 @@ NS_ASSUME_NONNULL_BEGIN
 {{!Backwards compat for now: Treat DeviceTypeList as DeviceList.  Ideally we would have both, not just DeviceList. }}
 {{#*inline "attribute"}}Attribute{{#if (isStrEqual (asUpperCamelCase parent.name) "Descriptor")}}{{#if (isStrEqual (asUpperCamelCase name) "DeviceTypeList")}}DeviceList{{else}}{{asUpperCamelCase name}}{{/if}}{{else}}{{asUpperCamelCase name}}{{/if}}{{/inline}}
 {{! TODO: We need a better setup for the API_AVALABLE annotations here; this does not scale at all sanely. }}
-- (NSDictionary *)read{{>attribute}}WithParams:(MTRReadParams * _Nullable)params {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
+- (NSDictionary *)read{{>attribute}}WithParams:(MTRReadParams * _Nullable)params {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
 {{#if isWritableAttribute}}
-- (void)write{{>attribute}}WithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
-- (void)write{{>attribute}}WithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs params:(MTRWriteParams * _Nullable)params {{#if (isStrEqual (asUpperCamelCase parent.name) "TestCluster")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
+- (void)write{{>attribute}}WithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
+- (void)write{{>attribute}}WithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs params:(MTRWriteParams * _Nullable)params {{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}{{#if (isStrEqual (asUpperCamelCase name) "WriteOnlyInt8u")}}API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)){{/if}}{{/if}};
 {{/if}}
 {{/chip_server_cluster_attributes}}
 
@@ -49,17 +52,21 @@ NS_ASSUME_NONNULL_BEGIN
 
 {{/chip_client_clusters}}
 
+MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTesting")
+@interface MTRClusterTestCluster : MTRClusterUnitTesting
+@end
+
 {{#chip_client_clusters includeAll=true}}
-@interface MTRCluster{{asUpperCamelCase name}} (Deprecated)
+@interface MTRCluster{{compatClusterNameRemapping name}} (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpoindID:queue:");
 
 {{#chip_cluster_commands}}
-- (void){{asLowerCamelCase name}}WithParams:(MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:({{>command_completion_type command=.}})completionHandler MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithParams:expectedValues:expectedValueIntervalMs:completion:");
+- (void){{asLowerCamelCase name}}WithParams:(MTR{{compatClusterNameRemapping parent.name}}Cluster{{asUpperCamelCase name}}Params * {{#unless (commandHasRequiredField .)}}_Nullable{{/unless}})params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithParams:expectedValues:expectedValueIntervalMs:completion:");
 {{#unless (hasArguments)}}
-- (void){{asLowerCamelCase name}}WithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completionHandler:({{>command_completion_type command=.}})completionHandler MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithExpectedValues:expectedValueIntervalMs:completion:");
+- (void){{asLowerCamelCase name}}WithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completionHandler:({{>command_completion_type command=. compatRemapClusterName=true}})completionHandler MTR_NEWLY_DEPRECATED("Please use {{asLowerCamelCase name}}WithExpectedValues:expectedValueIntervalMs:completion:");
 {{/unless}}
 {{/chip_cluster_commands}}
 @end
diff --git a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc-src.zapt b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc-src.zapt
index 94e7ffff02b86c..55b806d24cc03c 100644
--- a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc-src.zapt
@@ -38,6 +38,11 @@ NS_ASSUME_NONNULL_BEGIN
 }
 
 @end
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+
+@implementation MTRTestClusterCluster{{asUpperCamelCase name}}Params
+@end
+{{/if}}
 {{/zcl_commands}}
 {{/zcl_clusters}}
 
diff --git a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
index 8b7e54e4db3435..78a0c88f39d69f 100644
--- a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
@@ -7,6 +7,9 @@ NS_ASSUME_NONNULL_BEGIN
 
 {{#zcl_clusters}}
 {{#zcl_commands}}
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
 @interface MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Params : NSObject 
 {{#zcl_command_arguments}}
 
@@ -33,6 +36,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingCluster{{asUpperCamelCase name}}Params")
+@interface MTRTestClusterCluster{{asUpperCamelCase name}}Params : MTRUnitTestingCluster{{asUpperCamelCase name}}Params
+@end
+
+{{/if}}
 {{/zcl_commands}}
 {{/zcl_clusters}}
 
diff --git a/src/darwin/Framework/CHIP/templates/MTRStructsObjc-src.zapt b/src/darwin/Framework/CHIP/templates/MTRStructsObjc-src.zapt
index 0aaed6de75e95e..fe5a9a1a7a19f3 100644
--- a/src/darwin/Framework/CHIP/templates/MTRStructsObjc-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRStructsObjc-src.zapt
@@ -45,6 +45,9 @@ NS_ASSUME_NONNULL_BEGIN
 {{#if (isStrEqual (asUpperCamelCase name) "DeviceTypeStruct")}}
 {{> interfaceImpl interfaceName="MTRDescriptorClusterDeviceType"}}
 {{/if}}
+{{else if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+@implementation MTRTestClusterCluster{{asUpperCamelCase name}} : MTRUnitTestingCluster{{asUpperCamelCase name}}
+@end
 {{/if}}
 
 {{/zcl_structs}}
@@ -79,6 +82,11 @@ NS_ASSUME_NONNULL_BEGIN
 }
 
 @end
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+
+@implementation MTRTestClusterCluster{{asUpperCamelCase name}}Event : MTRUnitTestingCluster{{asUpperCamelCase name}}Event
+@end
+{{/if}}
 
 {{/zcl_events}}
 
diff --git a/src/darwin/Framework/CHIP/templates/MTRStructsObjc.zapt b/src/darwin/Framework/CHIP/templates/MTRStructsObjc.zapt
index 4ebd3f75572ab1..20dd2836a21e21 100644
--- a/src/darwin/Framework/CHIP/templates/MTRStructsObjc.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRStructsObjc.zapt
@@ -21,6 +21,8 @@ NS_ASSUME_NONNULL_BEGIN
 {{#if (isStrEqual (asUpperCamelCase name) "DeviceTypeStruct")}}
 API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 {{/if}}
+{{else if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
 {{/if}}
 @interface MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}} : NSObject 
 {{> interfaceDecl}}
@@ -33,10 +35,17 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 {{> interfaceDecl}}
 @end
 {{/if}}
+{{else if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingCluster{{asUpperCamelCase name}}")
+@interface MTRTestClusterCluster{{asUpperCamelCase name}} : MTRUnitTestingCluster{{asUpperCamelCase name}}
+@end
 {{/if}}
 {{/zcl_structs}}
 
 {{#zcl_events}}
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+MTR_NEWLY_AVAILABLE
+{{/if}}
 @interface MTR{{asUpperCamelCase parent.name}}Cluster{{asUpperCamelCase name}}Event : NSObject 
 {{#zcl_event_fields}}
 @property (nonatomic, copy{{#unless (isStrEqual (asGetterName name) (asStructPropertyName name))}}, getter={{asGetterName name}}{{/unless}}) {{asObjectiveCType type parent.parent.name}} {{asStructPropertyName name}};
@@ -45,6 +54,12 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+{{#if (isStrEqual (asUpperCamelCase parent.name) "UnitTesting")}}
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingCluster{{asUpperCamelCase name}}Event")
+@interface MTRTestClusterCluster{{asUpperCamelCase name}}Event : MTRUnitTestingCluster{{asUpperCamelCase name}}Event
+@end
+{{/if}}
 
 {{/zcl_events}}
 
diff --git a/src/darwin/Framework/CHIP/templates/partials/command_completion_type.zapt b/src/darwin/Framework/CHIP/templates/partials/command_completion_type.zapt
index 5e99dc53e9adc8..124d82564ed926 100644
--- a/src/darwin/Framework/CHIP/templates/partials/command_completion_type.zapt
+++ b/src/darwin/Framework/CHIP/templates/partials/command_completion_type.zapt
@@ -1,5 +1,12 @@
 {{#if command.hasSpecificResponse}}
-void (^)(MTR{{asUpperCamelCase command.parent.name}}Cluster{{asUpperCamelCase command.responseName}}Params * _Nullable data, NSError * _Nullable error)
+{{#*inline "clusterName"}}
+{{~#if compatRemapClusterName~}}
+{{compatClusterNameRemapping command.parent.name}}
+{{~else~}}
+{{asUpperCamelCase command.parent.name}}
+{{~/if~}}
+{{/inline}}
+void (^)(MTR{{> clusterName}}Cluster{{asUpperCamelCase command.responseName}}Params * _Nullable data, NSError * _Nullable error)
 {{else}}
 MTRStatusCompletion
 {{/if}}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 73bf001670bd17..71cb04f61e78ac 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -18325,6 +18325,7 @@ labels.
  * Cluster Unit Testing
  *    The Test Cluster is meant to validate the generated code
  */
+MTR_NEWLY_AVAILABLE
 @interface MTRBaseClusterUnitTesting : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
@@ -20191,6 +20192,10 @@ labels.
 
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRBaseClusterUnitTesting")
+@interface MTRBaseClusterTestCluster : MTRBaseClusterUnitTesting
+@end
+
 typedef NS_ENUM(uint8_t, MTRIdentifyEffectIdentifier) {
     MTRIdentifyEffectIdentifierBlink = 0x00,
     MTRIdentifyEffectIdentifierBreathe = 0x01,
@@ -21595,41 +21600,82 @@ typedef NS_ENUM(uint8_t, MTRUnitTestingSimple) {
     MTRUnitTestingSimpleValueA = 0x01,
     MTRUnitTestingSimpleValueB = 0x02,
     MTRUnitTestingSimpleValueC = 0x03,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRTestClusterSimple) {
+    MTRTestClusterSimpleUnspecified = 0x00,
+    MTRTestClusterSimpleValueA = 0x01,
+    MTRTestClusterSimpleValueB = 0x02,
+    MTRTestClusterSimpleValueC = 0x03,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingSimple");
 
 typedef NS_OPTIONS(uint16_t, MTRUnitTestingBitmap16MaskMap) {
     MTRUnitTestingBitmap16MaskMapMaskVal1 = 0x1,
     MTRUnitTestingBitmap16MaskMapMaskVal2 = 0x2,
     MTRUnitTestingBitmap16MaskMapMaskVal3 = 0x4,
     MTRUnitTestingBitmap16MaskMapMaskVal4 = 0x4000,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint16_t, MTRTestClusterBitmap16MaskMap) {
+    MTRTestClusterBitmap16MaskMapMaskVal1 = 0x1,
+    MTRTestClusterBitmap16MaskMapMaskVal2 = 0x2,
+    MTRTestClusterBitmap16MaskMapMaskVal3 = 0x4,
+    MTRTestClusterBitmap16MaskMapMaskVal4 = 0x4000,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingBitmap16MaskMap");
 
 typedef NS_OPTIONS(uint32_t, MTRUnitTestingBitmap32MaskMap) {
     MTRUnitTestingBitmap32MaskMapMaskVal1 = 0x1,
     MTRUnitTestingBitmap32MaskMapMaskVal2 = 0x2,
     MTRUnitTestingBitmap32MaskMapMaskVal3 = 0x4,
     MTRUnitTestingBitmap32MaskMapMaskVal4 = 0x40000000,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint32_t, MTRTestClusterBitmap32MaskMap) {
+    MTRTestClusterBitmap32MaskMapMaskVal1 = 0x1,
+    MTRTestClusterBitmap32MaskMapMaskVal2 = 0x2,
+    MTRTestClusterBitmap32MaskMapMaskVal3 = 0x4,
+    MTRTestClusterBitmap32MaskMapMaskVal4 = 0x40000000,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingBitmap32MaskMap");
 
 typedef NS_OPTIONS(uint64_t, MTRUnitTestingBitmap64MaskMap) {
     MTRUnitTestingBitmap64MaskMapMaskVal1 = 0x1,
     MTRUnitTestingBitmap64MaskMapMaskVal2 = 0x2,
     MTRUnitTestingBitmap64MaskMapMaskVal3 = 0x4,
     MTRUnitTestingBitmap64MaskMapMaskVal4 = 0x4000000000000000,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint64_t, MTRTestClusterBitmap64MaskMap) {
+    MTRTestClusterBitmap64MaskMapMaskVal1 = 0x1,
+    MTRTestClusterBitmap64MaskMapMaskVal2 = 0x2,
+    MTRTestClusterBitmap64MaskMapMaskVal3 = 0x4,
+    MTRTestClusterBitmap64MaskMapMaskVal4 = 0x4000000000000000,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingBitmap64MaskMap");
 
 typedef NS_OPTIONS(uint8_t, MTRUnitTestingBitmap8MaskMap) {
     MTRUnitTestingBitmap8MaskMapMaskVal1 = 0x1,
     MTRUnitTestingBitmap8MaskMapMaskVal2 = 0x2,
     MTRUnitTestingBitmap8MaskMapMaskVal3 = 0x4,
     MTRUnitTestingBitmap8MaskMapMaskVal4 = 0x40,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint8_t, MTRTestClusterBitmap8MaskMap) {
+    MTRTestClusterBitmap8MaskMapMaskVal1 = 0x1,
+    MTRTestClusterBitmap8MaskMapMaskVal2 = 0x2,
+    MTRTestClusterBitmap8MaskMapMaskVal3 = 0x4,
+    MTRTestClusterBitmap8MaskMapMaskVal4 = 0x40,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingBitmap8MaskMap");
 
 typedef NS_OPTIONS(uint8_t, MTRUnitTestingSimpleBitmap) {
     MTRUnitTestingSimpleBitmapValueA = 0x1,
     MTRUnitTestingSimpleBitmapValueB = 0x2,
     MTRUnitTestingSimpleBitmapValueC = 0x4,
-};
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint8_t, MTRTestClusterSimpleBitmap) {
+    MTRTestClusterSimpleBitmapValueA = 0x1,
+    MTRTestClusterSimpleBitmapValueB = 0x2,
+    MTRTestClusterSimpleBitmapValueC = 0x4,
+} MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingSimpleBitmap");
 
 typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
     MTRFaultInjectionFaultTypeUnspecified = 0x00,
@@ -40685,107 +40731,107 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
 
 @end
 
-@interface MTRBaseClusterUnitTesting (Deprecated)
+@interface MTRBaseClusterTestCluster (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpointID:queue:");
 
-- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
      completionHandler:(MTRStatusCompletion)completionHandler MTR_NEWLY_DEPRECATED("Please use testWithParams:completion:");
 - (void)testWithCompletionHandler:(MTRStatusCompletion)completionHandler MTR_NEWLY_DEPRECATED("Please use testWithCompletion:");
-- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
                completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithParams:completion:");
 - (void)testNotHandledWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithCompletion:");
-- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
-             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithParams:completion:");
 - (void)testSpecificWithCompletionHandler:
-    (void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
+    (void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithCompletion:");
-- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithParams:completion:");
 - (void)testUnknownCommandWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithCompletion:");
-- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
+                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testAddArgumentsWithParams:completion:");
-- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleArgumentRequestWithParams:completion:");
-- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
                                completionHandler:
-                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArrayArgumentRequestWithParams:completion:");
-- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArgumentRequestWithParams:completion:");
-- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
-                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructArgumentRequestWithParams:completion:");
-- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
-                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListStructArgumentRequestWithParams:completion:");
-- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
-                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UArgumentRequestWithParams:completion:");
-- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
-                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructListArgumentRequestWithParams:completion:");
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
-                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListNestedStructListArgumentRequestWithParams:completion:");
-- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UReverseRequestWithParams:completion:");
-- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEnumsRequestWithParams:completion:");
-- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNullableOptionalRequestWithParams:completion:");
-- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
                                    completionHandler:
-                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testComplexNullableOptionalRequestWithParams:completion:");
-- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
-                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
+- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use simpleStructEchoRequestWithParams:completion:");
-- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithParams:completion:");
 - (void)timedInvokeRequestWithCompletionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithCompletion:");
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                   completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleOptionalArgumentRequestWithParams:completion:");
-- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
-                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestEventRequestWithParams:completion:");
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
                                      completionHandler:
                                          (void (^)(
-                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestFabricScopedEventRequestWithParams:completion:");
 
@@ -41596,12 +41642,12 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
     MTR_NEWLY_DEPRECATED("Please use readAttributeEnumAttrWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeStructAttrWithCompletionHandler:
-    (void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
+    (void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeStructAttrWithCompletion:");
-- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
                         completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeStructAttrWithValue:completion:");
-- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                         completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeStructAttrWithValue:params:completion:");
@@ -41609,13 +41655,13 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
                                              params:(MTRSubscribeParams * _Nullable)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                      reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_DEPRECATED("Please use subscribeAttributeStructAttrWithParams:subscriptionEstablished:");
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeStructAttrWithAttributeCache:endpoint:queue:completion:");
 
@@ -42543,12 +42589,12 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableEnumAttrWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeNullableStructWithCompletionHandler:
-    (void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
+    (void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value, NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableStructWithCompletion:");
-- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
                             completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeNullableStructWithValue:completion:");
-- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use writeAttributeNullableStructWithValue:params:completion:");
@@ -42556,13 +42602,13 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                          reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                          reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_DEPRECATED("Please use subscribeAttributeNullableStructWithParams:subscriptionEstablished:");
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                    completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                    completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use readAttributeNullableStructWithAttributeCache:endpoint:queue:completion:");
 
@@ -42668,27 +42714,32 @@ typedef NS_ENUM(uint8_t, MTRFaultInjectionFaultType) {
 
 - (void)readAttributeWriteOnlyInt8uWithCompletionHandler:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
-    MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithCompletion:");
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+        MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithCompletion:");
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
                             completionHandler:(MTRStatusCompletion)completionHandler
-    MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:completion:");
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+        MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:completion:");
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
-    MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:params:completion:");
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+        MTR_NEWLY_DEPRECATED("Please use writeAttributeWriteOnlyInt8uWithValue:params:completion:");
 - (void)subscribeAttributeWriteOnlyInt8uWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-    MTR_NEWLY_DEPRECATED("Please use subscribeAttributeWriteOnlyInt8uWithParams:subscriptionEstablished:");
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+        MTR_NEWLY_DEPRECATED("Please use subscribeAttributeWriteOnlyInt8uWithParams:subscriptionEstablished:");
 + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
-    MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithAttributeCache:endpoint:queue:completion:");
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+        MTR_NEWLY_DEPRECATED("Please use readAttributeWriteOnlyInt8uWithAttributeCache:endpoint:queue:completion:");
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:
     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 40376187356587..72df3810579762 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -660,7 +660,10 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params
 - (void)readAttributeIdentifyTimeWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIdentifyTimeWithCompletion:completionHandler];
+    [self readAttributeIdentifyTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeIdentifyTimeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -687,7 +690,10 @@ - (void)subscribeAttributeIdentifyTimeWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeIdentifyTimeWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -698,13 +704,19 @@ + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeIdentifyTimeWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeIdentifyTypeWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIdentifyTypeWithCompletion:completionHandler];
+    [self readAttributeIdentifyTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeIdentifyTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -721,7 +733,10 @@ - (void)subscribeAttributeIdentifyTypeWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeIdentifyTypeWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -732,13 +747,19 @@ + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeIdentifyTypeWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -757,7 +778,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -768,13 +792,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -793,7 +823,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -804,13 +837,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -827,7 +866,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -838,13 +880,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -861,7 +909,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -871,13 +922,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -895,7 +952,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -906,7 +966,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -1543,25 +1606,42 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params
          completionHandler:
              (void (^)(MTRGroupsClusterAddGroupResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self addGroupWithParams:params completion:completionHandler];
+    [self addGroupWithParams:params
+                  completion:^(MTRGroupsClusterAddGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                      // Cast is safe because subclass does not add any selectors.
+                      completionHandler(static_cast(data), error);
+                  }];
 }
 - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
           completionHandler:
               (void (^)(MTRGroupsClusterViewGroupResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self viewGroupWithParams:params completion:completionHandler];
+    [self viewGroupWithParams:params
+                   completion:^(MTRGroupsClusterViewGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *)params
                    completionHandler:(void (^)(MTRGroupsClusterGetGroupMembershipResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self getGroupMembershipWithParams:params completion:completionHandler];
+    [self getGroupMembershipWithParams:params
+                            completion:^(
+                                MTRGroupsClusterGetGroupMembershipResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
             completionHandler:
                 (void (^)(MTRGroupsClusterRemoveGroupResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self removeGroupWithParams:params completion:completionHandler];
+    [self removeGroupWithParams:params
+                     completion:^(MTRGroupsClusterRemoveGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Nullable)params
                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -1570,7 +1650,7 @@ - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Null
 }
 - (void)removeAllGroupsWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self removeAllGroupsWithParams:nil completion:completionHandler];
+    [self removeAllGroupsWithParams:nil completionHandler:completionHandler];
 }
 - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingParams *)params
                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -1581,7 +1661,10 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa
 - (void)readAttributeNameSupportWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNameSupportWithCompletion:completionHandler];
+    [self readAttributeNameSupportWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNameSupportWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1598,7 +1681,10 @@ - (void)subscribeAttributeNameSupportWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeNameSupportWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -1609,13 +1695,19 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeNameSupportWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1634,7 +1726,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -1645,13 +1740,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1670,7 +1771,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -1681,13 +1785,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1704,7 +1814,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -1715,13 +1828,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1738,7 +1857,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -1748,13 +1870,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -1772,7 +1900,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -1783,7 +1914,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -3008,31 +3142,51 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params
          completionHandler:
              (void (^)(MTRScenesClusterAddSceneResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self addSceneWithParams:params completion:completionHandler];
+    [self addSceneWithParams:params
+                  completion:^(MTRScenesClusterAddSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                      // Cast is safe because subclass does not add any selectors.
+                      completionHandler(static_cast(data), error);
+                  }];
 }
 - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
           completionHandler:
               (void (^)(MTRScenesClusterViewSceneResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self viewSceneWithParams:params completion:completionHandler];
+    [self viewSceneWithParams:params
+                   completion:^(MTRScenesClusterViewSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
             completionHandler:
                 (void (^)(MTRScenesClusterRemoveSceneResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self removeSceneWithParams:params completion:completionHandler];
+    [self removeSceneWithParams:params
+                     completion:^(MTRScenesClusterRemoveSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)params
                 completionHandler:(void (^)(MTRScenesClusterRemoveAllScenesResponseParams * _Nullable data,
                                       NSError * _Nullable error))completionHandler
 {
-    [self removeAllScenesWithParams:params completion:completionHandler];
+    [self removeAllScenesWithParams:params
+                         completion:^(MTRScenesClusterRemoveAllScenesResponseParams * _Nullable data, NSError * _Nullable error) {
+                             // Cast is safe because subclass does not add any selectors.
+                             completionHandler(static_cast(data), error);
+                         }];
 }
 - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
            completionHandler:
                (void (^)(MTRScenesClusterStoreSceneResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self storeSceneWithParams:params completion:completionHandler];
+    [self storeSceneWithParams:params
+                    completion:^(MTRScenesClusterStoreSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -3042,31 +3196,52 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *
                    completionHandler:(void (^)(MTRScenesClusterGetSceneMembershipResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self getSceneMembershipWithParams:params completion:completionHandler];
+    [self getSceneMembershipWithParams:params
+                            completion:^(
+                                MTRScenesClusterGetSceneMembershipResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)params
                  completionHandler:(void (^)(MTRScenesClusterEnhancedAddSceneResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self enhancedAddSceneWithParams:params completion:completionHandler];
+    [self enhancedAddSceneWithParams:params
+                          completion:^(MTRScenesClusterEnhancedAddSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
 - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)params
                   completionHandler:(void (^)(MTRScenesClusterEnhancedViewSceneResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self enhancedViewSceneWithParams:params completion:completionHandler];
+    [self
+        enhancedViewSceneWithParams:params
+                         completion:^(MTRScenesClusterEnhancedViewSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                             // Cast is safe because subclass does not add any selectors.
+                             completionHandler(static_cast(data), error);
+                         }];
 }
 - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
           completionHandler:
               (void (^)(MTRScenesClusterCopySceneResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self copySceneWithParams:params completion:completionHandler];
+    [self copySceneWithParams:params
+                   completion:^(MTRScenesClusterCopySceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 
 - (void)readAttributeSceneCountWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSceneCountWithCompletion:completionHandler];
+    [self readAttributeSceneCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSceneCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3083,7 +3258,10 @@ - (void)subscribeAttributeSceneCountWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeSceneCountWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -3093,13 +3271,19 @@ + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeSceneCountWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeCurrentSceneWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentSceneWithCompletion:completionHandler];
+    [self readAttributeCurrentSceneWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentSceneWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3116,7 +3300,10 @@ - (void)subscribeAttributeCurrentSceneWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeCurrentSceneWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -3127,13 +3314,19 @@ + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentSceneWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeCurrentGroupWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentGroupWithCompletion:completionHandler];
+    [self readAttributeCurrentGroupWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentGroupWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3150,7 +3343,10 @@ - (void)subscribeAttributeCurrentGroupWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeCurrentGroupWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -3161,13 +3357,19 @@ + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentGroupWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSceneValidWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSceneValidWithCompletion:completionHandler];
+    [self readAttributeSceneValidWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSceneValidWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3184,7 +3386,10 @@ - (void)subscribeAttributeSceneValidWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeSceneValidWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -3194,13 +3399,19 @@ + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeSceneValidWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeNameSupportWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNameSupportWithCompletion:completionHandler];
+    [self readAttributeNameSupportWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNameSupportWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3217,7 +3428,10 @@ - (void)subscribeAttributeNameSupportWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeNameSupportWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -3228,13 +3442,19 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeNameSupportWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeLastConfiguredByWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastConfiguredByWithCompletion:completionHandler];
+    [self readAttributeLastConfiguredByWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeLastConfiguredByWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -3252,7 +3472,10 @@ - (void)readAttributeLastConfiguredByWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeLastConfiguredByWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -3263,13 +3486,19 @@ + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeLastConfiguredByWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3288,7 +3517,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -3299,13 +3531,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3324,7 +3562,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -3335,13 +3576,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3358,7 +3605,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -3369,13 +3619,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3392,7 +3648,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -3402,13 +3661,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -3426,7 +3691,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -3437,7 +3705,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -4470,7 +4741,7 @@ - (void)offWithParams:(MTROnOffClusterOffParams * _Nullable)params completionHan
 }
 - (void)offWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self offWithParams:nil completion:completionHandler];
+    [self offWithParams:nil completionHandler:completionHandler];
 }
 - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -4478,7 +4749,7 @@ - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params completionHandl
 }
 - (void)onWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self onWithParams:nil completion:completionHandler];
+    [self onWithParams:nil completionHandler:completionHandler];
 }
 - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -4486,7 +4757,7 @@ - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params complet
 }
 - (void)toggleWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self toggleWithParams:nil completion:completionHandler];
+    [self toggleWithParams:nil completionHandler:completionHandler];
 }
 - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params
               completionHandler:(MTRStatusCompletion)completionHandler
@@ -4500,7 +4771,7 @@ - (void)onWithRecallGlobalSceneWithParams:(MTROnOffClusterOnWithRecallGlobalScen
 }
 - (void)onWithRecallGlobalSceneWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self onWithRecallGlobalSceneWithParams:nil completion:completionHandler];
+    [self onWithRecallGlobalSceneWithParams:nil completionHandler:completionHandler];
 }
 - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params
                completionHandler:(MTRStatusCompletion)completionHandler
@@ -4510,7 +4781,10 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params
 
 - (void)readAttributeOnOffWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnOffWithCompletion:completionHandler];
+    [self readAttributeOnOffWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOnOffWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4527,20 +4801,32 @@ - (void)subscribeAttributeOnOffWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeOnOffWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnOffWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeOnOffWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeGlobalSceneControlWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGlobalSceneControlWithCompletion:completionHandler];
+    [self readAttributeGlobalSceneControlWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGlobalSceneControlWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4559,7 +4845,10 @@ - (void)subscribeAttributeGlobalSceneControlWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeGlobalSceneControlWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -4570,12 +4859,18 @@ + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeGlobalSceneControlWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeOnTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnTimeWithCompletion:completionHandler];
+    [self readAttributeOnTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOnTimeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -4602,20 +4897,32 @@ - (void)subscribeAttributeOnTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeOnTimeWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnTimeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeOnTimeWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeOffWaitTimeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOffWaitTimeWithCompletion:completionHandler];
+    [self readAttributeOffWaitTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOffWaitTimeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -4642,7 +4949,10 @@ - (void)subscribeAttributeOffWaitTimeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeOffWaitTimeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -4653,13 +4963,19 @@ + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeOffWaitTimeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStartUpOnOffWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpOnOffWithCompletion:completionHandler];
+    [self readAttributeStartUpOnOffWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeStartUpOnOffWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -4686,7 +5002,10 @@ - (void)subscribeAttributeStartUpOnOffWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeStartUpOnOffWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -4697,13 +5016,19 @@ + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeStartUpOnOffWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4722,7 +5047,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -4733,13 +5061,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4758,7 +5092,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -4769,13 +5106,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4792,7 +5135,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -4803,13 +5149,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4826,7 +5178,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -4836,13 +5191,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -4860,7 +5221,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -4871,7 +5235,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -5442,7 +5809,10 @@ @implementation MTRBaseClusterOnOffSwitchConfiguration (Deprecated)
 - (void)readAttributeSwitchTypeWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSwitchTypeWithCompletion:completionHandler];
+    [self readAttributeSwitchTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSwitchTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5459,7 +5829,10 @@ - (void)subscribeAttributeSwitchTypeWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeSwitchTypeWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -5469,13 +5842,19 @@ + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeSwitchTypeWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeSwitchActionsWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSwitchActionsWithCompletion:completionHandler];
+    [self readAttributeSwitchActionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSwitchActionsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -5503,7 +5882,10 @@ - (void)subscribeAttributeSwitchActionsWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeSwitchActionsWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -5514,13 +5896,19 @@ + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSwitchActionsWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5539,7 +5927,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -5550,13 +5941,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5575,7 +5972,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -5586,13 +5986,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5609,7 +6015,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -5620,13 +6029,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5643,7 +6058,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -5653,13 +6071,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -5677,7 +6101,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -5688,7 +6115,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -7672,7 +8102,10 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre
 - (void)readAttributeCurrentLevelWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentLevelWithCompletion:completionHandler];
+    [self readAttributeCurrentLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7689,7 +8122,10 @@ - (void)subscribeAttributeCurrentLevelWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeCurrentLevelWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -7700,13 +8136,19 @@ + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentLevelWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeRemainingTimeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemainingTimeWithCompletion:completionHandler];
+    [self readAttributeRemainingTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRemainingTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7724,7 +8166,10 @@ - (void)subscribeAttributeRemainingTimeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRemainingTimeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -7735,13 +8180,19 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRemainingTimeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinLevelWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinLevelWithCompletion:completionHandler];
+    [self readAttributeMinLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7758,7 +8209,10 @@ - (void)subscribeAttributeMinLevelWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeMinLevelWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -7768,13 +8222,19 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeMinLevelWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeMaxLevelWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxLevelWithCompletion:completionHandler];
+    [self readAttributeMaxLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7791,7 +8251,10 @@ - (void)subscribeAttributeMaxLevelWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeMaxLevelWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -7801,13 +8264,19 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeMaxLevelWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeCurrentFrequencyWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentFrequencyWithCompletion:completionHandler];
+    [self readAttributeCurrentFrequencyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeCurrentFrequencyWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -7825,7 +8294,10 @@ - (void)readAttributeCurrentFrequencyWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeCurrentFrequencyWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -7836,13 +8308,19 @@ + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeCurrentFrequencyWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinFrequencyWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinFrequencyWithCompletion:completionHandler];
+    [self readAttributeMinFrequencyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinFrequencyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7859,7 +8337,10 @@ - (void)subscribeAttributeMinFrequencyWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMinFrequencyWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -7870,13 +8351,19 @@ + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMinFrequencyWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeMaxFrequencyWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxFrequencyWithCompletion:completionHandler];
+    [self readAttributeMaxFrequencyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxFrequencyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -7893,7 +8380,10 @@ - (void)subscribeAttributeMaxFrequencyWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMaxFrequencyWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -7904,12 +8394,18 @@ + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMaxFrequencyWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeOptionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOptionsWithCompletion:completionHandler];
+    [self readAttributeOptionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -7936,7 +8432,10 @@ - (void)subscribeAttributeOptionsWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeOptionsWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -7946,13 +8445,19 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeOptionsWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeOnOffTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnOffTransitionTimeWithCompletion:completionHandler];
+    [self readAttributeOnOffTransitionTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOnOffTransitionTimeWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -7982,7 +8487,10 @@ - (void)subscribeAttributeOnOffTransitionTimeWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeOnOffTransitionTimeWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -7993,12 +8501,18 @@ + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeOnOffTransitionTimeWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOnLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnLevelWithCompletion:completionHandler];
+    [self readAttributeOnLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOnLevelWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -8025,7 +8539,10 @@ - (void)subscribeAttributeOnLevelWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeOnLevelWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -8035,13 +8552,19 @@ + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeOnLevelWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeOnTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnTransitionTimeWithCompletion:completionHandler];
+    [self readAttributeOnTransitionTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -8069,7 +8592,10 @@ - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value
     }
     [self subscribeAttributeOnTransitionTimeWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -8080,13 +8606,19 @@ + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeOnTransitionTimeWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeOffTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOffTransitionTimeWithCompletion:completionHandler];
+    [self readAttributeOffTransitionTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOffTransitionTimeWithValue:(NSNumber * _Nullable)value
                                completionHandler:(MTRStatusCompletion)completionHandler
@@ -8116,7 +8648,10 @@ - (void)subscribeAttributeOffTransitionTimeWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeOffTransitionTimeWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -8127,13 +8662,19 @@ + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeOffTransitionTimeWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeDefaultMoveRateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultMoveRateWithCompletion:completionHandler];
+    [self readAttributeDefaultMoveRateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeDefaultMoveRateWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -8161,7 +8702,10 @@ - (void)subscribeAttributeDefaultMoveRateWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeDefaultMoveRateWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -8172,13 +8716,19 @@ + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeDefaultMoveRateWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeStartUpCurrentLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpCurrentLevelWithCompletion:completionHandler];
+    [self readAttributeStartUpCurrentLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeStartUpCurrentLevelWithValue:(NSNumber * _Nullable)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -8208,7 +8758,10 @@ - (void)subscribeAttributeStartUpCurrentLevelWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeStartUpCurrentLevelWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -8219,13 +8772,19 @@ + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeStartUpCurrentLevelWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -8244,7 +8803,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -8255,13 +8817,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -8280,7 +8848,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -8291,13 +8862,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -8314,7 +8891,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -8325,13 +8905,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -8348,7 +8934,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -8358,13 +8947,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -8382,7 +8977,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -8393,7 +8991,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -9631,7 +10232,10 @@ @implementation MTRBaseClusterBinaryInputBasic (Deprecated)
 - (void)readAttributeActiveTextWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveTextWithCompletion:completionHandler];
+    [self readAttributeActiveTextWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeActiveTextWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9658,7 +10262,10 @@ - (void)subscribeAttributeActiveTextWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeActiveTextWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -9668,13 +10275,19 @@ + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeActiveTextWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeDescriptionWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithCompletion:completionHandler];
+    [self readAttributeDescriptionWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeDescriptionWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9701,7 +10314,10 @@ - (void)subscribeAttributeDescriptionWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeDescriptionWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -9712,13 +10328,19 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeInactiveTextWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInactiveTextWithCompletion:completionHandler];
+    [self readAttributeInactiveTextWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInactiveTextWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9745,7 +10367,10 @@ - (void)subscribeAttributeInactiveTextWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeInactiveTextWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -9756,13 +10381,19 @@ + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeInactiveTextWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeOutOfServiceWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutOfServiceWithCompletion:completionHandler];
+    [self readAttributeOutOfServiceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOutOfServiceWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9789,7 +10420,10 @@ - (void)subscribeAttributeOutOfServiceWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeOutOfServiceWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -9800,13 +10434,19 @@ + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOutOfServiceWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePolarityWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePolarityWithCompletion:completionHandler];
+    [self readAttributePolarityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePolarityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -9823,7 +10463,10 @@ - (void)subscribeAttributePolarityWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributePolarityWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -9833,13 +10476,19 @@ + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributePolarityWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributePresentValueWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePresentValueWithCompletion:completionHandler];
+    [self readAttributePresentValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePresentValueWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9866,7 +10515,10 @@ - (void)subscribeAttributePresentValueWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributePresentValueWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -9877,13 +10529,19 @@ + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributePresentValueWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeReliabilityWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReliabilityWithCompletion:completionHandler];
+    [self readAttributeReliabilityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeReliabilityWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -9910,7 +10568,10 @@ - (void)subscribeAttributeReliabilityWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeReliabilityWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -9921,13 +10582,19 @@ + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeReliabilityWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStatusFlagsWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusFlagsWithCompletion:completionHandler];
+    [self readAttributeStatusFlagsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStatusFlagsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -9944,7 +10611,10 @@ - (void)subscribeAttributeStatusFlagsWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeStatusFlagsWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -9955,13 +10625,19 @@ + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeStatusFlagsWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeApplicationTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationTypeWithCompletion:completionHandler];
+    [self readAttributeApplicationTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApplicationTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -9979,7 +10655,10 @@ - (void)subscribeAttributeApplicationTypeWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeApplicationTypeWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -9990,13 +10669,19 @@ + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeApplicationTypeWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10015,7 +10700,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -10026,13 +10714,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10051,7 +10745,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -10062,13 +10759,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10085,7 +10788,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -10096,13 +10802,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10119,7 +10831,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -10129,13 +10844,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10153,7 +10874,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -10164,7 +10888,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -10834,7 +11561,10 @@ @implementation MTRBaseClusterDescriptor (Deprecated)
 - (void)readAttributeDeviceListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDeviceTypeListWithCompletion:completionHandler];
+    [self readAttributeDeviceTypeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDeviceListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10851,7 +11581,10 @@ - (void)subscribeAttributeDeviceListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeDeviceTypeListWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeDeviceListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -10861,13 +11594,19 @@ + (void)readAttributeDeviceListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeDeviceTypeListWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeServerListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeServerListWithCompletion:completionHandler];
+    [self readAttributeServerListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeServerListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10884,7 +11623,10 @@ - (void)subscribeAttributeServerListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeServerListWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -10894,13 +11636,19 @@ + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeServerListWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClientListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClientListWithCompletion:completionHandler];
+    [self readAttributeClientListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClientListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10917,7 +11665,10 @@ - (void)subscribeAttributeClientListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeClientListWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -10927,13 +11678,19 @@ + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeClientListWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributePartsListWithCompletionHandler:(void (^)(
                                                         NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartsListWithCompletion:completionHandler];
+    [self readAttributePartsListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePartsListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10950,7 +11707,10 @@ - (void)subscribeAttributePartsListWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePartsListWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -10960,13 +11720,19 @@ + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePartsListWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -10985,7 +11751,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -10996,13 +11765,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11021,7 +11796,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -11032,13 +11810,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11055,7 +11839,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -11066,13 +11853,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11089,7 +11882,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -11099,13 +11895,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11123,7 +11925,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -11134,7 +11939,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -11667,7 +12475,11 @@ @implementation MTRBaseClusterBinding (Deprecated)
 - (void)readAttributeBindingWithParams:(MTRReadParams * _Nullable)params
                      completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBindingWithParams:params completion:completionHandler];
+    [self readAttributeBindingWithParams:params
+                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  completionHandler(static_cast(value), error);
+                              }];
 }
 - (void)writeAttributeBindingWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -11694,7 +12506,10 @@ - (void)subscribeAttributeBindingWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeBindingWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -11704,13 +12519,19 @@ + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeBindingWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11729,7 +12550,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -11740,13 +12564,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11765,7 +12595,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -11776,13 +12609,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11799,7 +12638,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -11810,13 +12652,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11833,7 +12681,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -11843,13 +12694,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -11867,7 +12724,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -11878,7 +12738,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -12825,7 +13688,11 @@ @implementation MTRBaseClusterAccessControl (Deprecated)
 - (void)readAttributeAclWithParams:(MTRReadParams * _Nullable)params
                  completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAclWithParams:params completion:completionHandler];
+    [self readAttributeAclWithParams:params
+                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(value), error);
+                          }];
 }
 - (void)writeAttributeAclWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -12852,20 +13719,33 @@ - (void)subscribeAttributeAclWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeAclWithParams:subscribeParams
                   subscriptionEstablished:subscriptionEstablishedHandler
-                            reportHandler:reportHandler];
+                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                reportHandler(static_cast(value), error);
+                            }];
 }
 + (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                   endpoint:(NSNumber *)endpoint
                                      queue:(dispatch_queue_t)queue
                          completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAclWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeAclWithAttributeCache:attributeCacheContainer
+                                    endpoint:endpoint
+                                       queue:queue
+                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(static_cast(value), error);
+                                  }];
 }
 
 - (void)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params
                        completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExtensionWithParams:params completion:completionHandler];
+    [self readAttributeExtensionWithParams:params
+                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    completionHandler(static_cast(value), error);
+                                }];
 }
 - (void)writeAttributeExtensionWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -12892,7 +13772,10 @@ - (void)subscribeAttributeExtensionWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeExtensionWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -12902,13 +13785,19 @@ + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeExtensionWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSubjectsPerAccessControlEntryWithCompletion:completionHandler];
+    [self readAttributeSubjectsPerAccessControlEntryWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -12927,7 +13816,10 @@ - (void)subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval:(NSNumber
     }
     [self subscribeAttributeSubjectsPerAccessControlEntryWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -12938,13 +13830,19 @@ + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttribu
     [self readAttributeSubjectsPerAccessControlEntryWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeTargetsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetsPerAccessControlEntryWithCompletion:completionHandler];
+    [self readAttributeTargetsPerAccessControlEntryWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTargetsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -12963,7 +13861,10 @@ - (void)subscribeAttributeTargetsPerAccessControlEntryWithMinInterval:(NSNumber
     }
     [self subscribeAttributeTargetsPerAccessControlEntryWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -12974,13 +13875,19 @@ + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttribut
     [self readAttributeTargetsPerAccessControlEntryWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeAccessControlEntriesPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAccessControlEntriesPerFabricWithCompletion:completionHandler];
+    [self readAttributeAccessControlEntriesPerFabricWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAccessControlEntriesPerFabricWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -12999,7 +13906,10 @@ - (void)subscribeAttributeAccessControlEntriesPerFabricWithMinInterval:(NSNumber
     }
     [self subscribeAttributeAccessControlEntriesPerFabricWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -13010,13 +13920,19 @@ + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttribu
     [self readAttributeAccessControlEntriesPerFabricWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -13035,7 +13951,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -13046,13 +13965,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -13071,7 +13996,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -13082,13 +14010,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -13105,7 +14039,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -13116,13 +14053,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -13139,7 +14082,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -13149,13 +14095,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -13173,7 +14125,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -13184,7 +14139,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -14220,7 +15178,10 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD
 - (void)readAttributeActionListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActionListWithCompletion:completionHandler];
+    [self readAttributeActionListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActionListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14237,7 +15198,10 @@ - (void)subscribeAttributeActionListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeActionListWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -14247,13 +15211,19 @@ + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeActionListWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeEndpointListsWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEndpointListsWithCompletion:completionHandler];
+    [self readAttributeEndpointListsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEndpointListsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14270,7 +15240,10 @@ - (void)subscribeAttributeEndpointListsWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeEndpointListsWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -14281,13 +15254,19 @@ + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeEndpointListsWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeSetupURLWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetupURLWithCompletion:completionHandler];
+    [self readAttributeSetupURLWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSetupURLWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14304,7 +15283,10 @@ - (void)subscribeAttributeSetupURLWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeSetupURLWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -14314,13 +15296,19 @@ + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeSetupURLWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14339,7 +15327,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -14350,13 +15341,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14375,7 +15372,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -14386,13 +15386,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14409,7 +15415,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -14420,13 +15429,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14443,7 +15458,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -14453,13 +15471,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -14477,7 +15501,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -14488,7 +15515,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -16407,13 +17437,16 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla
 }
 - (void)mfgSpecificPingWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self mfgSpecificPingWithParams:nil completion:completionHandler];
+    [self mfgSpecificPingWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeDataModelRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDataModelRevisionWithCompletion:completionHandler];
+    [self readAttributeDataModelRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDataModelRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16432,7 +17465,10 @@ - (void)subscribeAttributeDataModelRevisionWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeDataModelRevisionWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -16443,13 +17479,19 @@ + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeDataModelRevisionWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeVendorNameWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithCompletion:completionHandler];
+    [self readAttributeVendorNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16466,7 +17508,10 @@ - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeVendorNameWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -16476,13 +17521,19 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithCompletion:completionHandler];
+    [self readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16499,7 +17550,10 @@ - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeVendorIDWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -16509,13 +17563,19 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeProductNameWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductNameWithCompletion:completionHandler];
+    [self readAttributeProductNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16532,7 +17592,10 @@ - (void)subscribeAttributeProductNameWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeProductNameWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -16543,13 +17606,19 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeProductNameWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeProductIDWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductIDWithCompletion:completionHandler];
+    [self readAttributeProductIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16566,7 +17635,10 @@ - (void)subscribeAttributeProductIDWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeProductIDWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -16576,13 +17648,19 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeProductIDWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeNodeLabelWithCompletionHandler:(void (^)(
                                                         NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNodeLabelWithCompletion:completionHandler];
+    [self readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -16609,7 +17687,10 @@ - (void)subscribeAttributeNodeLabelWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeNodeLabelWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -16619,13 +17700,19 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeNodeLabelWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeLocationWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocationWithCompletion:completionHandler];
+    [self readAttributeLocationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLocationWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -16652,7 +17739,10 @@ - (void)subscribeAttributeLocationWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeLocationWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -16662,13 +17752,19 @@ + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeLocationWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeHardwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionWithCompletion:completionHandler];
+    [self readAttributeHardwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeHardwareVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16686,7 +17782,10 @@ - (void)subscribeAttributeHardwareVersionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeHardwareVersionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -16697,13 +17796,19 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeHardwareVersionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeHardwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionStringWithCompletion:completionHandler];
+    [self readAttributeHardwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeHardwareVersionStringWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16722,7 +17827,10 @@ - (void)subscribeAttributeHardwareVersionStringWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeHardwareVersionStringWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -16733,13 +17841,19 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeHardwareVersionStringWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeSoftwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionWithCompletion:completionHandler];
+    [self readAttributeSoftwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSoftwareVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16757,7 +17871,10 @@ - (void)subscribeAttributeSoftwareVersionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeSoftwareVersionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -16768,13 +17885,19 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeSoftwareVersionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSoftwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionStringWithCompletion:completionHandler];
+    [self readAttributeSoftwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSoftwareVersionStringWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16793,7 +17916,10 @@ - (void)subscribeAttributeSoftwareVersionStringWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeSoftwareVersionStringWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -16804,13 +17930,19 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeSoftwareVersionStringWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeManufacturingDateWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeManufacturingDateWithCompletion:completionHandler];
+    [self readAttributeManufacturingDateWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeManufacturingDateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16829,7 +17961,10 @@ - (void)subscribeAttributeManufacturingDateWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeManufacturingDateWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -16840,13 +17975,19 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeManufacturingDateWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePartNumberWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartNumberWithCompletion:completionHandler];
+    [self readAttributePartNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePartNumberWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16863,7 +18004,10 @@ - (void)subscribeAttributePartNumberWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributePartNumberWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -16873,13 +18017,19 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributePartNumberWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeProductURLWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductURLWithCompletion:completionHandler];
+    [self readAttributeProductURLWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductURLWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16896,7 +18046,10 @@ - (void)subscribeAttributeProductURLWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeProductURLWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -16906,13 +18059,19 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeProductURLWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeProductLabelWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductLabelWithCompletion:completionHandler];
+    [self readAttributeProductLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductLabelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16929,7 +18088,10 @@ - (void)subscribeAttributeProductLabelWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeProductLabelWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -16940,13 +18102,19 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeProductLabelWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSerialNumberWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSerialNumberWithCompletion:completionHandler];
+    [self readAttributeSerialNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSerialNumberWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -16963,7 +18131,10 @@ - (void)subscribeAttributeSerialNumberWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSerialNumberWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -16974,13 +18145,19 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSerialNumberWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeLocalConfigDisabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalConfigDisabledWithCompletion:completionHandler];
+    [self readAttributeLocalConfigDisabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLocalConfigDisabledWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -17010,7 +18187,10 @@ - (void)subscribeAttributeLocalConfigDisabledWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeLocalConfigDisabledWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -17021,13 +18201,19 @@ + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeLocalConfigDisabledWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeReachableWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReachableWithCompletion:completionHandler];
+    [self readAttributeReachableWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReachableWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17044,7 +18230,10 @@ - (void)subscribeAttributeReachableWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeReachableWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -17054,13 +18243,19 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeReachableWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeUniqueIDWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUniqueIDWithCompletion:completionHandler];
+    [self readAttributeUniqueIDWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUniqueIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17077,7 +18272,10 @@ - (void)subscribeAttributeUniqueIDWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeUniqueIDWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -17087,13 +18285,20 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeUniqueIDWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeCapabilityMinimaWithCompletionHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCapabilityMinimaWithCompletion:completionHandler];
+    [self readAttributeCapabilityMinimaWithCompletion:^(
+        MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCapabilityMinimaWithMinInterval:(NSNumber * _Nonnull)minInterval
                                               maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17112,7 +18317,11 @@ - (void)subscribeAttributeCapabilityMinimaWithMinInterval:(NSNumber * _Nonnull)m
     }
     [self subscribeAttributeCapabilityMinimaWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(
+                                             MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -17123,13 +18332,21 @@ + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeCapabilityMinimaWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                                   NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(
+                                                       static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17148,7 +18365,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -17159,13 +18379,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17184,7 +18410,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -17195,13 +18424,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17218,7 +18453,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -17229,13 +18467,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17252,7 +18496,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -17262,13 +18509,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17286,7 +18539,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -17297,7 +18553,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -17817,13 +19076,24 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam
            completionHandler:(void (^)(MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams * _Nullable data,
                                  NSError * _Nullable error))completionHandler
 {
-    [self queryImageWithParams:params completion:completionHandler];
+    [self queryImageWithParams:params
+                    completion:^(
+                        MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams *)params
                    completionHandler:(void (^)(MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self applyUpdateRequestWithParams:params completion:completionHandler];
+    [self applyUpdateRequestWithParams:params
+                            completion:^(MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams * _Nullable data,
+                                NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(
+                                    static_cast(data), error);
+                            }];
 }
 - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams *)params
                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -17834,7 +19104,10 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17853,7 +19126,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -17864,13 +19140,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17889,7 +19171,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -17900,13 +19185,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17923,7 +19214,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -17934,13 +19228,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17957,7 +19257,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -17967,13 +19270,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -17991,7 +19300,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -18002,7 +19314,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -18794,7 +20109,11 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou
 - (void)readAttributeDefaultOtaProvidersWithParams:(MTRReadParams * _Nullable)params
                                  completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultOtaProvidersWithParams:params completion:completionHandler];
+    [self readAttributeDefaultOtaProvidersWithParams:params
+                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 - (void)writeAttributeDefaultOtaProvidersWithValue:(NSArray * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -18824,7 +20143,10 @@ - (void)subscribeAttributeDefaultOtaProvidersWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeDefaultOtaProvidersWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -18835,13 +20157,19 @@ + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeDefaultOtaProvidersWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeUpdatePossibleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdatePossibleWithCompletion:completionHandler];
+    [self readAttributeUpdatePossibleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUpdatePossibleWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -18859,7 +20187,10 @@ - (void)subscribeAttributeUpdatePossibleWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeUpdatePossibleWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -18870,13 +20201,19 @@ + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeUpdatePossibleWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeUpdateStateWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdateStateWithCompletion:completionHandler];
+    [self readAttributeUpdateStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUpdateStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -18893,7 +20230,10 @@ - (void)subscribeAttributeUpdateStateWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeUpdateStateWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -18904,13 +20244,19 @@ + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeUpdateStateWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeUpdateStateProgressWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdateStateProgressWithCompletion:completionHandler];
+    [self readAttributeUpdateStateProgressWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUpdateStateProgressWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -18929,7 +20275,10 @@ - (void)subscribeAttributeUpdateStateProgressWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeUpdateStateProgressWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -18940,13 +20289,19 @@ + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeUpdateStateProgressWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -18965,7 +20320,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -18976,13 +20334,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19001,7 +20365,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -19012,13 +20379,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19035,7 +20408,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -19046,13 +20422,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19069,7 +20451,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -19079,13 +20464,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19103,7 +20494,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -19114,7 +20508,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -19690,7 +21087,10 @@ @implementation MTRBaseClusterLocalizationConfiguration (Deprecated)
 - (void)readAttributeActiveLocaleWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveLocaleWithCompletion:completionHandler];
+    [self readAttributeActiveLocaleWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeActiveLocaleWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -19717,7 +21117,10 @@ - (void)subscribeAttributeActiveLocaleWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeActiveLocaleWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -19728,13 +21131,19 @@ + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeActiveLocaleWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSupportedLocalesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedLocalesWithCompletion:completionHandler];
+    [self readAttributeSupportedLocalesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeSupportedLocalesWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -19752,7 +21161,10 @@ - (void)readAttributeSupportedLocalesWithCompletionHandler:(void (^)(NSArray * _
     }
     [self subscribeAttributeSupportedLocalesWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -19763,13 +21175,19 @@ + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeSupportedLocalesWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19788,7 +21206,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -19799,13 +21220,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19824,7 +21251,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -19835,13 +21265,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19858,7 +21294,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -19869,13 +21308,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19892,7 +21337,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -19902,13 +21350,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -19926,7 +21380,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -19937,7 +21394,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -20633,7 +22093,10 @@ @implementation MTRBaseClusterTimeFormatLocalization (Deprecated)
 - (void)readAttributeHourFormatWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHourFormatWithCompletion:completionHandler];
+    [self readAttributeHourFormatWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeHourFormatWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -20660,7 +22123,10 @@ - (void)subscribeAttributeHourFormatWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeHourFormatWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -20670,13 +22136,19 @@ + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeHourFormatWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeActiveCalendarTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCalendarTypeWithCompletion:completionHandler];
+    [self readAttributeActiveCalendarTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeActiveCalendarTypeWithValue:(NSNumber * _Nonnull)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -20706,7 +22178,10 @@ - (void)subscribeAttributeActiveCalendarTypeWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeActiveCalendarTypeWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -20717,13 +22192,19 @@ + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeActiveCalendarTypeWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeSupportedCalendarTypesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedCalendarTypesWithCompletion:completionHandler];
+    [self readAttributeSupportedCalendarTypesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSupportedCalendarTypesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20742,7 +22223,10 @@ - (void)subscribeAttributeSupportedCalendarTypesWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeSupportedCalendarTypesWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -20753,13 +22237,19 @@ + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCache
     [self readAttributeSupportedCalendarTypesWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20778,7 +22268,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -20789,13 +22282,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20814,7 +22313,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -20825,13 +22327,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20848,7 +22356,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -20859,13 +22370,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20882,7 +22399,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -20892,13 +22412,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -20916,7 +22442,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -20927,7 +22456,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -21432,7 +22964,10 @@ @implementation MTRBaseClusterUnitLocalization (Deprecated)
 - (void)readAttributeTemperatureUnitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureUnitWithCompletion:completionHandler];
+    [self readAttributeTemperatureUnitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeTemperatureUnitWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -21460,7 +22995,10 @@ - (void)subscribeAttributeTemperatureUnitWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeTemperatureUnitWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -21471,13 +23009,19 @@ + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeTemperatureUnitWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -21496,7 +23040,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -21507,13 +23054,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -21532,7 +23085,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -21543,13 +23099,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -21566,7 +23128,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -21577,13 +23142,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -21600,7 +23171,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -21610,13 +23184,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -21634,7 +23214,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -21645,7 +23228,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -22113,7 +23699,10 @@ @implementation MTRBaseClusterPowerSourceConfiguration (Deprecated)
 
 - (void)readAttributeSourcesWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSourcesWithCompletion:completionHandler];
+    [self readAttributeSourcesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSourcesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22130,7 +23719,10 @@ - (void)subscribeAttributeSourcesWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeSourcesWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -22140,13 +23732,19 @@ + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeSourcesWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22165,7 +23763,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -22176,13 +23777,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22201,7 +23808,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -22212,13 +23822,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22235,7 +23851,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -22246,13 +23865,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22269,7 +23894,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -22279,13 +23907,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -22303,7 +23937,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -22314,7 +23951,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -24906,7 +26546,10 @@ @implementation MTRBaseClusterPowerSource (Deprecated)
 
 - (void)readAttributeStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithCompletion:completionHandler];
+    [self readAttributeStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -24923,19 +26566,31 @@ - (void)subscribeAttributeStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeStatusWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeStatusWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeOrderWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOrderWithCompletion:completionHandler];
+    [self readAttributeOrderWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOrderWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -24952,20 +26607,32 @@ - (void)subscribeAttributeOrderWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeOrderWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOrderWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeOrderWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeDescriptionWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithCompletion:completionHandler];
+    [self readAttributeDescriptionWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDescriptionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -24982,7 +26649,10 @@ - (void)subscribeAttributeDescriptionWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeDescriptionWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -24993,13 +26663,19 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeWiredAssessedInputVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedInputVoltageWithCompletion:completionHandler];
+    [self readAttributeWiredAssessedInputVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredAssessedInputVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25018,7 +26694,10 @@ - (void)subscribeAttributeWiredAssessedInputVoltageWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeWiredAssessedInputVoltageWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -25029,13 +26708,19 @@ + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCa
     [self readAttributeWiredAssessedInputVoltageWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeWiredAssessedInputFrequencyWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedInputFrequencyWithCompletion:completionHandler];
+    [self readAttributeWiredAssessedInputFrequencyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredAssessedInputFrequencyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25054,7 +26739,10 @@ - (void)subscribeAttributeWiredAssessedInputFrequencyWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeWiredAssessedInputFrequencyWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -25065,13 +26753,19 @@ + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttribute
     [self readAttributeWiredAssessedInputFrequencyWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeWiredCurrentTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredCurrentTypeWithCompletion:completionHandler];
+    [self readAttributeWiredCurrentTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeWiredCurrentTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -25089,7 +26783,10 @@ - (void)readAttributeWiredCurrentTypeWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeWiredCurrentTypeWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -25100,13 +26797,19 @@ + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeWiredCurrentTypeWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeWiredAssessedCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedCurrentWithCompletion:completionHandler];
+    [self readAttributeWiredAssessedCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredAssessedCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25125,7 +26828,10 @@ - (void)subscribeAttributeWiredAssessedCurrentWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeWiredAssessedCurrentWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -25136,13 +26842,19 @@ + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeWiredAssessedCurrentWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeWiredNominalVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredNominalVoltageWithCompletion:completionHandler];
+    [self readAttributeWiredNominalVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredNominalVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25161,7 +26873,10 @@ - (void)subscribeAttributeWiredNominalVoltageWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeWiredNominalVoltageWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -25172,13 +26887,19 @@ + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeWiredNominalVoltageWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeWiredMaximumCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredMaximumCurrentWithCompletion:completionHandler];
+    [self readAttributeWiredMaximumCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredMaximumCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25197,7 +26918,10 @@ - (void)subscribeAttributeWiredMaximumCurrentWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeWiredMaximumCurrentWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -25208,13 +26932,19 @@ + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeWiredMaximumCurrentWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeWiredPresentWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredPresentWithCompletion:completionHandler];
+    [self readAttributeWiredPresentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiredPresentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25231,7 +26961,10 @@ - (void)subscribeAttributeWiredPresentWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeWiredPresentWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -25242,13 +26975,19 @@ + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeWiredPresentWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeActiveWiredFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveWiredFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveWiredFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeActiveWiredFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -25266,7 +27005,10 @@ - (void)readAttributeActiveWiredFaultsWithCompletionHandler:(void (^)(NSArray *
     }
     [self subscribeAttributeActiveWiredFaultsWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -25277,13 +27019,19 @@ + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeActiveWiredFaultsWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBatVoltageWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatVoltageWithCompletion:completionHandler];
+    [self readAttributeBatVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25300,7 +27048,10 @@ - (void)subscribeAttributeBatVoltageWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeBatVoltageWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -25310,13 +27061,19 @@ + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeBatVoltageWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeBatPercentRemainingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatPercentRemainingWithCompletion:completionHandler];
+    [self readAttributeBatPercentRemainingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatPercentRemainingWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25335,7 +27092,10 @@ - (void)subscribeAttributeBatPercentRemainingWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeBatPercentRemainingWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -25346,13 +27106,19 @@ + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeBatPercentRemainingWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBatTimeRemainingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatTimeRemainingWithCompletion:completionHandler];
+    [self readAttributeBatTimeRemainingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeBatTimeRemainingWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -25370,7 +27136,10 @@ - (void)readAttributeBatTimeRemainingWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeBatTimeRemainingWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -25381,13 +27150,19 @@ + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeBatTimeRemainingWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeBatChargeLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargeLevelWithCompletion:completionHandler];
+    [self readAttributeBatChargeLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatChargeLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25405,7 +27180,10 @@ - (void)subscribeAttributeBatChargeLevelWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeBatChargeLevelWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -25416,13 +27194,19 @@ + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeBatChargeLevelWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeBatReplacementNeededWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplacementNeededWithCompletion:completionHandler];
+    [self readAttributeBatReplacementNeededWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatReplacementNeededWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25441,7 +27225,10 @@ - (void)subscribeAttributeBatReplacementNeededWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeBatReplacementNeededWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -25452,13 +27239,19 @@ + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeBatReplacementNeededWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatReplaceabilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplaceabilityWithCompletion:completionHandler];
+    [self readAttributeBatReplaceabilityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatReplaceabilityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25477,7 +27270,10 @@ - (void)subscribeAttributeBatReplaceabilityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeBatReplaceabilityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -25488,13 +27284,19 @@ + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeBatReplaceabilityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBatPresentWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatPresentWithCompletion:completionHandler];
+    [self readAttributeBatPresentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatPresentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25511,7 +27313,10 @@ - (void)subscribeAttributeBatPresentWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeBatPresentWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -25521,13 +27326,19 @@ + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeBatPresentWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeActiveBatFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveBatFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveBatFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveBatFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25545,7 +27356,10 @@ - (void)subscribeAttributeActiveBatFaultsWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeActiveBatFaultsWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -25556,13 +27370,19 @@ + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeActiveBatFaultsWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeBatReplacementDescriptionWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplacementDescriptionWithCompletion:completionHandler];
+    [self readAttributeBatReplacementDescriptionWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatReplacementDescriptionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25581,7 +27401,10 @@ - (void)subscribeAttributeBatReplacementDescriptionWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeBatReplacementDescriptionWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -25592,13 +27415,19 @@ + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCa
     [self readAttributeBatReplacementDescriptionWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeBatCommonDesignationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatCommonDesignationWithCompletion:completionHandler];
+    [self readAttributeBatCommonDesignationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatCommonDesignationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25617,7 +27446,10 @@ - (void)subscribeAttributeBatCommonDesignationWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeBatCommonDesignationWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -25628,13 +27460,19 @@ + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeBatCommonDesignationWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatANSIDesignationWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatANSIDesignationWithCompletion:completionHandler];
+    [self readAttributeBatANSIDesignationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatANSIDesignationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25653,7 +27491,10 @@ - (void)subscribeAttributeBatANSIDesignationWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeBatANSIDesignationWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -25664,13 +27505,19 @@ + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeBatANSIDesignationWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBatIECDesignationWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatIECDesignationWithCompletion:completionHandler];
+    [self readAttributeBatIECDesignationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatIECDesignationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25689,7 +27536,10 @@ - (void)subscribeAttributeBatIECDesignationWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeBatIECDesignationWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -25700,13 +27550,19 @@ + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeBatIECDesignationWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBatApprovedChemistryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatApprovedChemistryWithCompletion:completionHandler];
+    [self readAttributeBatApprovedChemistryWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatApprovedChemistryWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25725,7 +27581,10 @@ - (void)subscribeAttributeBatApprovedChemistryWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeBatApprovedChemistryWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -25736,13 +27595,19 @@ + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeBatApprovedChemistryWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatCapacityWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatCapacityWithCompletion:completionHandler];
+    [self readAttributeBatCapacityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatCapacityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25759,7 +27624,10 @@ - (void)subscribeAttributeBatCapacityWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeBatCapacityWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -25770,13 +27638,19 @@ + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeBatCapacityWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeBatQuantityWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatQuantityWithCompletion:completionHandler];
+    [self readAttributeBatQuantityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatQuantityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25793,7 +27667,10 @@ - (void)subscribeAttributeBatQuantityWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeBatQuantityWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -25804,13 +27681,19 @@ + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeBatQuantityWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeBatChargeStateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargeStateWithCompletion:completionHandler];
+    [self readAttributeBatChargeStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatChargeStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25828,7 +27711,10 @@ - (void)subscribeAttributeBatChargeStateWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeBatChargeStateWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -25839,13 +27725,19 @@ + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeBatChargeStateWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeBatTimeToFullChargeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatTimeToFullChargeWithCompletion:completionHandler];
+    [self readAttributeBatTimeToFullChargeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatTimeToFullChargeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25864,7 +27756,10 @@ - (void)subscribeAttributeBatTimeToFullChargeWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeBatTimeToFullChargeWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -25875,13 +27770,19 @@ + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeBatTimeToFullChargeWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBatFunctionalWhileChargingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatFunctionalWhileChargingWithCompletion:completionHandler];
+    [self readAttributeBatFunctionalWhileChargingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatFunctionalWhileChargingWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25900,7 +27801,10 @@ - (void)subscribeAttributeBatFunctionalWhileChargingWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeBatFunctionalWhileChargingWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -25911,13 +27815,19 @@ + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeC
     [self readAttributeBatFunctionalWhileChargingWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeBatChargingCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargingCurrentWithCompletion:completionHandler];
+    [self readAttributeBatChargingCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBatChargingCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25936,7 +27846,10 @@ - (void)subscribeAttributeBatChargingCurrentWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeBatChargingCurrentWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -25947,13 +27860,19 @@ + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeBatChargingCurrentWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeActiveBatChargeFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveBatChargeFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveBatChargeFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveBatChargeFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -25972,7 +27891,10 @@ - (void)subscribeAttributeActiveBatChargeFaultsWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeActiveBatChargeFaultsWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -25983,13 +27905,19 @@ + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeActiveBatChargeFaultsWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -26008,7 +27936,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -26019,13 +27950,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -26044,7 +27981,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -26055,13 +27995,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -26078,7 +28024,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -26089,13 +28038,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -26112,7 +28067,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -26122,13 +28080,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -26146,7 +28110,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -26157,7 +28124,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -27050,32 +29020,53 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams *
             completionHandler:(void (^)(MTRGeneralCommissioningClusterArmFailSafeResponseParams * _Nullable data,
                                   NSError * _Nullable error))completionHandler
 {
-    [self armFailSafeWithParams:params completion:completionHandler];
+    [self armFailSafeWithParams:params
+                     completion:^(
+                         MTRGeneralCommissioningClusterArmFailSafeResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulatoryConfigParams *)params
                     completionHandler:(void (^)(MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams * _Nullable data,
                                           NSError * _Nullable error))completionHandler
 {
-    [self setRegulatoryConfigWithParams:params completion:completionHandler];
+    [self setRegulatoryConfigWithParams:params
+                             completion:^(MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams * _Nullable data,
+                                 NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(
+                                     static_cast(data), error);
+                             }];
 }
 - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissioningCompleteParams * _Nullable)params
                       completionHandler:
                           (void (^)(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams * _Nullable data,
                               NSError * _Nullable error))completionHandler
 {
-    [self commissioningCompleteWithParams:params completion:completionHandler];
+    [self
+        commissioningCompleteWithParams:params
+                             completion:^(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams * _Nullable data,
+                                 NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(
+                                     static_cast(data), error);
+                             }];
 }
 - (void)commissioningCompleteWithCompletionHandler:
     (void (^)(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams * _Nullable data,
         NSError * _Nullable error))completionHandler
 {
-    [self commissioningCompleteWithParams:nil completion:completionHandler];
+    [self commissioningCompleteWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeBreadcrumbWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBreadcrumbWithCompletion:completionHandler];
+    [self readAttributeBreadcrumbWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBreadcrumbWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -27102,7 +29093,10 @@ - (void)subscribeAttributeBreadcrumbWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeBreadcrumbWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -27112,13 +29106,20 @@ + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeBreadcrumbWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeBasicCommissioningInfoWithCompletionHandler:
     (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBasicCommissioningInfoWithCompletion:completionHandler];
+    [self readAttributeBasicCommissioningInfoWithCompletion:^(
+        MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBasicCommissioningInfoWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27137,9 +29138,16 @@ - (void)subscribeAttributeBasicCommissioningInfoWithMinInterval:(NSNumber * _Non
         subscribeParams.minInterval = minInterval;
         subscribeParams.maxInterval = maxInterval;
     }
-    [self subscribeAttributeBasicCommissioningInfoWithParams:subscribeParams
-                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+    [self
+        subscribeAttributeBasicCommissioningInfoWithParams:subscribeParams
+                                   subscriptionEstablished:subscriptionEstablishedHandler
+                                             reportHandler:^(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
+                                                 NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(
+                                                     static_cast(value),
+                                                     error);
+                                             }];
 }
 + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -27151,13 +29159,24 @@ + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCache
     [self readAttributeBasicCommissioningInfoWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(
+                                                         MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
+                                                         NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(
+                                                             static_cast(
+                                                                 value),
+                                                             error);
+                                                     }];
 }
 
 - (void)readAttributeRegulatoryConfigWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRegulatoryConfigWithCompletion:completionHandler];
+    [self readAttributeRegulatoryConfigWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRegulatoryConfigWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -27175,7 +29194,10 @@ - (void)readAttributeRegulatoryConfigWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRegulatoryConfigWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -27186,13 +29208,19 @@ + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRegulatoryConfigWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLocationCapabilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocationCapabilityWithCompletion:completionHandler];
+    [self readAttributeLocationCapabilityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLocationCapabilityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27211,7 +29239,10 @@ - (void)subscribeAttributeLocationCapabilityWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeLocationCapabilityWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -27222,13 +29253,19 @@ + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeLocationCapabilityWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeSupportsConcurrentConnectionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportsConcurrentConnectionWithCompletion:completionHandler];
+    [self readAttributeSupportsConcurrentConnectionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSupportsConcurrentConnectionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27247,7 +29284,10 @@ - (void)subscribeAttributeSupportsConcurrentConnectionWithMinInterval:(NSNumber
     }
     [self subscribeAttributeSupportsConcurrentConnectionWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -27258,13 +29298,19 @@ + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttribut
     [self readAttributeSupportsConcurrentConnectionWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27283,7 +29329,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -27294,13 +29343,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27319,7 +29374,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -27330,13 +29388,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27353,7 +29417,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -27364,13 +29431,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27387,7 +29460,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -27397,13 +29473,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -27421,7 +29503,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -27432,7 +29517,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -28628,43 +30716,80 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams
              completionHandler:(void (^)(MTRNetworkCommissioningClusterScanNetworksResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self scanNetworksWithParams:params completion:completionHandler];
+    [self scanNetworksWithParams:params
+                      completion:^(
+                          MTRNetworkCommissioningClusterScanNetworksResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams *)params
                        completionHandler:(void (^)(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
-    [self addOrUpdateWiFiNetworkWithParams:params completion:completionHandler];
+    [self addOrUpdateWiFiNetworkWithParams:params
+                                completion:^(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
+                                    NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    completionHandler(
+                                        static_cast(data), error);
+                                }];
 }
 - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams *)params
                          completionHandler:(void (^)(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
 {
-    [self addOrUpdateThreadNetworkWithParams:params completion:completionHandler];
+    [self addOrUpdateThreadNetworkWithParams:params
+                                  completion:^(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
+                                      NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(
+                                          static_cast(data), error);
+                                  }];
 }
 - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkParams *)params
               completionHandler:(void (^)(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
                                     NSError * _Nullable error))completionHandler
 {
-    [self removeNetworkWithParams:params completion:completionHandler];
+    [self removeNetworkWithParams:params
+                       completion:^(
+                           MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkParams *)params
                completionHandler:(void (^)(MTRNetworkCommissioningClusterConnectNetworkResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self connectNetworkWithParams:params completion:completionHandler];
+    [self
+        connectNetworkWithParams:params
+                      completion:^(
+                          MTRNetworkCommissioningClusterConnectNetworkResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkParams *)params
                completionHandler:(void (^)(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self reorderNetworkWithParams:params completion:completionHandler];
+    [self
+        reorderNetworkWithParams:params
+                      completion:^(
+                          MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 
 - (void)readAttributeMaxNetworksWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxNetworksWithCompletion:completionHandler];
+    [self readAttributeMaxNetworksWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxNetworksWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28681,7 +30806,10 @@ - (void)subscribeAttributeMaxNetworksWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeMaxNetworksWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -28692,12 +30820,18 @@ + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeMaxNetworksWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeNetworksWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworksWithCompletion:completionHandler];
+    [self readAttributeNetworksWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNetworksWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28714,7 +30848,10 @@ - (void)subscribeAttributeNetworksWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeNetworksWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -28724,13 +30861,19 @@ + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeNetworksWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeScanMaxTimeSecondsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScanMaxTimeSecondsWithCompletion:completionHandler];
+    [self readAttributeScanMaxTimeSecondsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeScanMaxTimeSecondsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28749,7 +30892,10 @@ - (void)subscribeAttributeScanMaxTimeSecondsWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeScanMaxTimeSecondsWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -28760,13 +30906,19 @@ + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeScanMaxTimeSecondsWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeConnectMaxTimeSecondsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeConnectMaxTimeSecondsWithCompletion:completionHandler];
+    [self readAttributeConnectMaxTimeSecondsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeConnectMaxTimeSecondsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28785,7 +30937,10 @@ - (void)subscribeAttributeConnectMaxTimeSecondsWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeConnectMaxTimeSecondsWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -28796,13 +30951,19 @@ + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeConnectMaxTimeSecondsWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeInterfaceEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInterfaceEnabledWithCompletion:completionHandler];
+    [self readAttributeInterfaceEnabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -28830,7 +30991,10 @@ - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value
     }
     [self subscribeAttributeInterfaceEnabledWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -28841,13 +31005,19 @@ + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeInterfaceEnabledWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLastNetworkingStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastNetworkingStatusWithCompletion:completionHandler];
+    [self readAttributeLastNetworkingStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLastNetworkingStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28866,7 +31036,10 @@ - (void)subscribeAttributeLastNetworkingStatusWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeLastNetworkingStatusWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -28877,13 +31050,19 @@ + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeLastNetworkingStatusWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeLastNetworkIDWithCompletionHandler:(void (^)(
                                                             NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastNetworkIDWithCompletion:completionHandler];
+    [self readAttributeLastNetworkIDWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLastNetworkIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28900,7 +31079,10 @@ - (void)subscribeAttributeLastNetworkIDWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeLastNetworkIDWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -28911,13 +31093,19 @@ + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeLastNetworkIDWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeLastConnectErrorValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastConnectErrorValueWithCompletion:completionHandler];
+    [self readAttributeLastConnectErrorValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLastConnectErrorValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28936,7 +31124,10 @@ - (void)subscribeAttributeLastConnectErrorValueWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeLastConnectErrorValueWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -28947,13 +31138,19 @@ + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeLastConnectErrorValueWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -28972,7 +31169,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -28983,13 +31183,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29008,7 +31214,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -29019,13 +31228,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29042,7 +31257,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -29053,13 +31271,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29076,7 +31300,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -29086,13 +31313,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29110,7 +31343,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -29121,7 +31357,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -29545,13 +31784,21 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
                     completionHandler:(void (^)(MTRDiagnosticLogsClusterRetrieveLogsResponseParams * _Nullable data,
                                           NSError * _Nullable error))completionHandler
 {
-    [self retrieveLogsRequestWithParams:params completion:completionHandler];
+    [self retrieveLogsRequestWithParams:params
+                             completion:^(
+                                 MTRDiagnosticLogsClusterRetrieveLogsResponseParams * _Nullable data, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(static_cast(data), error);
+                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29570,7 +31817,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -29581,13 +31831,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29606,7 +31862,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -29617,13 +31876,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29640,7 +31905,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -29651,13 +31919,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29674,7 +31948,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -29684,13 +31961,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -29708,7 +31991,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -29719,7 +32005,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -30799,7 +33088,10 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger
 - (void)readAttributeNetworkInterfacesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworkInterfacesWithCompletion:completionHandler];
+    [self readAttributeNetworkInterfacesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeNetworkInterfacesWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -30817,7 +33109,10 @@ - (void)readAttributeNetworkInterfacesWithCompletionHandler:(void (^)(NSArray *
     }
     [self subscribeAttributeNetworkInterfacesWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -30828,13 +33123,19 @@ + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeNetworkInterfacesWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRebootCountWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRebootCountWithCompletion:completionHandler];
+    [self readAttributeRebootCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRebootCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -30851,7 +33152,10 @@ - (void)subscribeAttributeRebootCountWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeRebootCountWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -30862,12 +33166,18 @@ + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeRebootCountWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeUpTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpTimeWithCompletion:completionHandler];
+    [self readAttributeUpTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUpTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -30884,20 +33194,32 @@ - (void)subscribeAttributeUpTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeUpTimeWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpTimeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeUpTimeWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeTotalOperationalHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalOperationalHoursWithCompletion:completionHandler];
+    [self readAttributeTotalOperationalHoursWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTotalOperationalHoursWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -30916,7 +33238,10 @@ - (void)subscribeAttributeTotalOperationalHoursWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeTotalOperationalHoursWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -30927,13 +33252,19 @@ + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeTotalOperationalHoursWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeBootReasonsWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBootReasonsWithCompletion:completionHandler];
+    [self readAttributeBootReasonsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBootReasonsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -30950,7 +33281,10 @@ - (void)subscribeAttributeBootReasonsWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeBootReasonsWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -30961,13 +33295,19 @@ + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeBootReasonsWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeActiveHardwareFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveHardwareFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveHardwareFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveHardwareFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -30986,7 +33326,10 @@ - (void)subscribeAttributeActiveHardwareFaultsWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeActiveHardwareFaultsWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -30997,13 +33340,19 @@ + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeActiveHardwareFaultsWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActiveRadioFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveRadioFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveRadioFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeActiveRadioFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -31021,7 +33370,10 @@ - (void)readAttributeActiveRadioFaultsWithCompletionHandler:(void (^)(NSArray *
     }
     [self subscribeAttributeActiveRadioFaultsWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -31032,13 +33384,19 @@ + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeActiveRadioFaultsWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActiveNetworkFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveNetworkFaultsWithCompletion:completionHandler];
+    [self readAttributeActiveNetworkFaultsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveNetworkFaultsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31057,7 +33415,10 @@ - (void)subscribeAttributeActiveNetworkFaultsWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeActiveNetworkFaultsWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -31068,13 +33429,19 @@ + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeActiveNetworkFaultsWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTestEventTriggersEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTestEventTriggersEnabledWithCompletion:completionHandler];
+    [self readAttributeTestEventTriggersEnabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTestEventTriggersEnabledWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31093,7 +33460,10 @@ - (void)subscribeAttributeTestEventTriggersEnabledWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeTestEventTriggersEnabledWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -31104,13 +33474,19 @@ + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCac
     [self readAttributeTestEventTriggersEnabledWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31129,7 +33505,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -31140,13 +33519,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31165,7 +33550,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -31176,13 +33564,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31199,7 +33593,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -31210,13 +33607,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31233,7 +33636,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -31243,13 +33649,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -31267,7 +33679,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -31278,7 +33693,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -31991,13 +34409,16 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP
 }
 - (void)resetWatermarksWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetWatermarksWithParams:nil completion:completionHandler];
+    [self resetWatermarksWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeThreadMetricsWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThreadMetricsWithCompletion:completionHandler];
+    [self readAttributeThreadMetricsWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeThreadMetricsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32014,7 +34435,10 @@ - (void)subscribeAttributeThreadMetricsWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeThreadMetricsWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -32025,13 +34449,19 @@ + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeThreadMetricsWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentHeapFreeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapFreeWithCompletion:completionHandler];
+    [self readAttributeCurrentHeapFreeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentHeapFreeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32049,7 +34479,10 @@ - (void)subscribeAttributeCurrentHeapFreeWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeCurrentHeapFreeWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -32060,13 +34493,19 @@ + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeCurrentHeapFreeWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCurrentHeapUsedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapUsedWithCompletion:completionHandler];
+    [self readAttributeCurrentHeapUsedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentHeapUsedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32084,7 +34523,10 @@ - (void)subscribeAttributeCurrentHeapUsedWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeCurrentHeapUsedWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -32095,13 +34537,19 @@ + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeCurrentHeapUsedWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCurrentHeapHighWatermarkWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapHighWatermarkWithCompletion:completionHandler];
+    [self readAttributeCurrentHeapHighWatermarkWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentHeapHighWatermarkWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32120,7 +34568,10 @@ - (void)subscribeAttributeCurrentHeapHighWatermarkWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeCurrentHeapHighWatermarkWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -32131,13 +34582,19 @@ + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCac
     [self readAttributeCurrentHeapHighWatermarkWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32156,7 +34613,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -32167,13 +34627,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32192,7 +34658,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -32203,13 +34672,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32226,7 +34701,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -32237,13 +34715,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32260,7 +34744,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -32270,13 +34757,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -32294,7 +34787,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -32305,7 +34801,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -37172,12 +39671,15 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara
 }
 - (void)resetCountsWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithParams:nil completion:completionHandler];
+    [self resetCountsWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeChannelWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelWithCompletion:completionHandler];
+    [self readAttributeChannelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeChannelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37194,7 +39696,10 @@ - (void)subscribeAttributeChannelWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeChannelWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -37204,13 +39709,19 @@ + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeChannelWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeRoutingRoleWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRoutingRoleWithCompletion:completionHandler];
+    [self readAttributeRoutingRoleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRoutingRoleWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37227,7 +39738,10 @@ - (void)subscribeAttributeRoutingRoleWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeRoutingRoleWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -37238,13 +39752,19 @@ + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeRoutingRoleWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeNetworkNameWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworkNameWithCompletion:completionHandler];
+    [self readAttributeNetworkNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNetworkNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37261,7 +39781,10 @@ - (void)subscribeAttributeNetworkNameWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeNetworkNameWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -37272,12 +39795,18 @@ + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeNetworkNameWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributePanIdWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePanIdWithCompletion:completionHandler];
+    [self readAttributePanIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePanIdWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37294,20 +39823,32 @@ - (void)subscribeAttributePanIdWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributePanIdWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePanIdWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributePanIdWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeExtendedPanIdWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExtendedPanIdWithCompletion:completionHandler];
+    [self readAttributeExtendedPanIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeExtendedPanIdWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37325,7 +39866,10 @@ - (void)subscribeAttributeExtendedPanIdWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeExtendedPanIdWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -37336,13 +39880,19 @@ + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeExtendedPanIdWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMeshLocalPrefixWithCompletionHandler:(void (^)(
                                                               NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeshLocalPrefixWithCompletion:completionHandler];
+    [self readAttributeMeshLocalPrefixWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeshLocalPrefixWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37360,7 +39910,10 @@ - (void)subscribeAttributeMeshLocalPrefixWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeMeshLocalPrefixWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -37371,13 +39924,19 @@ + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeMeshLocalPrefixWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithCompletion:completionHandler];
+    [self readAttributeOverrunCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37394,7 +39953,10 @@ - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeOverrunCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -37405,13 +39967,19 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeNeighborTableListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNeighborTableListWithCompletion:completionHandler];
+    [self readAttributeNeighborTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeNeighborTableListWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -37429,7 +39997,10 @@ - (void)readAttributeNeighborTableListWithCompletionHandler:(void (^)(NSArray *
     }
     [self subscribeAttributeNeighborTableListWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -37440,13 +40011,19 @@ + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeNeighborTableListWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRouteTableListWithCompletionHandler:(void (^)(
                                                              NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRouteTableListWithCompletion:completionHandler];
+    [self readAttributeRouteTableListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRouteTableListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37464,7 +40041,10 @@ - (void)subscribeAttributeRouteTableListWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeRouteTableListWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -37475,13 +40055,19 @@ + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeRouteTableListWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributePartitionIdWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartitionIdWithCompletion:completionHandler];
+    [self readAttributePartitionIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePartitionIdWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37498,7 +40084,10 @@ - (void)subscribeAttributePartitionIdWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributePartitionIdWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -37509,13 +40098,19 @@ + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributePartitionIdWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeWeightingWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWeightingWithCompletion:completionHandler];
+    [self readAttributeWeightingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWeightingWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37532,7 +40127,10 @@ - (void)subscribeAttributeWeightingWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeWeightingWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -37542,13 +40140,19 @@ + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeWeightingWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeDataVersionWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDataVersionWithCompletion:completionHandler];
+    [self readAttributeDataVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDataVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37565,7 +40169,10 @@ - (void)subscribeAttributeDataVersionWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeDataVersionWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -37576,13 +40183,19 @@ + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeDataVersionWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStableDataVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStableDataVersionWithCompletion:completionHandler];
+    [self readAttributeStableDataVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStableDataVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37601,7 +40214,10 @@ - (void)subscribeAttributeStableDataVersionWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeStableDataVersionWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -37612,13 +40228,19 @@ + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeStableDataVersionWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeLeaderRouterIdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLeaderRouterIdWithCompletion:completionHandler];
+    [self readAttributeLeaderRouterIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLeaderRouterIdWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37636,7 +40258,10 @@ - (void)subscribeAttributeLeaderRouterIdWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeLeaderRouterIdWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -37647,13 +40272,19 @@ + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeLeaderRouterIdWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeDetachedRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDetachedRoleCountWithCompletion:completionHandler];
+    [self readAttributeDetachedRoleCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDetachedRoleCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37672,7 +40303,10 @@ - (void)subscribeAttributeDetachedRoleCountWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeDetachedRoleCountWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -37683,13 +40317,19 @@ + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeDetachedRoleCountWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeChildRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChildRoleCountWithCompletion:completionHandler];
+    [self readAttributeChildRoleCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeChildRoleCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37707,7 +40347,10 @@ - (void)subscribeAttributeChildRoleCountWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeChildRoleCountWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -37718,13 +40361,19 @@ + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeChildRoleCountWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeRouterRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRouterRoleCountWithCompletion:completionHandler];
+    [self readAttributeRouterRoleCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRouterRoleCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37742,7 +40391,10 @@ - (void)subscribeAttributeRouterRoleCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeRouterRoleCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -37753,13 +40405,19 @@ + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeRouterRoleCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeLeaderRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLeaderRoleCountWithCompletion:completionHandler];
+    [self readAttributeLeaderRoleCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLeaderRoleCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37777,7 +40435,10 @@ - (void)subscribeAttributeLeaderRoleCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeLeaderRoleCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -37788,13 +40449,19 @@ + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeLeaderRoleCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeAttachAttemptCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttachAttemptCountWithCompletion:completionHandler];
+    [self readAttributeAttachAttemptCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttachAttemptCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37813,7 +40480,10 @@ - (void)subscribeAttributeAttachAttemptCountWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeAttachAttemptCountWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -37824,13 +40494,19 @@ + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeAttachAttemptCountWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePartitionIdChangeCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartitionIdChangeCountWithCompletion:completionHandler];
+    [self readAttributePartitionIdChangeCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePartitionIdChangeCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37849,7 +40525,10 @@ - (void)subscribeAttributePartitionIdChangeCountWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributePartitionIdChangeCountWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -37860,13 +40539,19 @@ + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCache
     [self readAttributePartitionIdChangeCountWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBetterPartitionAttachAttemptCountWithCompletion:completionHandler];
+    [self readAttributeBetterPartitionAttachAttemptCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37885,7 +40570,10 @@ - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithMinInterval:(NSNu
     }
     [self subscribeAttributeBetterPartitionAttachAttemptCountWithParams:subscribeParams
                                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                                          reportHandler:reportHandler];
+                                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              reportHandler(static_cast(value), error);
+                                                          }];
 }
 + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                 endpoint:(NSNumber *)endpoint
@@ -37893,16 +40581,23 @@ + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:attributeCacheContainer
-                                                                  endpoint:endpoint
-                                                                     queue:queue
-                                                                completion:completionHandler];
+    [self
+        readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:attributeCacheContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeParentChangeCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeParentChangeCountWithCompletion:completionHandler];
+    [self readAttributeParentChangeCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeParentChangeCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37921,7 +40616,10 @@ - (void)subscribeAttributeParentChangeCountWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeParentChangeCountWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -37932,13 +40630,19 @@ + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeParentChangeCountWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeTxTotalCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxTotalCountWithCompletion:completionHandler];
+    [self readAttributeTxTotalCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxTotalCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37955,7 +40659,10 @@ - (void)subscribeAttributeTxTotalCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeTxTotalCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -37966,13 +40673,19 @@ + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxTotalCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeTxUnicastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxUnicastCountWithCompletion:completionHandler];
+    [self readAttributeTxUnicastCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxUnicastCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -37990,7 +40703,10 @@ - (void)subscribeAttributeTxUnicastCountWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeTxUnicastCountWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -38001,13 +40717,19 @@ + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeTxUnicastCountWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeTxBroadcastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBroadcastCountWithCompletion:completionHandler];
+    [self readAttributeTxBroadcastCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeTxBroadcastCountWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -38025,7 +40747,10 @@ - (void)readAttributeTxBroadcastCountWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeTxBroadcastCountWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -38036,13 +40761,19 @@ + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeTxBroadcastCountWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTxAckRequestedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxAckRequestedCountWithCompletion:completionHandler];
+    [self readAttributeTxAckRequestedCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxAckRequestedCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38061,7 +40792,10 @@ - (void)subscribeAttributeTxAckRequestedCountWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeTxAckRequestedCountWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -38072,13 +40806,19 @@ + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeTxAckRequestedCountWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTxAckedCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxAckedCountWithCompletion:completionHandler];
+    [self readAttributeTxAckedCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxAckedCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38095,7 +40835,10 @@ - (void)subscribeAttributeTxAckedCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeTxAckedCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -38106,13 +40849,19 @@ + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxAckedCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeTxNoAckRequestedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxNoAckRequestedCountWithCompletion:completionHandler];
+    [self readAttributeTxNoAckRequestedCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxNoAckRequestedCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38131,7 +40880,10 @@ - (void)subscribeAttributeTxNoAckRequestedCountWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeTxNoAckRequestedCountWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -38142,13 +40894,19 @@ + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeTxNoAckRequestedCountWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeTxDataCountWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDataCountWithCompletion:completionHandler];
+    [self readAttributeTxDataCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxDataCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38165,7 +40923,10 @@ - (void)subscribeAttributeTxDataCountWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeTxDataCountWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -38176,13 +40937,19 @@ + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeTxDataCountWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeTxDataPollCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDataPollCountWithCompletion:completionHandler];
+    [self readAttributeTxDataPollCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxDataPollCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38200,7 +40967,10 @@ - (void)subscribeAttributeTxDataPollCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeTxDataPollCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -38211,13 +40981,19 @@ + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeTxDataPollCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxBeaconCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBeaconCountWithCompletion:completionHandler];
+    [self readAttributeTxBeaconCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxBeaconCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38235,7 +41011,10 @@ - (void)subscribeAttributeTxBeaconCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeTxBeaconCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -38246,13 +41025,19 @@ + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxBeaconCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeTxBeaconRequestCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBeaconRequestCountWithCompletion:completionHandler];
+    [self readAttributeTxBeaconRequestCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxBeaconRequestCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38271,7 +41056,10 @@ - (void)subscribeAttributeTxBeaconRequestCountWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeTxBeaconRequestCountWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -38282,13 +41070,19 @@ + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeTxBeaconRequestCountWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeTxOtherCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxOtherCountWithCompletion:completionHandler];
+    [self readAttributeTxOtherCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxOtherCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38305,7 +41099,10 @@ - (void)subscribeAttributeTxOtherCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeTxOtherCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -38316,13 +41113,19 @@ + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxOtherCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeTxRetryCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxRetryCountWithCompletion:completionHandler];
+    [self readAttributeTxRetryCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxRetryCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38339,7 +41142,10 @@ - (void)subscribeAttributeTxRetryCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeTxRetryCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -38350,13 +41156,19 @@ + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxRetryCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDirectMaxRetryExpiryCountWithCompletion:completionHandler];
+    [self readAttributeTxDirectMaxRetryExpiryCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38375,7 +41187,10 @@ - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -38386,13 +41201,19 @@ + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribute
     [self readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:completionHandler];
+    [self readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38411,7 +41232,10 @@ - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithMinInterval:(NSNumber
     }
     [self subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -38422,13 +41246,19 @@ + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribu
     [self readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeTxErrCcaCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrCcaCountWithCompletion:completionHandler];
+    [self readAttributeTxErrCcaCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxErrCcaCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38446,7 +41276,10 @@ - (void)subscribeAttributeTxErrCcaCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeTxErrCcaCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -38457,13 +41290,19 @@ + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeTxErrCcaCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeTxErrAbortCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrAbortCountWithCompletion:completionHandler];
+    [self readAttributeTxErrAbortCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxErrAbortCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38481,7 +41320,10 @@ - (void)subscribeAttributeTxErrAbortCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeTxErrAbortCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -38492,13 +41334,19 @@ + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeTxErrAbortCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxErrBusyChannelCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrBusyChannelCountWithCompletion:completionHandler];
+    [self readAttributeTxErrBusyChannelCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxErrBusyChannelCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38517,7 +41365,10 @@ - (void)subscribeAttributeTxErrBusyChannelCountWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeTxErrBusyChannelCountWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -38528,13 +41379,19 @@ + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeTxErrBusyChannelCountWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRxTotalCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxTotalCountWithCompletion:completionHandler];
+    [self readAttributeRxTotalCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxTotalCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38551,7 +41408,10 @@ - (void)subscribeAttributeRxTotalCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeRxTotalCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -38562,13 +41422,19 @@ + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRxTotalCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeRxUnicastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxUnicastCountWithCompletion:completionHandler];
+    [self readAttributeRxUnicastCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxUnicastCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38586,7 +41452,10 @@ - (void)subscribeAttributeRxUnicastCountWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeRxUnicastCountWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -38597,13 +41466,19 @@ + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeRxUnicastCountWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeRxBroadcastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBroadcastCountWithCompletion:completionHandler];
+    [self readAttributeRxBroadcastCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRxBroadcastCountWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -38621,7 +41496,10 @@ - (void)readAttributeRxBroadcastCountWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRxBroadcastCountWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -38632,13 +41510,19 @@ + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRxBroadcastCountWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRxDataCountWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDataCountWithCompletion:completionHandler];
+    [self readAttributeRxDataCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxDataCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38655,7 +41539,10 @@ - (void)subscribeAttributeRxDataCountWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeRxDataCountWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -38666,13 +41553,19 @@ + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeRxDataCountWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeRxDataPollCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDataPollCountWithCompletion:completionHandler];
+    [self readAttributeRxDataPollCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxDataPollCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38690,7 +41583,10 @@ - (void)subscribeAttributeRxDataPollCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeRxDataPollCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -38701,13 +41597,19 @@ + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeRxDataPollCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeRxBeaconCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBeaconCountWithCompletion:completionHandler];
+    [self readAttributeRxBeaconCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxBeaconCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38725,7 +41627,10 @@ - (void)subscribeAttributeRxBeaconCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRxBeaconCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -38736,13 +41641,19 @@ + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRxBeaconCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRxBeaconRequestCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBeaconRequestCountWithCompletion:completionHandler];
+    [self readAttributeRxBeaconRequestCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxBeaconRequestCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38761,7 +41672,10 @@ - (void)subscribeAttributeRxBeaconRequestCountWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeRxBeaconRequestCountWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -38772,13 +41686,19 @@ + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeRxBeaconRequestCountWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRxOtherCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxOtherCountWithCompletion:completionHandler];
+    [self readAttributeRxOtherCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxOtherCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38795,7 +41715,10 @@ - (void)subscribeAttributeRxOtherCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeRxOtherCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -38806,13 +41729,19 @@ + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRxOtherCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeRxAddressFilteredCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxAddressFilteredCountWithCompletion:completionHandler];
+    [self readAttributeRxAddressFilteredCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxAddressFilteredCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38831,7 +41760,10 @@ - (void)subscribeAttributeRxAddressFilteredCountWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeRxAddressFilteredCountWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -38842,13 +41774,19 @@ + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCache
     [self readAttributeRxAddressFilteredCountWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRxDestAddrFilteredCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDestAddrFilteredCountWithCompletion:completionHandler];
+    [self readAttributeRxDestAddrFilteredCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxDestAddrFilteredCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38867,7 +41805,10 @@ - (void)subscribeAttributeRxDestAddrFilteredCountWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeRxDestAddrFilteredCountWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -38878,13 +41819,19 @@ + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCach
     [self readAttributeRxDestAddrFilteredCountWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeRxDuplicatedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDuplicatedCountWithCompletion:completionHandler];
+    [self readAttributeRxDuplicatedCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxDuplicatedCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38903,7 +41850,10 @@ - (void)subscribeAttributeRxDuplicatedCountWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeRxDuplicatedCountWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -38914,13 +41864,19 @@ + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeRxDuplicatedCountWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRxErrNoFrameCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrNoFrameCountWithCompletion:completionHandler];
+    [self readAttributeRxErrNoFrameCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrNoFrameCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38939,7 +41895,10 @@ - (void)subscribeAttributeRxErrNoFrameCountWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeRxErrNoFrameCountWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -38950,13 +41909,19 @@ + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeRxErrNoFrameCountWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRxErrUnknownNeighborCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrUnknownNeighborCountWithCompletion:completionHandler];
+    [self readAttributeRxErrUnknownNeighborCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrUnknownNeighborCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -38975,7 +41940,10 @@ - (void)subscribeAttributeRxErrUnknownNeighborCountWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeRxErrUnknownNeighborCountWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -38986,13 +41954,19 @@ + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCa
     [self readAttributeRxErrUnknownNeighborCountWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrInvalidSrcAddrCountWithCompletion:completionHandler];
+    [self readAttributeRxErrInvalidSrcAddrCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39011,7 +41985,10 @@ - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeRxErrInvalidSrcAddrCountWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -39022,13 +41999,19 @@ + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCac
     [self readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRxErrSecCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrSecCountWithCompletion:completionHandler];
+    [self readAttributeRxErrSecCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrSecCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39046,7 +42029,10 @@ - (void)subscribeAttributeRxErrSecCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRxErrSecCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -39057,13 +42043,19 @@ + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRxErrSecCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRxErrFcsCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrFcsCountWithCompletion:completionHandler];
+    [self readAttributeRxErrFcsCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrFcsCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39081,7 +42073,10 @@ - (void)subscribeAttributeRxErrFcsCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRxErrFcsCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -39092,13 +42087,19 @@ + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRxErrFcsCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRxErrOtherCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrOtherCountWithCompletion:completionHandler];
+    [self readAttributeRxErrOtherCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRxErrOtherCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39116,7 +42117,10 @@ - (void)subscribeAttributeRxErrOtherCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeRxErrOtherCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -39127,13 +42131,19 @@ + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeRxErrOtherCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeActiveTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveTimestampWithCompletion:completionHandler];
+    [self readAttributeActiveTimestampWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveTimestampWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39151,7 +42161,10 @@ - (void)subscribeAttributeActiveTimestampWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeActiveTimestampWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -39162,13 +42175,19 @@ + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeActiveTimestampWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePendingTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributePendingTimestampWithCompletion:completionHandler];
+    [self readAttributePendingTimestampWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributePendingTimestampWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -39186,7 +42205,10 @@ - (void)readAttributePendingTimestampWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributePendingTimestampWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -39197,12 +42219,18 @@ + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributePendingTimestampWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDelayWithCompletion:completionHandler];
+    [self readAttributeDelayWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDelayWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39219,20 +42247,33 @@ - (void)subscribeAttributeDelayWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeDelayWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDelayWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeDelayWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeSecurityPolicyWithCompletionHandler:
     (void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSecurityPolicyWithCompletion:completionHandler];
+    [self readAttributeSecurityPolicyWithCompletion:^(
+        MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSecurityPolicyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39251,7 +42292,12 @@ - (void)subscribeAttributeSecurityPolicyWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeSecurityPolicyWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
+                                           NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(
+                                               static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -39262,13 +42308,21 @@ + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeSecurityPolicyWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
+                                                 NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(
+                                                     static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeChannelPage0MaskWithCompletionHandler:(void (^)(NSData * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelPage0MaskWithCompletion:completionHandler];
+    [self readAttributeChannelPage0MaskWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeChannelPage0MaskWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -39286,7 +42340,10 @@ - (void)readAttributeChannelPage0MaskWithCompletionHandler:(void (^)(NSData * _N
     }
     [self subscribeAttributeChannelPage0MaskWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -39297,14 +42354,21 @@ + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeChannelPage0MaskWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeOperationalDatasetComponentsWithCompletionHandler:
     (void (^)(MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationalDatasetComponentsWithCompletion:completionHandler];
+    [self readAttributeOperationalDatasetComponentsWithCompletion:^(
+        MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeOperationalDatasetComponentsWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -39324,9 +42388,19 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletionHandler:
         subscribeParams.minInterval = minInterval;
         subscribeParams.maxInterval = maxInterval;
     }
-    [self subscribeAttributeOperationalDatasetComponentsWithParams:subscribeParams
-                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+    [self
+        subscribeAttributeOperationalDatasetComponentsWithParams:subscribeParams
+                                         subscriptionEstablished:subscriptionEstablishedHandler
+                                                   reportHandler:^(
+                                                       MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
+                                                       NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(
+                                                           static_cast<
+                                                               MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents *>(
+                                                               value),
+                                                           error);
+                                                   }];
 }
 + (void)
     readAttributeOperationalDatasetComponentsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39337,16 +42411,29 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletionHandler:
                                                       MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationalDatasetComponentsWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:completionHandler];
+    [self
+        readAttributeOperationalDatasetComponentsWithAttributeCache:attributeCacheContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(
+                                                             MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
+                                                             NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(
+                                                                 static_cast<
+                                                                     MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents *>(
+                                                                     value),
+                                                                 error);
+                                                         }];
 }
 
 - (void)readAttributeActiveNetworkFaultsListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveNetworkFaultsListWithCompletion:completionHandler];
+    [self readAttributeActiveNetworkFaultsListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveNetworkFaultsListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39365,7 +42452,10 @@ - (void)subscribeAttributeActiveNetworkFaultsListWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeActiveNetworkFaultsListWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -39376,13 +42466,19 @@ + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCach
     [self readAttributeActiveNetworkFaultsListWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39401,7 +42497,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -39412,13 +42511,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39437,7 +42542,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -39448,13 +42556,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39471,7 +42585,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -39482,13 +42599,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39505,7 +42628,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -39515,13 +42641,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -39539,7 +42671,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -39550,7 +42685,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -40900,12 +44038,15 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams
 }
 - (void)resetCountsWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithParams:nil completion:completionHandler];
+    [self resetCountsWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeBssidWithCompletionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBssidWithCompletion:completionHandler];
+    [self readAttributeBssidWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBssidWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -40922,20 +44063,32 @@ - (void)subscribeAttributeBssidWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeBssidWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBssidWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeBssidWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeSecurityTypeWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSecurityTypeWithCompletion:completionHandler];
+    [self readAttributeSecurityTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSecurityTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -40952,7 +44105,10 @@ - (void)subscribeAttributeSecurityTypeWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSecurityTypeWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -40963,13 +44119,19 @@ + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSecurityTypeWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeWiFiVersionWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiFiVersionWithCompletion:completionHandler];
+    [self readAttributeWiFiVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWiFiVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -40986,7 +44148,10 @@ - (void)subscribeAttributeWiFiVersionWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeWiFiVersionWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -40997,13 +44162,19 @@ + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeWiFiVersionWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeChannelNumberWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelNumberWithCompletion:completionHandler];
+    [self readAttributeChannelNumberWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeChannelNumberWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41021,7 +44192,10 @@ - (void)subscribeAttributeChannelNumberWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeChannelNumberWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -41032,12 +44206,18 @@ + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeChannelNumberWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRssiWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRssiWithCompletion:completionHandler];
+    [self readAttributeRssiWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRssiWithMinInterval:(NSNumber * _Nonnull)minInterval
                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41054,20 +44234,32 @@ - (void)subscribeAttributeRssiWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeRssiWithParams:subscribeParams
                    subscriptionEstablished:subscriptionEstablishedHandler
-                             reportHandler:reportHandler];
+                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 reportHandler(static_cast(value), error);
+                             }];
 }
 + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                    endpoint:(NSNumber *)endpoint
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRssiWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeRssiWithAttributeCache:attributeCacheContainer
+                                     endpoint:endpoint
+                                        queue:queue
+                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(value), error);
+                                   }];
 }
 
 - (void)readAttributeBeaconLostCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBeaconLostCountWithCompletion:completionHandler];
+    [self readAttributeBeaconLostCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBeaconLostCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41085,7 +44277,10 @@ - (void)subscribeAttributeBeaconLostCountWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeBeaconLostCountWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -41096,13 +44291,19 @@ + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeBeaconLostCountWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeBeaconRxCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBeaconRxCountWithCompletion:completionHandler];
+    [self readAttributeBeaconRxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBeaconRxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41120,7 +44321,10 @@ - (void)subscribeAttributeBeaconRxCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeBeaconRxCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -41131,13 +44335,19 @@ + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeBeaconRxCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributePacketMulticastRxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketMulticastRxCountWithCompletion:completionHandler];
+    [self readAttributePacketMulticastRxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketMulticastRxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41156,7 +44366,10 @@ - (void)subscribeAttributePacketMulticastRxCountWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributePacketMulticastRxCountWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -41167,13 +44380,19 @@ + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCache
     [self readAttributePacketMulticastRxCountWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributePacketMulticastTxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketMulticastTxCountWithCompletion:completionHandler];
+    [self readAttributePacketMulticastTxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketMulticastTxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41192,7 +44411,10 @@ - (void)subscribeAttributePacketMulticastTxCountWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributePacketMulticastTxCountWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -41203,13 +44425,19 @@ + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCache
     [self readAttributePacketMulticastTxCountWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributePacketUnicastRxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketUnicastRxCountWithCompletion:completionHandler];
+    [self readAttributePacketUnicastRxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketUnicastRxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41228,7 +44456,10 @@ - (void)subscribeAttributePacketUnicastRxCountWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributePacketUnicastRxCountWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -41239,13 +44470,19 @@ + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributePacketUnicastRxCountWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePacketUnicastTxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketUnicastTxCountWithCompletion:completionHandler];
+    [self readAttributePacketUnicastTxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketUnicastTxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41264,7 +44501,10 @@ - (void)subscribeAttributePacketUnicastTxCountWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributePacketUnicastTxCountWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -41275,13 +44515,19 @@ + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributePacketUnicastTxCountWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeCurrentMaxRateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentMaxRateWithCompletion:completionHandler];
+    [self readAttributeCurrentMaxRateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentMaxRateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41299,7 +44545,10 @@ - (void)subscribeAttributeCurrentMaxRateWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeCurrentMaxRateWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -41310,13 +44559,19 @@ + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeCurrentMaxRateWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithCompletion:completionHandler];
+    [self readAttributeOverrunCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41333,7 +44588,10 @@ - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeOverrunCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -41344,13 +44602,19 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41369,7 +44633,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -41380,13 +44647,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41405,7 +44678,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -41416,13 +44692,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41439,7 +44721,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -41450,13 +44735,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41473,7 +44764,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -41483,13 +44777,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -41507,7 +44807,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -41518,7 +44821,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -42577,12 +45883,15 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa
 }
 - (void)resetCountsWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithParams:nil completion:completionHandler];
+    [self resetCountsWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributePHYRateWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePHYRateWithCompletion:completionHandler];
+    [self readAttributePHYRateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePHYRateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42599,7 +45908,10 @@ - (void)subscribeAttributePHYRateWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributePHYRateWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -42609,13 +45921,19 @@ + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributePHYRateWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeFullDuplexWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFullDuplexWithCompletion:completionHandler];
+    [self readAttributeFullDuplexWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFullDuplexWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42632,7 +45950,10 @@ - (void)subscribeAttributeFullDuplexWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFullDuplexWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -42642,13 +45963,19 @@ + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFullDuplexWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributePacketRxCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketRxCountWithCompletion:completionHandler];
+    [self readAttributePacketRxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketRxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42666,7 +45993,10 @@ - (void)subscribeAttributePacketRxCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributePacketRxCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -42677,13 +46007,19 @@ + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributePacketRxCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributePacketTxCountWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketTxCountWithCompletion:completionHandler];
+    [self readAttributePacketTxCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePacketTxCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42701,7 +46037,10 @@ - (void)subscribeAttributePacketTxCountWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributePacketTxCountWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -42712,13 +46051,19 @@ + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributePacketTxCountWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeTxErrCountWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrCountWithCompletion:completionHandler];
+    [self readAttributeTxErrCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTxErrCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42735,7 +46080,10 @@ - (void)subscribeAttributeTxErrCountWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeTxErrCountWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -42745,13 +46093,19 @@ + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeTxErrCountWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeCollisionCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCollisionCountWithCompletion:completionHandler];
+    [self readAttributeCollisionCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCollisionCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42769,7 +46123,10 @@ - (void)subscribeAttributeCollisionCountWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeCollisionCountWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -42780,13 +46137,19 @@ + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeCollisionCountWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithCompletion:completionHandler];
+    [self readAttributeOverrunCountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42803,7 +46166,10 @@ - (void)subscribeAttributeOverrunCountWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeOverrunCountWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -42814,13 +46180,19 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeCarrierDetectWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCarrierDetectWithCompletion:completionHandler];
+    [self readAttributeCarrierDetectWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCarrierDetectWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42838,7 +46210,10 @@ - (void)subscribeAttributeCarrierDetectWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeCarrierDetectWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -42849,13 +46224,19 @@ + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCarrierDetectWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeTimeSinceResetWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTimeSinceResetWithCompletion:completionHandler];
+    [self readAttributeTimeSinceResetWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTimeSinceResetWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42873,7 +46254,10 @@ - (void)subscribeAttributeTimeSinceResetWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeTimeSinceResetWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -42884,13 +46268,19 @@ + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeTimeSinceResetWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42909,7 +46299,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -42920,13 +46313,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42945,7 +46344,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -42956,13 +46358,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -42979,7 +46387,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -42990,13 +46401,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -43013,7 +46430,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -43023,13 +46443,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -43047,7 +46473,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -43058,7 +46487,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -44529,7 +47961,10 @@ @implementation MTRBaseClusterBridgedDeviceBasic (Deprecated)
 - (void)readAttributeVendorNameWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithCompletion:completionHandler];
+    [self readAttributeVendorNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44546,7 +47981,10 @@ - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeVendorNameWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -44556,13 +47994,19 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithCompletion:completionHandler];
+    [self readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44579,7 +48023,10 @@ - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeVendorIDWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -44589,13 +48036,19 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeProductNameWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductNameWithCompletion:completionHandler];
+    [self readAttributeProductNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44612,7 +48065,10 @@ - (void)subscribeAttributeProductNameWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeProductNameWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -44623,13 +48079,19 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeProductNameWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeNodeLabelWithCompletionHandler:(void (^)(
                                                         NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNodeLabelWithCompletion:completionHandler];
+    [self readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -44656,7 +48118,10 @@ - (void)subscribeAttributeNodeLabelWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeNodeLabelWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -44666,13 +48131,19 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeNodeLabelWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeHardwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionWithCompletion:completionHandler];
+    [self readAttributeHardwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeHardwareVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44690,7 +48161,10 @@ - (void)subscribeAttributeHardwareVersionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeHardwareVersionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -44701,13 +48175,19 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeHardwareVersionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeHardwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionStringWithCompletion:completionHandler];
+    [self readAttributeHardwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeHardwareVersionStringWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44726,7 +48206,10 @@ - (void)subscribeAttributeHardwareVersionStringWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeHardwareVersionStringWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -44737,13 +48220,19 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeHardwareVersionStringWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeSoftwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionWithCompletion:completionHandler];
+    [self readAttributeSoftwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSoftwareVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44761,7 +48250,10 @@ - (void)subscribeAttributeSoftwareVersionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeSoftwareVersionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -44772,13 +48264,19 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeSoftwareVersionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSoftwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionStringWithCompletion:completionHandler];
+    [self readAttributeSoftwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSoftwareVersionStringWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44797,7 +48295,10 @@ - (void)subscribeAttributeSoftwareVersionStringWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeSoftwareVersionStringWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -44808,13 +48309,19 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeSoftwareVersionStringWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeManufacturingDateWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeManufacturingDateWithCompletion:completionHandler];
+    [self readAttributeManufacturingDateWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeManufacturingDateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44833,7 +48340,10 @@ - (void)subscribeAttributeManufacturingDateWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeManufacturingDateWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -44844,13 +48354,19 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeManufacturingDateWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePartNumberWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartNumberWithCompletion:completionHandler];
+    [self readAttributePartNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePartNumberWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44867,7 +48383,10 @@ - (void)subscribeAttributePartNumberWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributePartNumberWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -44877,13 +48396,19 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributePartNumberWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeProductURLWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductURLWithCompletion:completionHandler];
+    [self readAttributeProductURLWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductURLWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44900,7 +48425,10 @@ - (void)subscribeAttributeProductURLWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeProductURLWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -44910,13 +48438,19 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeProductURLWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeProductLabelWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductLabelWithCompletion:completionHandler];
+    [self readAttributeProductLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductLabelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44933,7 +48467,10 @@ - (void)subscribeAttributeProductLabelWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeProductLabelWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -44944,13 +48481,19 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeProductLabelWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSerialNumberWithCompletionHandler:(void (^)(
                                                            NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSerialNumberWithCompletion:completionHandler];
+    [self readAttributeSerialNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSerialNumberWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -44967,7 +48510,10 @@ - (void)subscribeAttributeSerialNumberWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSerialNumberWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -44978,13 +48524,19 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSerialNumberWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeReachableWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReachableWithCompletion:completionHandler];
+    [self readAttributeReachableWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReachableWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45001,7 +48553,10 @@ - (void)subscribeAttributeReachableWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeReachableWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -45011,13 +48566,19 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeReachableWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeUniqueIDWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUniqueIDWithCompletion:completionHandler];
+    [self readAttributeUniqueIDWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUniqueIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45034,7 +48595,10 @@ - (void)subscribeAttributeUniqueIDWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeUniqueIDWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -45044,13 +48608,19 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeUniqueIDWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45069,7 +48639,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -45080,13 +48653,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45105,7 +48684,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -45116,13 +48698,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45139,7 +48727,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -45150,13 +48741,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45173,7 +48770,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -45183,13 +48783,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45207,7 +48813,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -45218,7 +48827,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -45810,7 +49422,10 @@ @implementation MTRBaseClusterSwitch (Deprecated)
 - (void)readAttributeNumberOfPositionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPositionsWithCompletion:completionHandler];
+    [self readAttributeNumberOfPositionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfPositionsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45829,7 +49444,10 @@ - (void)subscribeAttributeNumberOfPositionsWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeNumberOfPositionsWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -45840,13 +49458,19 @@ + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeNumberOfPositionsWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeCurrentPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45864,7 +49488,10 @@ - (void)subscribeAttributeCurrentPositionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeCurrentPositionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -45875,13 +49502,19 @@ + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeCurrentPositionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMultiPressMaxWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMultiPressMaxWithCompletion:completionHandler];
+    [self readAttributeMultiPressMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMultiPressMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45899,7 +49532,10 @@ - (void)subscribeAttributeMultiPressMaxWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMultiPressMaxWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -45910,13 +49546,19 @@ + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMultiPressMaxWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45935,7 +49577,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -45946,13 +49591,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -45971,7 +49622,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -45982,13 +49636,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46005,7 +49665,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -46016,13 +49679,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46039,7 +49708,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -46049,13 +49721,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46073,7 +49751,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -46084,7 +49765,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -46809,13 +50493,16 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok
 }
 - (void)revokeCommissioningWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self revokeCommissioningWithParams:nil completion:completionHandler];
+    [self revokeCommissioningWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeWindowStatusWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindowStatusWithCompletion:completionHandler];
+    [self readAttributeWindowStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWindowStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46832,7 +50519,10 @@ - (void)subscribeAttributeWindowStatusWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeWindowStatusWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -46843,13 +50533,19 @@ + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeWindowStatusWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeAdminFabricIndexWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAdminFabricIndexWithCompletion:completionHandler];
+    [self readAttributeAdminFabricIndexWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeAdminFabricIndexWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -46867,7 +50563,10 @@ - (void)readAttributeAdminFabricIndexWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeAdminFabricIndexWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -46878,13 +50577,19 @@ + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeAdminFabricIndexWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeAdminVendorIdWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAdminVendorIdWithCompletion:completionHandler];
+    [self readAttributeAdminVendorIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAdminVendorIdWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46902,7 +50607,10 @@ - (void)subscribeAttributeAdminVendorIdWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAdminVendorIdWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -46913,13 +50621,19 @@ + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAdminVendorIdWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46938,7 +50652,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -46949,13 +50666,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -46974,7 +50697,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -46985,13 +50711,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -47008,7 +50740,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -47019,13 +50754,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -47042,7 +50783,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -47052,13 +50796,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -47076,7 +50826,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -47087,7 +50840,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -48146,43 +51902,77 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio
                    completionHandler:(void (^)(MTROperationalCredentialsClusterAttestationResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self attestationRequestWithParams:params completion:completionHandler];
+    [self attestationRequestWithParams:params
+                            completion:^(MTROperationalCredentialsClusterAttestationResponseParams * _Nullable data,
+                                NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(
+                                    static_cast(data), error);
+                            }];
 }
 - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCertificateChainRequestParams *)params
                         completionHandler:(void (^)(MTROperationalCredentialsClusterCertificateChainResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
-    [self certificateChainRequestWithParams:params completion:completionHandler];
+    [self
+        certificateChainRequestWithParams:params
+                               completion:^(MTROperationalCredentialsClusterCertificateChainResponseParams * _Nullable data,
+                                   NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   completionHandler(
+                                       static_cast(data), error);
+                               }];
 }
 - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *)params
            completionHandler:(void (^)(MTROperationalCredentialsClusterCSRResponseParams * _Nullable data,
                                  NSError * _Nullable error))completionHandler
 {
-    [self CSRRequestWithParams:params completion:completionHandler];
+    [self CSRRequestWithParams:params
+                    completion:^(MTROperationalCredentialsClusterCSRResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
        completionHandler:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
                              NSError * _Nullable error))completionHandler
 {
-    [self addNOCWithParams:params completion:completionHandler];
+    [self addNOCWithParams:params
+                completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                    // Cast is safe because subclass does not add any selectors.
+                    completionHandler(static_cast(data), error);
+                }];
 }
 - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)params
           completionHandler:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
                                 NSError * _Nullable error))completionHandler
 {
-    [self updateNOCWithParams:params completion:completionHandler];
+    [self updateNOCWithParams:params
+                   completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabricLabelParams *)params
                   completionHandler:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self updateFabricLabelWithParams:params completion:completionHandler];
+    [self updateFabricLabelWithParams:params
+                           completion:^(
+                               MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                               // Cast is safe because subclass does not add any selectors.
+                               completionHandler(static_cast(data), error);
+                           }];
 }
 - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricParams *)params
              completionHandler:(void (^)(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self removeFabricWithParams:params completion:completionHandler];
+    [self removeFabricWithParams:params
+                      completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAddTrustedRootCertificateParams *)params
                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -48193,7 +51983,11 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
 - (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params
                   completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNOCsWithParams:params completion:completionHandler];
+    [self readAttributeNOCsWithParams:params
+                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                               // Cast is safe because subclass does not add any selectors.
+                               completionHandler(static_cast(value), error);
+                           }];
 }
 - (void)subscribeAttributeNOCsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48210,20 +52004,33 @@ - (void)subscribeAttributeNOCsWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeNOCsWithParams:subscribeParams
                    subscriptionEstablished:subscriptionEstablishedHandler
-                             reportHandler:reportHandler];
+                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 reportHandler(static_cast(value), error);
+                             }];
 }
 + (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                    endpoint:(NSNumber *)endpoint
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNOCsWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeNOCsWithAttributeCache:attributeCacheContainer
+                                     endpoint:endpoint
+                                        queue:queue
+                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(value), error);
+                                   }];
 }
 
 - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
                      completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFabricsWithParams:params completion:completionHandler];
+    [self readAttributeFabricsWithParams:params
+                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  completionHandler(static_cast(value), error);
+                              }];
 }
 - (void)subscribeAttributeFabricsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48240,7 +52047,10 @@ - (void)subscribeAttributeFabricsWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeFabricsWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -48250,13 +52060,19 @@ + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeFabricsWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeSupportedFabricsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedFabricsWithCompletion:completionHandler];
+    [self readAttributeSupportedFabricsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeSupportedFabricsWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -48274,7 +52090,10 @@ - (void)readAttributeSupportedFabricsWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeSupportedFabricsWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -48285,13 +52104,19 @@ + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeSupportedFabricsWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeCommissionedFabricsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCommissionedFabricsWithCompletion:completionHandler];
+    [self readAttributeCommissionedFabricsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCommissionedFabricsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48310,7 +52135,10 @@ - (void)subscribeAttributeCommissionedFabricsWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeCommissionedFabricsWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -48321,13 +52149,19 @@ + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeCommissionedFabricsWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTrustedRootCertificatesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTrustedRootCertificatesWithCompletion:completionHandler];
+    [self readAttributeTrustedRootCertificatesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTrustedRootCertificatesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48346,7 +52180,10 @@ - (void)subscribeAttributeTrustedRootCertificatesWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeTrustedRootCertificatesWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -48357,13 +52194,19 @@ + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCach
     [self readAttributeTrustedRootCertificatesWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeCurrentFabricIndexWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentFabricIndexWithCompletion:completionHandler];
+    [self readAttributeCurrentFabricIndexWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentFabricIndexWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48382,7 +52225,10 @@ - (void)subscribeAttributeCurrentFabricIndexWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeCurrentFabricIndexWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -48393,13 +52239,19 @@ + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeCurrentFabricIndexWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48418,7 +52270,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -48429,13 +52284,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48454,7 +52315,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -48465,13 +52329,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48488,7 +52358,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -48499,13 +52372,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48522,7 +52401,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -48532,13 +52414,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -48556,7 +52444,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -48567,7 +52458,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -49486,7 +53380,11 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par
            completionHandler:(void (^)(MTRGroupKeyManagementClusterKeySetReadResponseParams * _Nullable data,
                                  NSError * _Nullable error))completionHandler
 {
-    [self keySetReadWithParams:params completion:completionHandler];
+    [self keySetReadWithParams:params
+                    completion:^(MTRGroupKeyManagementClusterKeySetReadResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams *)params
              completionHandler:(MTRStatusCompletion)completionHandler
@@ -49497,13 +53395,23 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
                      completionHandler:(void (^)(MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
-    [self keySetReadAllIndicesWithParams:params completion:completionHandler];
+    [self keySetReadAllIndicesWithParams:params
+                              completion:^(MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams * _Nullable data,
+                                  NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  completionHandler(
+                                      static_cast(data), error);
+                              }];
 }
 
 - (void)readAttributeGroupKeyMapWithParams:(MTRReadParams * _Nullable)params
                          completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGroupKeyMapWithParams:params completion:completionHandler];
+    [self readAttributeGroupKeyMapWithParams:params
+                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(static_cast(value), error);
+                                  }];
 }
 - (void)writeAttributeGroupKeyMapWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -49530,7 +53438,10 @@ - (void)subscribeAttributeGroupKeyMapWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeGroupKeyMapWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -49540,13 +53451,20 @@ + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeGroupKeyMapWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
                         completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGroupTableWithParams:params completion:completionHandler];
+    [self readAttributeGroupTableWithParams:params
+                                 completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     completionHandler(static_cast(value), error);
+                                 }];
 }
 - (void)subscribeAttributeGroupTableWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49563,7 +53481,10 @@ - (void)subscribeAttributeGroupTableWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeGroupTableWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -49573,13 +53494,19 @@ + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeGroupTableWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeMaxGroupsPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxGroupsPerFabricWithCompletion:completionHandler];
+    [self readAttributeMaxGroupsPerFabricWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxGroupsPerFabricWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49598,7 +53525,10 @@ - (void)subscribeAttributeMaxGroupsPerFabricWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeMaxGroupsPerFabricWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -49609,13 +53539,19 @@ + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeMaxGroupsPerFabricWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeMaxGroupKeysPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxGroupKeysPerFabricWithCompletion:completionHandler];
+    [self readAttributeMaxGroupKeysPerFabricWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxGroupKeysPerFabricWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49634,7 +53570,10 @@ - (void)subscribeAttributeMaxGroupKeysPerFabricWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeMaxGroupKeysPerFabricWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -49645,13 +53584,19 @@ + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeMaxGroupKeysPerFabricWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49670,7 +53615,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -49681,13 +53629,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49706,7 +53660,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -49717,13 +53674,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49740,7 +53703,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -49751,13 +53717,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49774,7 +53746,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -49784,13 +53759,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -49808,7 +53789,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -49819,7 +53803,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -50279,7 +54266,10 @@ @implementation MTRBaseClusterFixedLabel (Deprecated)
 - (void)readAttributeLabelListWithCompletionHandler:(void (^)(
                                                         NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLabelListWithCompletion:completionHandler];
+    [self readAttributeLabelListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLabelListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50296,7 +54286,10 @@ - (void)subscribeAttributeLabelListWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeLabelListWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -50306,13 +54299,19 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeLabelListWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50331,7 +54330,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -50342,13 +54344,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50367,7 +54375,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -50378,13 +54389,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50401,7 +54418,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -50412,13 +54432,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50435,7 +54461,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -50445,13 +54474,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -50469,7 +54504,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -50480,7 +54518,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -50998,7 +55039,10 @@ @implementation MTRBaseClusterUserLabel (Deprecated)
 - (void)readAttributeLabelListWithCompletionHandler:(void (^)(
                                                         NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLabelListWithCompletion:completionHandler];
+    [self readAttributeLabelListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -51025,7 +55069,10 @@ - (void)subscribeAttributeLabelListWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeLabelListWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -51035,13 +55082,19 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeLabelListWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51060,7 +55113,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -51071,13 +55127,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51096,7 +55158,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -51107,13 +55172,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51130,7 +55201,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -51141,13 +55215,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51164,7 +55244,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -51174,13 +55257,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51198,7 +55287,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -51209,7 +55301,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -51668,7 +55763,10 @@ @implementation MTRBaseClusterBooleanState (Deprecated)
 - (void)readAttributeStateValueWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStateValueWithCompletion:completionHandler];
+    [self readAttributeStateValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStateValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51685,7 +55783,10 @@ - (void)subscribeAttributeStateValueWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeStateValueWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -51695,13 +55796,19 @@ + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeStateValueWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51720,7 +55827,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -51731,13 +55841,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51756,7 +55872,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -51767,13 +55886,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51790,7 +55915,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -51801,13 +55929,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51824,7 +55958,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -51834,13 +55971,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -51858,7 +56001,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -51869,7 +56015,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -52791,7 +56940,10 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params
 - (void)readAttributeDescriptionWithCompletionHandler:(void (^)(
                                                           NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithCompletion:completionHandler];
+    [self readAttributeDescriptionWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDescriptionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -52808,7 +56960,10 @@ - (void)subscribeAttributeDescriptionWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeDescriptionWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -52819,13 +56974,19 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStandardNamespaceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStandardNamespaceWithCompletion:completionHandler];
+    [self readAttributeStandardNamespaceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStandardNamespaceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -52844,7 +57005,10 @@ - (void)subscribeAttributeStandardNamespaceWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeStandardNamespaceWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -52855,13 +57019,19 @@ + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeStandardNamespaceWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeSupportedModesWithCompletionHandler:(void (^)(
                                                              NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedModesWithCompletion:completionHandler];
+    [self readAttributeSupportedModesWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSupportedModesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -52879,7 +57049,10 @@ - (void)subscribeAttributeSupportedModesWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeSupportedModesWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -52890,13 +57063,19 @@ + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeSupportedModesWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeCurrentModeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentModeWithCompletion:completionHandler];
+    [self readAttributeCurrentModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -52913,7 +57092,10 @@ - (void)subscribeAttributeCurrentModeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeCurrentModeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -52924,13 +57106,19 @@ + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeCurrentModeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStartUpModeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpModeWithCompletion:completionHandler];
+    [self readAttributeStartUpModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeStartUpModeWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -52957,7 +57145,10 @@ - (void)subscribeAttributeStartUpModeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeStartUpModeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -52968,12 +57159,18 @@ + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeStartUpModeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeOnModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnModeWithCompletion:completionHandler];
+    [self readAttributeOnModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOnModeWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -53000,20 +57197,32 @@ - (void)subscribeAttributeOnModeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeOnModeWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnModeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeOnModeWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -53032,7 +57241,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -53043,13 +57255,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -53068,7 +57286,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -53079,13 +57300,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -53102,7 +57329,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -53113,13 +57343,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -53136,7 +57372,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -53146,13 +57385,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -53170,7 +57415,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -53181,7 +57429,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -57429,7 +61680,12 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams
                    completionHandler:(void (^)(MTRDoorLockClusterGetWeekDayScheduleResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self getWeekDayScheduleWithParams:params completion:completionHandler];
+    [self getWeekDayScheduleWithParams:params
+                            completion:^(
+                                MTRDoorLockClusterGetWeekDayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDayScheduleParams *)params
                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -57445,7 +61701,12 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams
                    completionHandler:(void (^)(MTRDoorLockClusterGetYearDayScheduleResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self getYearDayScheduleWithParams:params completion:completionHandler];
+    [self getYearDayScheduleWithParams:params
+                            completion:^(
+                                MTRDoorLockClusterGetYearDayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDayScheduleParams *)params
                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -57461,7 +61722,12 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams
                    completionHandler:(void (^)(MTRDoorLockClusterGetHolidayScheduleResponseParams * _Nullable data,
                                          NSError * _Nullable error))completionHandler
 {
-    [self getHolidayScheduleWithParams:params completion:completionHandler];
+    [self getHolidayScheduleWithParams:params
+                            completion:^(
+                                MTRDoorLockClusterGetHolidayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidayScheduleParams *)params
                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -57476,7 +61742,11 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params
         completionHandler:
             (void (^)(MTRDoorLockClusterGetUserResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self getUserWithParams:params completion:completionHandler];
+    [self getUserWithParams:params
+                 completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable data, NSError * _Nullable error) {
+                     // Cast is safe because subclass does not add any selectors.
+                     completionHandler(static_cast(data), error);
+                 }];
 }
 - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -57486,13 +61756,22 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params
               completionHandler:(void (^)(MTRDoorLockClusterSetCredentialResponseParams * _Nullable data,
                                     NSError * _Nullable error))completionHandler
 {
-    [self setCredentialWithParams:params completion:completionHandler];
+    [self setCredentialWithParams:params
+                       completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusParams *)params
                     completionHandler:(void (^)(MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable data,
                                           NSError * _Nullable error))completionHandler
 {
-    [self getCredentialStatusWithParams:params completion:completionHandler];
+    [self getCredentialStatusWithParams:params
+                             completion:^(
+                                 MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable data, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(static_cast(data), error);
+                             }];
 }
 - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)params
                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -57503,7 +61782,10 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par
 - (void)readAttributeLockStateWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLockStateWithCompletion:completionHandler];
+    [self readAttributeLockStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLockStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57520,7 +61802,10 @@ - (void)subscribeAttributeLockStateWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeLockStateWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -57530,13 +61815,19 @@ + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeLockStateWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeLockTypeWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLockTypeWithCompletion:completionHandler];
+    [self readAttributeLockTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLockTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57553,7 +61844,10 @@ - (void)subscribeAttributeLockTypeWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeLockTypeWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -57563,13 +61857,19 @@ + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeLockTypeWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeActuatorEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActuatorEnabledWithCompletion:completionHandler];
+    [self readAttributeActuatorEnabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActuatorEnabledWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57587,7 +61887,10 @@ - (void)subscribeAttributeActuatorEnabledWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeActuatorEnabledWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -57598,13 +61901,19 @@ + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeActuatorEnabledWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDoorStateWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorStateWithCompletion:completionHandler];
+    [self readAttributeDoorStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDoorStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57621,7 +61930,10 @@ - (void)subscribeAttributeDoorStateWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeDoorStateWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -57631,13 +61943,19 @@ + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeDoorStateWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeDoorOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorOpenEventsWithCompletion:completionHandler];
+    [self readAttributeDoorOpenEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeDoorOpenEventsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -57665,7 +61983,10 @@ - (void)subscribeAttributeDoorOpenEventsWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeDoorOpenEventsWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -57676,13 +61997,19 @@ + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeDoorOpenEventsWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeDoorClosedEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorClosedEventsWithCompletion:completionHandler];
+    [self readAttributeDoorClosedEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -57710,7 +62037,10 @@ - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value
     }
     [self subscribeAttributeDoorClosedEventsWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -57721,13 +62051,19 @@ + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeDoorClosedEventsWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeOpenPeriodWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOpenPeriodWithCompletion:completionHandler];
+    [self readAttributeOpenPeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOpenPeriodWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -57754,7 +62090,10 @@ - (void)subscribeAttributeOpenPeriodWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeOpenPeriodWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -57764,13 +62103,19 @@ + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeOpenPeriodWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeNumberOfTotalUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfTotalUsersSupportedWithCompletion:completionHandler];
+    [self readAttributeNumberOfTotalUsersSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfTotalUsersSupportedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57789,7 +62134,10 @@ - (void)subscribeAttributeNumberOfTotalUsersSupportedWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeNumberOfTotalUsersSupportedWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -57800,13 +62148,19 @@ + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttribute
     [self readAttributeNumberOfTotalUsersSupportedWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeNumberOfPINUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPINUsersSupportedWithCompletion:completionHandler];
+    [self readAttributeNumberOfPINUsersSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfPINUsersSupportedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57825,7 +62179,10 @@ - (void)subscribeAttributeNumberOfPINUsersSupportedWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeNumberOfPINUsersSupportedWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -57836,13 +62193,19 @@ + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCa
     [self readAttributeNumberOfPINUsersSupportedWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfRFIDUsersSupportedWithCompletion:completionHandler];
+    [self readAttributeNumberOfRFIDUsersSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57861,7 +62224,10 @@ - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeNumberOfRFIDUsersSupportedWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -57872,13 +62238,20 @@ + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeC
     [self readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:completionHandler];
+    [self readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57897,7 +62270,11 @@ - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithMinInterva
     }
     [self subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -57909,13 +62286,22 @@ + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
     [self readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:completionHandler];
+    [self readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57934,7 +62320,11 @@ - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithMinInterva
     }
     [self subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -57946,13 +62336,21 @@ + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
     [self readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:completionHandler];
+    [self readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -57971,7 +62369,10 @@ - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithMinInterval:(NSNu
     }
     [self subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:subscribeParams
                                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                                          reportHandler:reportHandler];
+                                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              reportHandler(static_cast(value), error);
+                                                          }];
 }
 + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                 endpoint:(NSNumber *)endpoint
@@ -57979,16 +62380,23 @@ + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:attributeCacheContainer
-                                                                  endpoint:endpoint
-                                                                     queue:queue
-                                                                completion:completionHandler];
+    [self
+        readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:attributeCacheContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMaxPINCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxPINCodeLengthWithCompletion:completionHandler];
+    [self readAttributeMaxPINCodeLengthWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxPINCodeLengthWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -58006,7 +62414,10 @@ - (void)readAttributeMaxPINCodeLengthWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxPINCodeLengthWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -58017,13 +62428,19 @@ + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxPINCodeLengthWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinPINCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinPINCodeLengthWithCompletion:completionHandler];
+    [self readAttributeMinPINCodeLengthWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinPINCodeLengthWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -58041,7 +62458,10 @@ - (void)readAttributeMinPINCodeLengthWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinPINCodeLengthWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -58052,13 +62472,19 @@ + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinPINCodeLengthWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxRFIDCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxRFIDCodeLengthWithCompletion:completionHandler];
+    [self readAttributeMaxRFIDCodeLengthWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxRFIDCodeLengthWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58077,7 +62503,10 @@ - (void)subscribeAttributeMaxRFIDCodeLengthWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeMaxRFIDCodeLengthWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -58088,13 +62517,19 @@ + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeMaxRFIDCodeLengthWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeMinRFIDCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinRFIDCodeLengthWithCompletion:completionHandler];
+    [self readAttributeMinRFIDCodeLengthWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinRFIDCodeLengthWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58113,7 +62548,10 @@ - (void)subscribeAttributeMinRFIDCodeLengthWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeMinRFIDCodeLengthWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -58124,13 +62562,19 @@ + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeMinRFIDCodeLengthWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeCredentialRulesSupportWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCredentialRulesSupportWithCompletion:completionHandler];
+    [self readAttributeCredentialRulesSupportWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCredentialRulesSupportWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58149,7 +62593,10 @@ - (void)subscribeAttributeCredentialRulesSupportWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeCredentialRulesSupportWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -58160,13 +62607,19 @@ + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCache
     [self readAttributeCredentialRulesSupportWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:completionHandler];
+    [self readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58185,7 +62638,10 @@ - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithMinInterval:(NS
     }
     [self subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:subscribeParams
                                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                                            reportHandler:reportHandler];
+                                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                reportHandler(static_cast(value), error);
+                                                            }];
 }
 + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                   endpoint:(NSNumber *)endpoint
@@ -58196,13 +62652,20 @@ + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRA
     [self readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:attributeCacheContainer
                                                                     endpoint:endpoint
                                                                        queue:queue
-                                                                  completion:completionHandler];
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeLanguageWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLanguageWithCompletion:completionHandler];
+    [self readAttributeLanguageWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLanguageWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58229,7 +62692,10 @@ - (void)subscribeAttributeLanguageWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeLanguageWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -58239,13 +62705,19 @@ + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeLanguageWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeLEDSettingsWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLEDSettingsWithCompletion:completionHandler];
+    [self readAttributeLEDSettingsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLEDSettingsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58272,7 +62744,10 @@ - (void)subscribeAttributeLEDSettingsWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeLEDSettingsWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -58283,13 +62758,19 @@ + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeLEDSettingsWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeAutoRelockTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAutoRelockTimeWithCompletion:completionHandler];
+    [self readAttributeAutoRelockTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeAutoRelockTimeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58317,7 +62798,10 @@ - (void)subscribeAttributeAutoRelockTimeWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeAutoRelockTimeWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -58328,13 +62812,19 @@ + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeAutoRelockTimeWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeSoundVolumeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoundVolumeWithCompletion:completionHandler];
+    [self readAttributeSoundVolumeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSoundVolumeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58361,7 +62851,10 @@ - (void)subscribeAttributeSoundVolumeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeSoundVolumeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -58372,13 +62865,19 @@ + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeSoundVolumeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeOperatingModeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperatingModeWithCompletion:completionHandler];
+    [self readAttributeOperatingModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOperatingModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58406,7 +62905,10 @@ - (void)subscribeAttributeOperatingModeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeOperatingModeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -58417,13 +62919,19 @@ + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOperatingModeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeSupportedOperatingModesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedOperatingModesWithCompletion:completionHandler];
+    [self readAttributeSupportedOperatingModesWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSupportedOperatingModesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58442,7 +62950,10 @@ - (void)subscribeAttributeSupportedOperatingModesWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeSupportedOperatingModesWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -58453,13 +62964,19 @@ + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCach
     [self readAttributeSupportedOperatingModesWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeDefaultConfigurationRegisterWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultConfigurationRegisterWithCompletion:completionHandler];
+    [self readAttributeDefaultConfigurationRegisterWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDefaultConfigurationRegisterWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58478,7 +62995,10 @@ - (void)subscribeAttributeDefaultConfigurationRegisterWithMinInterval:(NSNumber
     }
     [self subscribeAttributeDefaultConfigurationRegisterWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -58489,13 +63009,19 @@ + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttribut
     [self readAttributeDefaultConfigurationRegisterWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeEnableLocalProgrammingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableLocalProgrammingWithCompletion:completionHandler];
+    [self readAttributeEnableLocalProgrammingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnableLocalProgrammingWithValue:(NSNumber * _Nonnull)value
                                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -58525,7 +63051,10 @@ - (void)subscribeAttributeEnableLocalProgrammingWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeEnableLocalProgrammingWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -58536,13 +63065,19 @@ + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCache
     [self readAttributeEnableLocalProgrammingWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeEnableOneTouchLockingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableOneTouchLockingWithCompletion:completionHandler];
+    [self readAttributeEnableOneTouchLockingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnableOneTouchLockingWithValue:(NSNumber * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -58572,7 +63107,10 @@ - (void)subscribeAttributeEnableOneTouchLockingWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeEnableOneTouchLockingWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -58583,13 +63121,19 @@ + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeEnableOneTouchLockingWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeEnableInsideStatusLEDWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableInsideStatusLEDWithCompletion:completionHandler];
+    [self readAttributeEnableInsideStatusLEDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSNumber * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -58619,7 +63163,10 @@ - (void)subscribeAttributeEnableInsideStatusLEDWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeEnableInsideStatusLEDWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -58630,13 +63177,19 @@ + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeEnableInsideStatusLEDWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeEnablePrivacyModeButtonWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnablePrivacyModeButtonWithCompletion:completionHandler];
+    [self readAttributeEnablePrivacyModeButtonWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSNumber * _Nonnull)value
                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -58666,7 +63219,10 @@ - (void)subscribeAttributeEnablePrivacyModeButtonWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeEnablePrivacyModeButtonWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -58677,13 +63233,19 @@ + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCach
     [self readAttributeEnablePrivacyModeButtonWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeLocalProgrammingFeaturesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalProgrammingFeaturesWithCompletion:completionHandler];
+    [self readAttributeLocalProgrammingFeaturesWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSNumber * _Nonnull)value
                                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -58713,7 +63275,10 @@ - (void)subscribeAttributeLocalProgrammingFeaturesWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeLocalProgrammingFeaturesWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -58724,13 +63289,19 @@ + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCac
     [self readAttributeLocalProgrammingFeaturesWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeWrongCodeEntryLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWrongCodeEntryLimitWithCompletion:completionHandler];
+    [self readAttributeWrongCodeEntryLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -58760,7 +63331,10 @@ - (void)subscribeAttributeWrongCodeEntryLimitWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeWrongCodeEntryLimitWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -58771,13 +63345,19 @@ + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeWrongCodeEntryLimitWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeUserCodeTemporaryDisableTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUserCodeTemporaryDisableTimeWithCompletion:completionHandler];
+    [self readAttributeUserCodeTemporaryDisableTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSNumber * _Nonnull)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -58807,7 +63387,10 @@ - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithMinInterval:(NSNumber
     }
     [self subscribeAttributeUserCodeTemporaryDisableTimeWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -58818,13 +63401,19 @@ + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttribut
     [self readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeSendPINOverTheAirWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSendPINOverTheAirWithCompletion:completionHandler];
+    [self readAttributeSendPINOverTheAirWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSendPINOverTheAirWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -58853,7 +63442,10 @@ - (void)subscribeAttributeSendPINOverTheAirWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeSendPINOverTheAirWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -58864,13 +63456,19 @@ + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeSendPINOverTheAirWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRequirePINforRemoteOperationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRequirePINforRemoteOperationWithCompletion:completionHandler];
+    [self readAttributeRequirePINforRemoteOperationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSNumber * _Nonnull)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -58900,7 +63498,10 @@ - (void)subscribeAttributeRequirePINforRemoteOperationWithMinInterval:(NSNumber
     }
     [self subscribeAttributeRequirePINforRemoteOperationWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -58911,13 +63512,19 @@ + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttribut
     [self readAttributeRequirePINforRemoteOperationWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeExpiringUserTimeoutWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExpiringUserTimeoutWithCompletion:completionHandler];
+    [self readAttributeExpiringUserTimeoutWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeExpiringUserTimeoutWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -58947,7 +63554,10 @@ - (void)subscribeAttributeExpiringUserTimeoutWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeExpiringUserTimeoutWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -58958,13 +63568,19 @@ + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeExpiringUserTimeoutWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -58983,7 +63599,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -58994,13 +63613,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -59019,7 +63644,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -59030,13 +63658,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -59053,7 +63687,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -59064,13 +63701,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -59087,7 +63730,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -59097,13 +63743,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -59121,7 +63773,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -59132,7 +63787,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -61349,7 +66007,7 @@ - (void)upOrOpenWithParams:(MTRWindowCoveringClusterUpOrOpenParams * _Nullable)p
 }
 - (void)upOrOpenWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self upOrOpenWithParams:nil completion:completionHandler];
+    [self upOrOpenWithParams:nil completionHandler:completionHandler];
 }
 - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Nullable)params
             completionHandler:(MTRStatusCompletion)completionHandler
@@ -61358,7 +66016,7 @@ - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Null
 }
 - (void)downOrCloseWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self downOrCloseWithParams:nil completion:completionHandler];
+    [self downOrCloseWithParams:nil completionHandler:completionHandler];
 }
 - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullable)params
            completionHandler:(MTRStatusCompletion)completionHandler
@@ -61367,7 +66025,7 @@ - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullab
 }
 - (void)stopMotionWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self stopMotionWithParams:nil completion:completionHandler];
+    [self stopMotionWithParams:nil completionHandler:completionHandler];
 }
 - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)params
               completionHandler:(MTRStatusCompletion)completionHandler
@@ -61392,7 +66050,10 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage
 
 - (void)readAttributeTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTypeWithCompletion:completionHandler];
+    [self readAttributeTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61409,20 +66070,32 @@ - (void)subscribeAttributeTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeTypeWithParams:subscribeParams
                    subscriptionEstablished:subscriptionEstablishedHandler
-                             reportHandler:reportHandler];
+                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 reportHandler(static_cast(value), error);
+                             }];
 }
 + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                    endpoint:(NSNumber *)endpoint
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTypeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeTypeWithAttributeCache:attributeCacheContainer
+                                     endpoint:endpoint
+                                        queue:queue
+                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(value), error);
+                                   }];
 }
 
 - (void)readAttributePhysicalClosedLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalClosedLimitLiftWithCompletion:completionHandler];
+    [self readAttributePhysicalClosedLimitLiftWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePhysicalClosedLimitLiftWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61441,7 +66114,10 @@ - (void)subscribeAttributePhysicalClosedLimitLiftWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributePhysicalClosedLimitLiftWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -61452,13 +66128,19 @@ + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCach
     [self readAttributePhysicalClosedLimitLiftWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributePhysicalClosedLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalClosedLimitTiltWithCompletion:completionHandler];
+    [self readAttributePhysicalClosedLimitTiltWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePhysicalClosedLimitTiltWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61477,7 +66159,10 @@ - (void)subscribeAttributePhysicalClosedLimitTiltWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributePhysicalClosedLimitTiltWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -61488,13 +66173,19 @@ + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCach
     [self readAttributePhysicalClosedLimitTiltWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeCurrentPositionLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionLiftWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionLiftWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61513,7 +66204,10 @@ - (void)subscribeAttributeCurrentPositionLiftWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeCurrentPositionLiftWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -61524,13 +66218,19 @@ + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeCurrentPositionLiftWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeCurrentPositionTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionTiltWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionTiltWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61549,7 +66249,10 @@ - (void)subscribeAttributeCurrentPositionTiltWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeCurrentPositionTiltWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -61560,13 +66263,19 @@ + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeCurrentPositionTiltWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNumberOfActuationsLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfActuationsLiftWithCompletion:completionHandler];
+    [self readAttributeNumberOfActuationsLiftWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfActuationsLiftWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61585,7 +66294,10 @@ - (void)subscribeAttributeNumberOfActuationsLiftWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeNumberOfActuationsLiftWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -61596,13 +66308,19 @@ + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCache
     [self readAttributeNumberOfActuationsLiftWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNumberOfActuationsTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfActuationsTiltWithCompletion:completionHandler];
+    [self readAttributeNumberOfActuationsTiltWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfActuationsTiltWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61621,7 +66339,10 @@ - (void)subscribeAttributeNumberOfActuationsTiltWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeNumberOfActuationsTiltWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -61632,13 +66353,19 @@ + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCache
     [self readAttributeNumberOfActuationsTiltWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeConfigStatusWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeConfigStatusWithCompletion:completionHandler];
+    [self readAttributeConfigStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeConfigStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61655,7 +66382,10 @@ - (void)subscribeAttributeConfigStatusWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeConfigStatusWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -61666,13 +66396,19 @@ + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeConfigStatusWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeCurrentPositionLiftPercentageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftPercentageWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionLiftPercentageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionLiftPercentageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61691,7 +66427,10 @@ - (void)subscribeAttributeCurrentPositionLiftPercentageWithMinInterval:(NSNumber
     }
     [self subscribeAttributeCurrentPositionLiftPercentageWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -61702,13 +66441,19 @@ + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttribu
     [self readAttributeCurrentPositionLiftPercentageWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeCurrentPositionTiltPercentageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltPercentageWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionTiltPercentageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionTiltPercentageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61727,7 +66472,10 @@ - (void)subscribeAttributeCurrentPositionTiltPercentageWithMinInterval:(NSNumber
     }
     [self subscribeAttributeCurrentPositionTiltPercentageWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -61738,13 +66486,19 @@ + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttribu
     [self readAttributeCurrentPositionTiltPercentageWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeOperationalStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationalStatusWithCompletion:completionHandler];
+    [self readAttributeOperationalStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOperationalStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61763,7 +66517,10 @@ - (void)subscribeAttributeOperationalStatusWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeOperationalStatusWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -61774,13 +66531,19 @@ + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeOperationalStatusWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeTargetPositionLiftPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetPositionLiftPercent100thsWithCompletion:completionHandler];
+    [self readAttributeTargetPositionLiftPercent100thsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTargetPositionLiftPercent100thsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61799,7 +66562,10 @@ - (void)subscribeAttributeTargetPositionLiftPercent100thsWithMinInterval:(NSNumb
     }
     [self subscribeAttributeTargetPositionLiftPercent100thsWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -61810,13 +66576,19 @@ + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttri
     [self readAttributeTargetPositionLiftPercent100thsWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeTargetPositionTiltPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetPositionTiltPercent100thsWithCompletion:completionHandler];
+    [self readAttributeTargetPositionTiltPercent100thsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTargetPositionTiltPercent100thsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61835,7 +66607,10 @@ - (void)subscribeAttributeTargetPositionTiltPercent100thsWithMinInterval:(NSNumb
     }
     [self subscribeAttributeTargetPositionTiltPercent100thsWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -61846,13 +66621,19 @@ + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttri
     [self readAttributeTargetPositionTiltPercent100thsWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeEndProductTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEndProductTypeWithCompletion:completionHandler];
+    [self readAttributeEndProductTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEndProductTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61870,7 +66651,10 @@ - (void)subscribeAttributeEndProductTypeWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeEndProductTypeWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -61881,13 +66665,19 @@ + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeEndProductTypeWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftPercent100thsWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionLiftPercent100thsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                               maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61906,7 +66696,10 @@ - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithMinInterval:(NSNum
     }
     [self subscribeAttributeCurrentPositionLiftPercent100thsWithParams:subscribeParams
                                                subscriptionEstablished:subscriptionEstablishedHandler
-                                                         reportHandler:reportHandler];
+                                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             reportHandler(static_cast(value), error);
+                                                         }];
 }
 + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                endpoint:(NSNumber *)endpoint
@@ -61917,13 +66710,19 @@ + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttr
     [self readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:attributeCacheContainer
                                                                  endpoint:endpoint
                                                                     queue:queue
-                                                               completion:completionHandler];
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltPercent100thsWithCompletion:completionHandler];
+    [self readAttributeCurrentPositionTiltPercent100thsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                               maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61942,7 +66741,10 @@ - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithMinInterval:(NSNum
     }
     [self subscribeAttributeCurrentPositionTiltPercent100thsWithParams:subscribeParams
                                                subscriptionEstablished:subscriptionEstablishedHandler
-                                                         reportHandler:reportHandler];
+                                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             reportHandler(static_cast(value), error);
+                                                         }];
 }
 + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                endpoint:(NSNumber *)endpoint
@@ -61953,13 +66755,19 @@ + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttr
     [self readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:attributeCacheContainer
                                                                  endpoint:endpoint
                                                                     queue:queue
-                                                               completion:completionHandler];
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeInstalledOpenLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledOpenLimitLiftWithCompletion:completionHandler];
+    [self readAttributeInstalledOpenLimitLiftWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstalledOpenLimitLiftWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -61978,7 +66786,10 @@ - (void)subscribeAttributeInstalledOpenLimitLiftWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeInstalledOpenLimitLiftWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -61989,13 +66800,19 @@ + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCache
     [self readAttributeInstalledOpenLimitLiftWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeInstalledClosedLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledClosedLimitLiftWithCompletion:completionHandler];
+    [self readAttributeInstalledClosedLimitLiftWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstalledClosedLimitLiftWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62014,7 +66831,10 @@ - (void)subscribeAttributeInstalledClosedLimitLiftWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeInstalledClosedLimitLiftWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -62025,13 +66845,19 @@ + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCac
     [self readAttributeInstalledClosedLimitLiftWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeInstalledOpenLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledOpenLimitTiltWithCompletion:completionHandler];
+    [self readAttributeInstalledOpenLimitTiltWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstalledOpenLimitTiltWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62050,7 +66876,10 @@ - (void)subscribeAttributeInstalledOpenLimitTiltWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeInstalledOpenLimitTiltWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -62061,13 +66890,19 @@ + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCache
     [self readAttributeInstalledOpenLimitTiltWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeInstalledClosedLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledClosedLimitTiltWithCompletion:completionHandler];
+    [self readAttributeInstalledClosedLimitTiltWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstalledClosedLimitTiltWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62086,7 +66921,10 @@ - (void)subscribeAttributeInstalledClosedLimitTiltWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeInstalledClosedLimitTiltWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -62097,12 +66935,18 @@ + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCac
     [self readAttributeInstalledClosedLimitTiltWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeModeWithCompletion:completionHandler];
+    [self readAttributeModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -62129,20 +66973,32 @@ - (void)subscribeAttributeModeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeModeWithParams:subscribeParams
                    subscriptionEstablished:subscriptionEstablishedHandler
-                             reportHandler:reportHandler];
+                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 reportHandler(static_cast(value), error);
+                             }];
 }
 + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                    endpoint:(NSNumber *)endpoint
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeModeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeModeWithAttributeCache:attributeCacheContainer
+                                     endpoint:endpoint
+                                        queue:queue
+                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(value), error);
+                                   }];
 }
 
 - (void)readAttributeSafetyStatusWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSafetyStatusWithCompletion:completionHandler];
+    [self readAttributeSafetyStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSafetyStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62159,7 +67015,10 @@ - (void)subscribeAttributeSafetyStatusWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSafetyStatusWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -62170,13 +67029,19 @@ + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSafetyStatusWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62195,7 +67060,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -62206,13 +67074,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62231,7 +67105,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -62242,13 +67119,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62265,7 +67148,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -62276,13 +67162,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62299,7 +67191,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -62309,13 +67204,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -62333,7 +67234,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -62344,7 +67248,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -63734,13 +68641,16 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop
 }
 - (void)barrierControlStopWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self barrierControlStopWithParams:nil completion:completionHandler];
+    [self barrierControlStopWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeBarrierMovingStateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierMovingStateWithCompletion:completionHandler];
+    [self readAttributeBarrierMovingStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBarrierMovingStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -63759,7 +68669,10 @@ - (void)subscribeAttributeBarrierMovingStateWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeBarrierMovingStateWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -63770,13 +68683,19 @@ + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeBarrierMovingStateWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBarrierSafetyStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierSafetyStatusWithCompletion:completionHandler];
+    [self readAttributeBarrierSafetyStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBarrierSafetyStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -63795,7 +68714,10 @@ - (void)subscribeAttributeBarrierSafetyStatusWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeBarrierSafetyStatusWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -63806,13 +68728,19 @@ + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeBarrierSafetyStatusWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBarrierCapabilitiesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCapabilitiesWithCompletion:completionHandler];
+    [self readAttributeBarrierCapabilitiesWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBarrierCapabilitiesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -63831,7 +68759,10 @@ - (void)subscribeAttributeBarrierCapabilitiesWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeBarrierCapabilitiesWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -63842,13 +68773,19 @@ + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeBarrierCapabilitiesWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBarrierOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierOpenEventsWithCompletion:completionHandler];
+    [self readAttributeBarrierOpenEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierOpenEventsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -63877,7 +68814,10 @@ - (void)subscribeAttributeBarrierOpenEventsWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeBarrierOpenEventsWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -63888,13 +68828,19 @@ + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeBarrierOpenEventsWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBarrierCloseEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCloseEventsWithCompletion:completionHandler];
+    [self readAttributeBarrierCloseEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierCloseEventsWithValue:(NSNumber * _Nonnull)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -63924,7 +68870,10 @@ - (void)subscribeAttributeBarrierCloseEventsWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeBarrierCloseEventsWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -63935,13 +68884,19 @@ + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeBarrierCloseEventsWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBarrierCommandOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCommandOpenEventsWithCompletion:completionHandler];
+    [self readAttributeBarrierCommandOpenEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSNumber * _Nonnull)value
                                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -63971,7 +68926,10 @@ - (void)subscribeAttributeBarrierCommandOpenEventsWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeBarrierCommandOpenEventsWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -63982,13 +68940,19 @@ + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCac
     [self readAttributeBarrierCommandOpenEventsWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeBarrierCommandCloseEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCommandCloseEventsWithCompletion:completionHandler];
+    [self readAttributeBarrierCommandCloseEventsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSNumber * _Nonnull)value
                                        completionHandler:(MTRStatusCompletion)completionHandler
@@ -64018,7 +68982,10 @@ - (void)subscribeAttributeBarrierCommandCloseEventsWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeBarrierCommandCloseEventsWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -64029,13 +68996,19 @@ + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCa
     [self readAttributeBarrierCommandCloseEventsWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeBarrierOpenPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierOpenPeriodWithCompletion:completionHandler];
+    [self readAttributeBarrierOpenPeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierOpenPeriodWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -64064,7 +69037,10 @@ - (void)subscribeAttributeBarrierOpenPeriodWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeBarrierOpenPeriodWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -64075,13 +69051,19 @@ + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeBarrierOpenPeriodWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBarrierClosePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierClosePeriodWithCompletion:completionHandler];
+    [self readAttributeBarrierClosePeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBarrierClosePeriodWithValue:(NSNumber * _Nonnull)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -64111,7 +69093,10 @@ - (void)subscribeAttributeBarrierClosePeriodWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeBarrierClosePeriodWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -64122,13 +69107,19 @@ + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeBarrierClosePeriodWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBarrierPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierPositionWithCompletion:completionHandler];
+    [self readAttributeBarrierPositionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBarrierPositionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64146,7 +69137,10 @@ - (void)subscribeAttributeBarrierPositionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeBarrierPositionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -64157,13 +69151,19 @@ + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeBarrierPositionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64182,7 +69182,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -64193,13 +69196,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64218,7 +69227,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -64229,13 +69241,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64252,7 +69270,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -64263,13 +69284,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64286,7 +69313,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -64296,13 +69326,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -64320,7 +69356,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -64331,7 +69370,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -66512,7 +71554,10 @@ @implementation MTRBaseClusterPumpConfigurationAndControl (Deprecated)
 - (void)readAttributeMaxPressureWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxPressureWithCompletion:completionHandler];
+    [self readAttributeMaxPressureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxPressureWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66529,7 +71574,10 @@ - (void)subscribeAttributeMaxPressureWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeMaxPressureWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -66540,13 +71588,19 @@ + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeMaxPressureWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeMaxSpeedWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxSpeedWithCompletion:completionHandler];
+    [self readAttributeMaxSpeedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66563,7 +71617,10 @@ - (void)subscribeAttributeMaxSpeedWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeMaxSpeedWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -66573,12 +71630,18 @@ + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeMaxSpeedWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeMaxFlowWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxFlowWithCompletion:completionHandler];
+    [self readAttributeMaxFlowWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxFlowWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66595,7 +71658,10 @@ - (void)subscribeAttributeMaxFlowWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeMaxFlowWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -66605,13 +71671,19 @@ + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeMaxFlowWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeMinConstPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstPressureWithCompletion:completionHandler];
+    [self readAttributeMinConstPressureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinConstPressureWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -66629,7 +71701,10 @@ - (void)readAttributeMinConstPressureWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinConstPressureWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -66640,13 +71715,19 @@ + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinConstPressureWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxConstPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstPressureWithCompletion:completionHandler];
+    [self readAttributeMaxConstPressureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxConstPressureWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -66664,7 +71745,10 @@ - (void)readAttributeMaxConstPressureWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxConstPressureWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -66675,13 +71759,19 @@ + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxConstPressureWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinCompPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinCompPressureWithCompletion:completionHandler];
+    [self readAttributeMinCompPressureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinCompPressureWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66699,7 +71789,10 @@ - (void)subscribeAttributeMinCompPressureWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeMinCompPressureWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -66710,13 +71803,19 @@ + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeMinCompPressureWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMaxCompPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxCompPressureWithCompletion:completionHandler];
+    [self readAttributeMaxCompPressureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxCompPressureWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66734,7 +71833,10 @@ - (void)subscribeAttributeMaxCompPressureWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeMaxCompPressureWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -66745,13 +71847,19 @@ + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeMaxCompPressureWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMinConstSpeedWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstSpeedWithCompletion:completionHandler];
+    [self readAttributeMinConstSpeedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinConstSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66769,7 +71877,10 @@ - (void)subscribeAttributeMinConstSpeedWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMinConstSpeedWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -66780,13 +71891,19 @@ + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMinConstSpeedWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMaxConstSpeedWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstSpeedWithCompletion:completionHandler];
+    [self readAttributeMaxConstSpeedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxConstSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66804,7 +71921,10 @@ - (void)subscribeAttributeMaxConstSpeedWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMaxConstSpeedWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -66815,13 +71935,19 @@ + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMaxConstSpeedWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinConstFlowWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstFlowWithCompletion:completionHandler];
+    [self readAttributeMinConstFlowWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinConstFlowWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66838,7 +71964,10 @@ - (void)subscribeAttributeMinConstFlowWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMinConstFlowWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -66849,13 +71978,19 @@ + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMinConstFlowWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeMaxConstFlowWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstFlowWithCompletion:completionHandler];
+    [self readAttributeMaxConstFlowWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxConstFlowWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66872,7 +72007,10 @@ - (void)subscribeAttributeMaxConstFlowWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMaxConstFlowWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -66883,13 +72021,19 @@ + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMaxConstFlowWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeMinConstTempWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstTempWithCompletion:completionHandler];
+    [self readAttributeMinConstTempWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinConstTempWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66906,7 +72050,10 @@ - (void)subscribeAttributeMinConstTempWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMinConstTempWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -66917,13 +72064,19 @@ + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMinConstTempWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeMaxConstTempWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstTempWithCompletion:completionHandler];
+    [self readAttributeMaxConstTempWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxConstTempWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66940,7 +72093,10 @@ - (void)subscribeAttributeMaxConstTempWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeMaxConstTempWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -66951,13 +72107,19 @@ + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMaxConstTempWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePumpStatusWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePumpStatusWithCompletion:completionHandler];
+    [self readAttributePumpStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePumpStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -66974,7 +72136,10 @@ - (void)subscribeAttributePumpStatusWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributePumpStatusWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -66984,13 +72149,19 @@ + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributePumpStatusWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeEffectiveOperationModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEffectiveOperationModeWithCompletion:completionHandler];
+    [self readAttributeEffectiveOperationModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEffectiveOperationModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67009,7 +72180,10 @@ - (void)subscribeAttributeEffectiveOperationModeWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeEffectiveOperationModeWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -67020,13 +72194,19 @@ + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCache
     [self readAttributeEffectiveOperationModeWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeEffectiveControlModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEffectiveControlModeWithCompletion:completionHandler];
+    [self readAttributeEffectiveControlModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEffectiveControlModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67045,7 +72225,10 @@ - (void)subscribeAttributeEffectiveControlModeWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeEffectiveControlModeWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -67056,13 +72239,19 @@ + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeEffectiveControlModeWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeCapacityWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCapacityWithCompletion:completionHandler];
+    [self readAttributeCapacityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCapacityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67079,7 +72268,10 @@ - (void)subscribeAttributeCapacityWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeCapacityWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -67089,12 +72281,18 @@ + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeCapacityWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeSpeedWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedWithCompletion:completionHandler];
+    [self readAttributeSpeedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67111,20 +72309,32 @@ - (void)subscribeAttributeSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeSpeedWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeSpeedWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeLifetimeRunningHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLifetimeRunningHoursWithCompletion:completionHandler];
+    [self readAttributeLifetimeRunningHoursWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLifetimeRunningHoursWithValue:(NSNumber * _Nullable)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -67154,7 +72364,10 @@ - (void)subscribeAttributeLifetimeRunningHoursWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeLifetimeRunningHoursWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -67165,12 +72378,18 @@ + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeLifetimeRunningHoursWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerWithCompletion:completionHandler];
+    [self readAttributePowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67187,20 +72406,32 @@ - (void)subscribeAttributePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributePowerWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributePowerWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeLifetimeEnergyConsumedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLifetimeEnergyConsumedWithCompletion:completionHandler];
+    [self readAttributeLifetimeEnergyConsumedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSNumber * _Nullable)value
                                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -67230,7 +72461,10 @@ - (void)subscribeAttributeLifetimeEnergyConsumedWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeLifetimeEnergyConsumedWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -67241,13 +72475,19 @@ + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCache
     [self readAttributeLifetimeEnergyConsumedWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeOperationModeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationModeWithCompletion:completionHandler];
+    [self readAttributeOperationModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOperationModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -67275,7 +72515,10 @@ - (void)subscribeAttributeOperationModeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeOperationModeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -67286,13 +72529,19 @@ + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeOperationModeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeControlModeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeControlModeWithCompletion:completionHandler];
+    [self readAttributeControlModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeControlModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -67319,7 +72568,10 @@ - (void)subscribeAttributeControlModeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeControlModeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -67330,13 +72582,19 @@ + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeControlModeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67355,7 +72613,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -67366,13 +72627,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67391,7 +72658,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -67402,13 +72672,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67425,7 +72701,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -67436,13 +72715,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67459,7 +72744,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -67469,13 +72757,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -67493,7 +72787,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -67504,7 +72801,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -72546,7 +77846,12 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams
                   completionHandler:(void (^)(MTRThermostatClusterGetWeeklyScheduleResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self getWeeklyScheduleWithParams:params completion:completionHandler];
+    [self getWeeklyScheduleWithParams:params
+                           completion:^(
+                               MTRThermostatClusterGetWeeklyScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                               // Cast is safe because subclass does not add any selectors.
+                               completionHandler(static_cast(data), error);
+                           }];
 }
 - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklyScheduleParams * _Nullable)params
                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -72555,13 +77860,16 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa
 }
 - (void)clearWeeklyScheduleWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self clearWeeklyScheduleWithParams:nil completion:completionHandler];
+    [self clearWeeklyScheduleWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeLocalTemperatureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalTemperatureWithCompletion:completionHandler];
+    [self readAttributeLocalTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeLocalTemperatureWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -72579,7 +77887,10 @@ - (void)readAttributeLocalTemperatureWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeLocalTemperatureWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -72590,13 +77901,19 @@ + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeLocalTemperatureWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeOutdoorTemperatureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutdoorTemperatureWithCompletion:completionHandler];
+    [self readAttributeOutdoorTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOutdoorTemperatureWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72615,7 +77932,10 @@ - (void)subscribeAttributeOutdoorTemperatureWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeOutdoorTemperatureWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -72626,13 +77946,19 @@ + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeOutdoorTemperatureWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeOccupancyWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancyWithCompletion:completionHandler];
+    [self readAttributeOccupancyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupancyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72649,7 +77975,10 @@ - (void)subscribeAttributeOccupancyWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeOccupancyWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -72659,13 +77988,19 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeOccupancyWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeAbsMinHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMinHeatSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeAbsMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAbsMinHeatSetpointLimitWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72684,7 +78019,10 @@ - (void)subscribeAttributeAbsMinHeatSetpointLimitWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeAbsMinHeatSetpointLimitWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -72695,13 +78033,19 @@ + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
     [self readAttributeAbsMinHeatSetpointLimitWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMaxHeatSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeAbsMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72720,7 +78064,10 @@ - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeAbsMaxHeatSetpointLimitWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -72731,13 +78078,19 @@ + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
     [self readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAbsMinCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMinCoolSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeAbsMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAbsMinCoolSetpointLimitWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72756,7 +78109,10 @@ - (void)subscribeAttributeAbsMinCoolSetpointLimitWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeAbsMinCoolSetpointLimitWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -72767,13 +78123,19 @@ + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
     [self readAttributeAbsMinCoolSetpointLimitWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMaxCoolSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeAbsMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72792,7 +78154,10 @@ - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeAbsMaxCoolSetpointLimitWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -72803,13 +78168,19 @@ + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
     [self readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributePICoolingDemandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributePICoolingDemandWithCompletion:completionHandler];
+    [self readAttributePICoolingDemandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePICoolingDemandWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72827,7 +78198,10 @@ - (void)subscribeAttributePICoolingDemandWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributePICoolingDemandWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -72838,13 +78212,19 @@ + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributePICoolingDemandWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePIHeatingDemandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributePIHeatingDemandWithCompletion:completionHandler];
+    [self readAttributePIHeatingDemandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePIHeatingDemandWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -72862,7 +78242,10 @@ - (void)subscribeAttributePIHeatingDemandWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributePIHeatingDemandWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -72873,13 +78256,19 @@ + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributePIHeatingDemandWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeHVACSystemTypeConfigurationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHVACSystemTypeConfigurationWithCompletion:completionHandler];
+    [self readAttributeHVACSystemTypeConfigurationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull)value
                                          completionHandler:(MTRStatusCompletion)completionHandler
@@ -72909,7 +78298,10 @@ - (void)subscribeAttributeHVACSystemTypeConfigurationWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeHVACSystemTypeConfigurationWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -72920,13 +78312,19 @@ + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttribute
     [self readAttributeHVACSystemTypeConfigurationWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeLocalTemperatureCalibrationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalTemperatureCalibrationWithCompletion:completionHandler];
+    [self readAttributeLocalTemperatureCalibrationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSNumber * _Nonnull)value
                                          completionHandler:(MTRStatusCompletion)completionHandler
@@ -72956,7 +78354,10 @@ - (void)subscribeAttributeLocalTemperatureCalibrationWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeLocalTemperatureCalibrationWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -72967,13 +78368,19 @@ + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttribute
     [self readAttributeLocalTemperatureCalibrationWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeOccupiedCoolingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedCoolingSetpointWithCompletion:completionHandler];
+    [self readAttributeOccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value
                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -73003,7 +78410,10 @@ - (void)subscribeAttributeOccupiedCoolingSetpointWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeOccupiedCoolingSetpointWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -73014,13 +78424,19 @@ + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCach
     [self readAttributeOccupiedCoolingSetpointWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeOccupiedHeatingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedHeatingSetpointWithCompletion:completionHandler];
+    [self readAttributeOccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value
                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -73050,7 +78466,10 @@ - (void)subscribeAttributeOccupiedHeatingSetpointWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeOccupiedHeatingSetpointWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -73061,13 +78480,19 @@ + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCach
     [self readAttributeOccupiedHeatingSetpointWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeUnoccupiedCoolingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedCoolingSetpointWithCompletion:completionHandler];
+    [self readAttributeUnoccupiedCoolingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value
                                        completionHandler:(MTRStatusCompletion)completionHandler
@@ -73097,7 +78522,10 @@ - (void)subscribeAttributeUnoccupiedCoolingSetpointWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeUnoccupiedCoolingSetpointWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -73108,13 +78536,19 @@ + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCa
     [self readAttributeUnoccupiedCoolingSetpointWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeUnoccupiedHeatingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedHeatingSetpointWithCompletion:completionHandler];
+    [self readAttributeUnoccupiedHeatingSetpointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value
                                        completionHandler:(MTRStatusCompletion)completionHandler
@@ -73144,7 +78578,10 @@ - (void)subscribeAttributeUnoccupiedHeatingSetpointWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeUnoccupiedHeatingSetpointWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -73155,13 +78592,19 @@ + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCa
     [self readAttributeUnoccupiedHeatingSetpointWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeMinHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinHeatSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeMinHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -73191,7 +78634,10 @@ - (void)subscribeAttributeMinHeatSetpointLimitWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeMinHeatSetpointLimitWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73202,13 +78648,19 @@ + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeMinHeatSetpointLimitWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeMaxHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxHeatSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeMaxHeatSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -73238,7 +78690,10 @@ - (void)subscribeAttributeMaxHeatSetpointLimitWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeMaxHeatSetpointLimitWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73249,13 +78704,19 @@ + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeMaxHeatSetpointLimitWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeMinCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinCoolSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeMinCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -73285,7 +78746,10 @@ - (void)subscribeAttributeMinCoolSetpointLimitWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeMinCoolSetpointLimitWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73296,13 +78760,19 @@ + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeMinCoolSetpointLimitWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeMaxCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxCoolSetpointLimitWithCompletion:completionHandler];
+    [self readAttributeMaxCoolSetpointLimitWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -73332,7 +78802,10 @@ - (void)subscribeAttributeMaxCoolSetpointLimitWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeMaxCoolSetpointLimitWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73343,13 +78816,19 @@ + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeMaxCoolSetpointLimitWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeMinSetpointDeadBandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinSetpointDeadBandWithCompletion:completionHandler];
+    [self readAttributeMinSetpointDeadBandWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMinSetpointDeadBandWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -73379,7 +78858,10 @@ - (void)subscribeAttributeMinSetpointDeadBandWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeMinSetpointDeadBandWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -73390,13 +78872,19 @@ + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeMinSetpointDeadBandWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRemoteSensingWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemoteSensingWithCompletion:completionHandler];
+    [self readAttributeRemoteSensingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRemoteSensingWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -73424,7 +78912,10 @@ - (void)subscribeAttributeRemoteSensingWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRemoteSensingWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -73435,13 +78926,19 @@ + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRemoteSensingWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeControlSequenceOfOperationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeControlSequenceOfOperationWithCompletion:completionHandler];
+    [self readAttributeControlSequenceOfOperationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeControlSequenceOfOperationWithValue:(NSNumber * _Nonnull)value
                                         completionHandler:(MTRStatusCompletion)completionHandler
@@ -73471,7 +78968,10 @@ - (void)subscribeAttributeControlSequenceOfOperationWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeControlSequenceOfOperationWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -73482,13 +78982,19 @@ + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeC
     [self readAttributeControlSequenceOfOperationWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeSystemModeWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSystemModeWithCompletion:completionHandler];
+    [self readAttributeSystemModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSystemModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -73515,7 +79021,10 @@ - (void)subscribeAttributeSystemModeWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeSystemModeWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -73525,13 +79034,19 @@ + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeSystemModeWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeThermostatRunningModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatRunningModeWithCompletion:completionHandler];
+    [self readAttributeThermostatRunningModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeThermostatRunningModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73550,7 +79065,10 @@ - (void)subscribeAttributeThermostatRunningModeWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeThermostatRunningModeWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -73561,13 +79079,19 @@ + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeThermostatRunningModeWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeStartOfWeekWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartOfWeekWithCompletion:completionHandler];
+    [self readAttributeStartOfWeekWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStartOfWeekWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73584,7 +79108,10 @@ - (void)subscribeAttributeStartOfWeekWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeStartOfWeekWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -73595,13 +79122,19 @@ + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeStartOfWeekWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeNumberOfWeeklyTransitionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfWeeklyTransitionsWithCompletion:completionHandler];
+    [self readAttributeNumberOfWeeklyTransitionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfWeeklyTransitionsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73620,7 +79153,10 @@ - (void)subscribeAttributeNumberOfWeeklyTransitionsWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeNumberOfWeeklyTransitionsWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -73631,13 +79167,19 @@ + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCa
     [self readAttributeNumberOfWeeklyTransitionsWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeNumberOfDailyTransitionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfDailyTransitionsWithCompletion:completionHandler];
+    [self readAttributeNumberOfDailyTransitionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfDailyTransitionsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73656,7 +79198,10 @@ - (void)subscribeAttributeNumberOfDailyTransitionsWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeNumberOfDailyTransitionsWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -73667,13 +79212,19 @@ + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCac
     [self readAttributeNumberOfDailyTransitionsWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeTemperatureSetpointHoldWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureSetpointHoldWithCompletion:completionHandler];
+    [self readAttributeTemperatureSetpointHoldWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSNumber * _Nonnull)value
                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -73703,7 +79254,10 @@ - (void)subscribeAttributeTemperatureSetpointHoldWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeTemperatureSetpointHoldWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -73714,13 +79268,19 @@ + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCach
     [self readAttributeTemperatureSetpointHoldWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeTemperatureSetpointHoldDurationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureSetpointHoldDurationWithCompletion:completionHandler];
+    [self readAttributeTemperatureSetpointHoldDurationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSNumber * _Nullable)value
                                              completionHandler:(MTRStatusCompletion)completionHandler
@@ -73750,7 +79310,10 @@ - (void)subscribeAttributeTemperatureSetpointHoldDurationWithMinInterval:(NSNumb
     }
     [self subscribeAttributeTemperatureSetpointHoldDurationWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -73761,13 +79324,19 @@ + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttri
     [self readAttributeTemperatureSetpointHoldDurationWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeThermostatProgrammingOperationModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatProgrammingOperationModeWithCompletion:completionHandler];
+    [self readAttributeThermostatProgrammingOperationModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSNumber * _Nonnull)value
                                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -73797,7 +79366,10 @@ - (void)subscribeAttributeThermostatProgrammingOperationModeWithMinInterval:(NSN
     }
     [self subscribeAttributeThermostatProgrammingOperationModeWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -73805,16 +79377,23 @@ + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatProgrammingOperationModeWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeThermostatProgrammingOperationModeWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeThermostatRunningStateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatRunningStateWithCompletion:completionHandler];
+    [self readAttributeThermostatRunningStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeThermostatRunningStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73833,7 +79412,10 @@ - (void)subscribeAttributeThermostatRunningStateWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeThermostatRunningStateWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -73844,13 +79426,19 @@ + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCache
     [self readAttributeThermostatRunningStateWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeSetpointChangeSourceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeSourceWithCompletion:completionHandler];
+    [self readAttributeSetpointChangeSourceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSetpointChangeSourceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73869,7 +79457,10 @@ - (void)subscribeAttributeSetpointChangeSourceWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeSetpointChangeSourceWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73880,13 +79471,19 @@ + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeSetpointChangeSourceWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeSetpointChangeAmountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeAmountWithCompletion:completionHandler];
+    [self readAttributeSetpointChangeAmountWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSetpointChangeAmountWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73905,7 +79502,10 @@ - (void)subscribeAttributeSetpointChangeAmountWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeSetpointChangeAmountWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -73916,13 +79516,19 @@ + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeSetpointChangeAmountWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeSetpointChangeSourceTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeSourceTimestampWithCompletion:completionHandler];
+    [self readAttributeSetpointChangeSourceTimestampWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSetpointChangeSourceTimestampWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -73941,7 +79547,10 @@ - (void)subscribeAttributeSetpointChangeSourceTimestampWithMinInterval:(NSNumber
     }
     [self subscribeAttributeSetpointChangeSourceTimestampWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -73952,13 +79561,19 @@ + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttribu
     [self readAttributeSetpointChangeSourceTimestampWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeOccupiedSetbackWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackWithCompletion:completionHandler];
+    [self readAttributeOccupiedSetbackWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOccupiedSetbackWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -73986,7 +79601,10 @@ - (void)subscribeAttributeOccupiedSetbackWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeOccupiedSetbackWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -73997,13 +79615,19 @@ + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeOccupiedSetbackWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeOccupiedSetbackMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackMinWithCompletion:completionHandler];
+    [self readAttributeOccupiedSetbackMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupiedSetbackMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74022,7 +79646,10 @@ - (void)subscribeAttributeOccupiedSetbackMinWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeOccupiedSetbackMinWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -74033,13 +79660,19 @@ + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeOccupiedSetbackMinWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeOccupiedSetbackMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackMaxWithCompletion:completionHandler];
+    [self readAttributeOccupiedSetbackMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupiedSetbackMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74058,7 +79691,10 @@ - (void)subscribeAttributeOccupiedSetbackMaxWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeOccupiedSetbackMaxWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -74069,13 +79705,19 @@ + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeOccupiedSetbackMaxWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeUnoccupiedSetbackWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackWithCompletion:completionHandler];
+    [self readAttributeUnoccupiedSetbackWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUnoccupiedSetbackWithValue:(NSNumber * _Nullable)value
                                completionHandler:(MTRStatusCompletion)completionHandler
@@ -74105,7 +79747,10 @@ - (void)subscribeAttributeUnoccupiedSetbackWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeUnoccupiedSetbackWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -74116,13 +79761,19 @@ + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeUnoccupiedSetbackWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeUnoccupiedSetbackMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackMinWithCompletion:completionHandler];
+    [self readAttributeUnoccupiedSetbackMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUnoccupiedSetbackMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74141,7 +79792,10 @@ - (void)subscribeAttributeUnoccupiedSetbackMinWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeUnoccupiedSetbackMinWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -74152,13 +79806,19 @@ + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeUnoccupiedSetbackMinWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeUnoccupiedSetbackMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackMaxWithCompletion:completionHandler];
+    [self readAttributeUnoccupiedSetbackMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeUnoccupiedSetbackMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74177,7 +79837,10 @@ - (void)subscribeAttributeUnoccupiedSetbackMaxWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeUnoccupiedSetbackMaxWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -74188,13 +79851,19 @@ + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeUnoccupiedSetbackMaxWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeEmergencyHeatDeltaWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEmergencyHeatDeltaWithCompletion:completionHandler];
+    [self readAttributeEmergencyHeatDeltaWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSNumber * _Nonnull)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -74224,7 +79893,10 @@ - (void)subscribeAttributeEmergencyHeatDeltaWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeEmergencyHeatDeltaWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -74235,12 +79907,18 @@ + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeEmergencyHeatDeltaWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeACTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACTypeWithCompletion:completionHandler];
+    [self readAttributeACTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACTypeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74267,20 +79945,32 @@ - (void)subscribeAttributeACTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeACTypeWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACTypeWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeACTypeWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeACCapacityWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCapacityWithCompletion:completionHandler];
+    [self readAttributeACCapacityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACCapacityWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74307,7 +79997,10 @@ - (void)subscribeAttributeACCapacityWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeACCapacityWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -74317,13 +80010,19 @@ + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeACCapacityWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeACRefrigerantTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACRefrigerantTypeWithCompletion:completionHandler];
+    [self readAttributeACRefrigerantTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACRefrigerantTypeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74352,7 +80051,10 @@ - (void)subscribeAttributeACRefrigerantTypeWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeACRefrigerantTypeWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -74363,13 +80065,19 @@ + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeACRefrigerantTypeWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeACCompressorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCompressorTypeWithCompletion:completionHandler];
+    [self readAttributeACCompressorTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74397,7 +80105,10 @@ - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value
     }
     [self subscribeAttributeACCompressorTypeWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -74408,13 +80119,19 @@ + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeACCompressorTypeWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeACErrorCodeWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACErrorCodeWithCompletion:completionHandler];
+    [self readAttributeACErrorCodeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACErrorCodeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74441,7 +80158,10 @@ - (void)subscribeAttributeACErrorCodeWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeACErrorCodeWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -74452,13 +80172,19 @@ + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeACErrorCodeWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeACLouverPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACLouverPositionWithCompletion:completionHandler];
+    [self readAttributeACLouverPositionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74486,7 +80212,10 @@ - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value
     }
     [self subscribeAttributeACLouverPositionWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -74497,13 +80226,19 @@ + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeACLouverPositionWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeACCoilTemperatureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCoilTemperatureWithCompletion:completionHandler];
+    [self readAttributeACCoilTemperatureWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeACCoilTemperatureWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74522,7 +80257,10 @@ - (void)subscribeAttributeACCoilTemperatureWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeACCoilTemperatureWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -74533,13 +80271,19 @@ + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeACCoilTemperatureWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeACCapacityformatWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCapacityformatWithCompletion:completionHandler];
+    [self readAttributeACCapacityformatWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -74567,7 +80311,10 @@ - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value
     }
     [self subscribeAttributeACCapacityformatWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -74578,13 +80325,19 @@ + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeACCapacityformatWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74603,7 +80356,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -74614,13 +80370,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74639,7 +80401,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -74650,13 +80415,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74673,7 +80444,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -74684,13 +80458,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74707,7 +80487,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -74717,13 +80500,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -74741,7 +80530,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -74752,7 +80544,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -76137,7 +81932,10 @@ @implementation MTRBaseClusterFanControl (Deprecated)
 
 - (void)readAttributeFanModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFanModeWithCompletion:completionHandler];
+    [self readAttributeFanModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeFanModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76164,7 +81962,10 @@ - (void)subscribeAttributeFanModeWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeFanModeWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -76174,13 +81975,19 @@ + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeFanModeWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeFanModeSequenceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFanModeSequenceWithCompletion:completionHandler];
+    [self readAttributeFanModeSequenceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeFanModeSequenceWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76208,7 +82015,10 @@ - (void)subscribeAttributeFanModeSequenceWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeFanModeSequenceWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -76219,13 +82029,19 @@ + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeFanModeSequenceWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePercentSettingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributePercentSettingWithCompletion:completionHandler];
+    [self readAttributePercentSettingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePercentSettingWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76253,7 +82069,10 @@ - (void)subscribeAttributePercentSettingWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributePercentSettingWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -76264,13 +82083,19 @@ + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributePercentSettingWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributePercentCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributePercentCurrentWithCompletion:completionHandler];
+    [self readAttributePercentCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePercentCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76288,7 +82113,10 @@ - (void)subscribeAttributePercentCurrentWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributePercentCurrentWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -76299,13 +82127,19 @@ + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributePercentCurrentWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeSpeedMaxWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedMaxWithCompletion:completionHandler];
+    [self readAttributeSpeedMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSpeedMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76322,7 +82156,10 @@ - (void)subscribeAttributeSpeedMaxWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeSpeedMaxWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -76332,13 +82169,19 @@ + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeSpeedMaxWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeSpeedSettingWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedSettingWithCompletion:completionHandler];
+    [self readAttributeSpeedSettingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSpeedSettingWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76365,7 +82208,10 @@ - (void)subscribeAttributeSpeedSettingWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSpeedSettingWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -76376,13 +82222,19 @@ + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSpeedSettingWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSpeedCurrentWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedCurrentWithCompletion:completionHandler];
+    [self readAttributeSpeedCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSpeedCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76399,7 +82251,10 @@ - (void)subscribeAttributeSpeedCurrentWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSpeedCurrentWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -76410,13 +82265,19 @@ + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSpeedCurrentWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeRockSupportWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRockSupportWithCompletion:completionHandler];
+    [self readAttributeRockSupportWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRockSupportWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76433,7 +82294,10 @@ - (void)subscribeAttributeRockSupportWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeRockSupportWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -76444,13 +82308,19 @@ + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeRockSupportWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeRockSettingWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRockSettingWithCompletion:completionHandler];
+    [self readAttributeRockSettingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRockSettingWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76477,7 +82347,10 @@ - (void)subscribeAttributeRockSettingWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeRockSettingWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -76488,13 +82361,19 @@ + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeRockSettingWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeWindSupportWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindSupportWithCompletion:completionHandler];
+    [self readAttributeWindSupportWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeWindSupportWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76511,7 +82390,10 @@ - (void)subscribeAttributeWindSupportWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeWindSupportWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -76522,13 +82404,19 @@ + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeWindSupportWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeWindSettingWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindSettingWithCompletion:completionHandler];
+    [self readAttributeWindSettingWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeWindSettingWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -76555,7 +82443,10 @@ - (void)subscribeAttributeWindSettingWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeWindSettingWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -76566,13 +82457,19 @@ + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeWindSettingWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76591,7 +82488,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -76602,13 +82502,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76627,7 +82533,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -76638,13 +82547,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76661,7 +82576,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -76672,13 +82590,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76695,7 +82619,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -76705,13 +82632,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -76729,7 +82662,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -76740,7 +82676,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -77470,7 +83409,10 @@ @implementation MTRBaseClusterThermostatUserInterfaceConfiguration (Deprecated)
 - (void)readAttributeTemperatureDisplayModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureDisplayModeWithCompletion:completionHandler];
+    [self readAttributeTemperatureDisplayModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeTemperatureDisplayModeWithValue:(NSNumber * _Nonnull)value
                                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -77500,7 +83442,10 @@ - (void)subscribeAttributeTemperatureDisplayModeWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeTemperatureDisplayModeWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -77511,13 +83456,19 @@ + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCache
     [self readAttributeTemperatureDisplayModeWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeKeypadLockoutWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeKeypadLockoutWithCompletion:completionHandler];
+    [self readAttributeKeypadLockoutWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeKeypadLockoutWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -77545,7 +83496,10 @@ - (void)subscribeAttributeKeypadLockoutWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeKeypadLockoutWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -77556,13 +83510,19 @@ + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeKeypadLockoutWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeScheduleProgrammingVisibilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScheduleProgrammingVisibilityWithCompletion:completionHandler];
+    [self readAttributeScheduleProgrammingVisibilityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSNumber * _Nonnull)value
                                            completionHandler:(MTRStatusCompletion)completionHandler
@@ -77592,7 +83552,10 @@ - (void)subscribeAttributeScheduleProgrammingVisibilityWithMinInterval:(NSNumber
     }
     [self subscribeAttributeScheduleProgrammingVisibilityWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -77603,13 +83566,19 @@ + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttribu
     [self readAttributeScheduleProgrammingVisibilityWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -77628,7 +83597,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -77639,13 +83611,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -77664,7 +83642,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -77675,13 +83656,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -77698,7 +83685,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -77709,13 +83699,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -77732,7 +83728,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -77742,13 +83741,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -77766,7 +83771,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -77777,7 +83785,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -82975,7 +88986,10 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu
 - (void)readAttributeCurrentHueWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHueWithCompletion:completionHandler];
+    [self readAttributeCurrentHueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentHueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -82992,7 +89006,10 @@ - (void)subscribeAttributeCurrentHueWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeCurrentHueWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -83002,13 +89019,19 @@ + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeCurrentHueWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeCurrentSaturationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentSaturationWithCompletion:completionHandler];
+    [self readAttributeCurrentSaturationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentSaturationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83027,7 +89050,10 @@ - (void)subscribeAttributeCurrentSaturationWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeCurrentSaturationWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83038,13 +89064,19 @@ + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeCurrentSaturationWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRemainingTimeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemainingTimeWithCompletion:completionHandler];
+    [self readAttributeRemainingTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRemainingTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83062,7 +89094,10 @@ - (void)subscribeAttributeRemainingTimeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRemainingTimeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -83073,13 +89108,19 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRemainingTimeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentXWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentXWithCompletion:completionHandler];
+    [self readAttributeCurrentXWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentXWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83096,7 +89137,10 @@ - (void)subscribeAttributeCurrentXWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeCurrentXWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -83106,13 +89150,19 @@ + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeCurrentXWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeCurrentYWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentYWithCompletion:completionHandler];
+    [self readAttributeCurrentYWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentYWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83129,7 +89179,10 @@ - (void)subscribeAttributeCurrentYWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeCurrentYWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -83139,13 +89192,19 @@ + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeCurrentYWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeDriftCompensationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDriftCompensationWithCompletion:completionHandler];
+    [self readAttributeDriftCompensationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDriftCompensationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83164,7 +89223,10 @@ - (void)subscribeAttributeDriftCompensationWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeDriftCompensationWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83175,13 +89237,19 @@ + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeDriftCompensationWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeCompensationTextWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCompensationTextWithCompletion:completionHandler];
+    [self readAttributeCompensationTextWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeCompensationTextWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -83199,7 +89267,10 @@ - (void)readAttributeCompensationTextWithCompletionHandler:(void (^)(NSString *
     }
     [self subscribeAttributeCompensationTextWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -83210,13 +89281,19 @@ + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeCompensationTextWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTemperatureMiredsWithCompletion:completionHandler];
+    [self readAttributeColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorTemperatureMiredsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83235,7 +89312,10 @@ - (void)subscribeAttributeColorTemperatureMiredsWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeColorTemperatureMiredsWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -83246,13 +89326,19 @@ + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCache
     [self readAttributeColorTemperatureMiredsWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeColorModeWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorModeWithCompletion:completionHandler];
+    [self readAttributeColorModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83269,7 +89355,10 @@ - (void)subscribeAttributeColorModeWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeColorModeWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83279,12 +89368,18 @@ + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeColorModeWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeOptionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOptionsWithCompletion:completionHandler];
+    [self readAttributeOptionsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -83311,7 +89406,10 @@ - (void)subscribeAttributeOptionsWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeOptionsWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -83321,13 +89419,19 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeOptionsWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeNumberOfPrimariesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPrimariesWithCompletion:completionHandler];
+    [self readAttributeNumberOfPrimariesWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNumberOfPrimariesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83346,7 +89450,10 @@ - (void)subscribeAttributeNumberOfPrimariesWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeNumberOfPrimariesWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83357,13 +89464,19 @@ + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeNumberOfPrimariesWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary1XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1XWithCompletion:completionHandler];
+    [self readAttributePrimary1XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary1XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83380,7 +89493,10 @@ - (void)subscribeAttributePrimary1XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary1XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83390,13 +89506,19 @@ + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary1XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary1YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1YWithCompletion:completionHandler];
+    [self readAttributePrimary1YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary1YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83413,7 +89535,10 @@ - (void)subscribeAttributePrimary1YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary1YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83423,13 +89548,19 @@ + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary1YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary1IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary1IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary1IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83448,7 +89579,10 @@ - (void)subscribeAttributePrimary1IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary1IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83459,13 +89593,19 @@ + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary1IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary2XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2XWithCompletion:completionHandler];
+    [self readAttributePrimary2XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary2XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83482,7 +89622,10 @@ - (void)subscribeAttributePrimary2XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary2XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83492,13 +89635,19 @@ + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary2XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary2YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2YWithCompletion:completionHandler];
+    [self readAttributePrimary2YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary2YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83515,7 +89664,10 @@ - (void)subscribeAttributePrimary2YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary2YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83525,13 +89677,19 @@ + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary2YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary2IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary2IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary2IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83550,7 +89708,10 @@ - (void)subscribeAttributePrimary2IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary2IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83561,13 +89722,19 @@ + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary2IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary3XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3XWithCompletion:completionHandler];
+    [self readAttributePrimary3XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary3XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83584,7 +89751,10 @@ - (void)subscribeAttributePrimary3XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary3XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83594,13 +89764,19 @@ + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary3XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary3YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3YWithCompletion:completionHandler];
+    [self readAttributePrimary3YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary3YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83617,7 +89793,10 @@ - (void)subscribeAttributePrimary3YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary3YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83627,13 +89806,19 @@ + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary3YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary3IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary3IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary3IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83652,7 +89837,10 @@ - (void)subscribeAttributePrimary3IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary3IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83663,13 +89851,19 @@ + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary3IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary4XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4XWithCompletion:completionHandler];
+    [self readAttributePrimary4XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary4XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83686,7 +89880,10 @@ - (void)subscribeAttributePrimary4XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary4XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83696,13 +89893,19 @@ + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary4XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary4YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4YWithCompletion:completionHandler];
+    [self readAttributePrimary4YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary4YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83719,7 +89922,10 @@ - (void)subscribeAttributePrimary4YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary4YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83729,13 +89935,19 @@ + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary4YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary4IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary4IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary4IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83754,7 +89966,10 @@ - (void)subscribeAttributePrimary4IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary4IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83765,13 +89980,19 @@ + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary4IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary5XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5XWithCompletion:completionHandler];
+    [self readAttributePrimary5XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary5XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83788,7 +90009,10 @@ - (void)subscribeAttributePrimary5XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary5XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83798,13 +90022,19 @@ + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary5XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary5YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5YWithCompletion:completionHandler];
+    [self readAttributePrimary5YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary5YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83821,7 +90051,10 @@ - (void)subscribeAttributePrimary5YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary5YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83831,13 +90064,19 @@ + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary5YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary5IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary5IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary5IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83856,7 +90095,10 @@ - (void)subscribeAttributePrimary5IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary5IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83867,13 +90109,19 @@ + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary5IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePrimary6XWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6XWithCompletion:completionHandler];
+    [self readAttributePrimary6XWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary6XWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83890,7 +90138,10 @@ - (void)subscribeAttributePrimary6XWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary6XWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83900,13 +90151,19 @@ + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary6XWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary6YWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6YWithCompletion:completionHandler];
+    [self readAttributePrimary6YWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary6YWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83923,7 +90180,10 @@ - (void)subscribeAttributePrimary6YWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributePrimary6YWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -83933,13 +90193,19 @@ + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributePrimary6YWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributePrimary6IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6IntensityWithCompletion:completionHandler];
+    [self readAttributePrimary6IntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePrimary6IntensityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -83958,7 +90224,10 @@ - (void)subscribeAttributePrimary6IntensityWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePrimary6IntensityWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -83969,13 +90238,19 @@ + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePrimary6IntensityWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeWhitePointXWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWhitePointXWithCompletion:completionHandler];
+    [self readAttributeWhitePointXWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeWhitePointXWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84002,7 +90277,10 @@ - (void)subscribeAttributeWhitePointXWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeWhitePointXWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -84013,13 +90291,19 @@ + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeWhitePointXWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeWhitePointYWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWhitePointYWithCompletion:completionHandler];
+    [self readAttributeWhitePointYWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeWhitePointYWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84046,7 +90330,10 @@ - (void)subscribeAttributeWhitePointYWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeWhitePointYWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -84057,13 +90344,19 @@ + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeWhitePointYWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeColorPointRXWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRXWithCompletion:completionHandler];
+    [self readAttributeColorPointRXWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointRXWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84090,7 +90383,10 @@ - (void)subscribeAttributeColorPointRXWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointRXWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84101,13 +90397,19 @@ + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointRXWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointRYWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRYWithCompletion:completionHandler];
+    [self readAttributeColorPointRYWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointRYWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84134,7 +90436,10 @@ - (void)subscribeAttributeColorPointRYWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointRYWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84145,13 +90450,19 @@ + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointRYWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointRIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRIntensityWithCompletion:completionHandler];
+    [self readAttributeColorPointRIntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointRIntensityWithValue:(NSNumber * _Nullable)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -84181,7 +90492,10 @@ - (void)subscribeAttributeColorPointRIntensityWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeColorPointRIntensityWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -84192,13 +90506,19 @@ + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeColorPointRIntensityWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeColorPointGXWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGXWithCompletion:completionHandler];
+    [self readAttributeColorPointGXWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointGXWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84225,7 +90545,10 @@ - (void)subscribeAttributeColorPointGXWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointGXWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84236,13 +90559,19 @@ + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointGXWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointGYWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGYWithCompletion:completionHandler];
+    [self readAttributeColorPointGYWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointGYWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84269,7 +90598,10 @@ - (void)subscribeAttributeColorPointGYWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointGYWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84280,13 +90612,19 @@ + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointGYWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointGIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGIntensityWithCompletion:completionHandler];
+    [self readAttributeColorPointGIntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointGIntensityWithValue:(NSNumber * _Nullable)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -84316,7 +90654,10 @@ - (void)subscribeAttributeColorPointGIntensityWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeColorPointGIntensityWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -84327,13 +90668,19 @@ + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeColorPointGIntensityWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeColorPointBXWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBXWithCompletion:completionHandler];
+    [self readAttributeColorPointBXWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointBXWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84360,7 +90707,10 @@ - (void)subscribeAttributeColorPointBXWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointBXWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84371,13 +90721,19 @@ + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointBXWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointBYWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBYWithCompletion:completionHandler];
+    [self readAttributeColorPointBYWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointBYWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -84404,7 +90760,10 @@ - (void)subscribeAttributeColorPointBYWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeColorPointBYWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -84415,13 +90774,19 @@ + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorPointBYWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeColorPointBIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBIntensityWithCompletion:completionHandler];
+    [self readAttributeColorPointBIntensityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeColorPointBIntensityWithValue:(NSNumber * _Nullable)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -84451,7 +90816,10 @@ - (void)subscribeAttributeColorPointBIntensityWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeColorPointBIntensityWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -84462,13 +90830,19 @@ + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeColorPointBIntensityWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeEnhancedCurrentHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnhancedCurrentHueWithCompletion:completionHandler];
+    [self readAttributeEnhancedCurrentHueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEnhancedCurrentHueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84487,7 +90861,10 @@ - (void)subscribeAttributeEnhancedCurrentHueWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeEnhancedCurrentHueWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -84498,13 +90875,19 @@ + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeEnhancedCurrentHueWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeEnhancedColorModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnhancedColorModeWithCompletion:completionHandler];
+    [self readAttributeEnhancedColorModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeEnhancedColorModeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84523,7 +90906,10 @@ - (void)subscribeAttributeEnhancedColorModeWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeEnhancedColorModeWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -84534,13 +90920,19 @@ + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeEnhancedColorModeWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeColorLoopActiveWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopActiveWithCompletion:completionHandler];
+    [self readAttributeColorLoopActiveWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorLoopActiveWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84558,7 +90950,10 @@ - (void)subscribeAttributeColorLoopActiveWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeColorLoopActiveWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -84569,13 +90964,19 @@ + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeColorLoopActiveWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorLoopDirectionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopDirectionWithCompletion:completionHandler];
+    [self readAttributeColorLoopDirectionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorLoopDirectionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84594,7 +90995,10 @@ - (void)subscribeAttributeColorLoopDirectionWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeColorLoopDirectionWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -84605,13 +91009,19 @@ + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeColorLoopDirectionWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeColorLoopTimeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopTimeWithCompletion:completionHandler];
+    [self readAttributeColorLoopTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorLoopTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84629,7 +91039,10 @@ - (void)subscribeAttributeColorLoopTimeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeColorLoopTimeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -84640,13 +91053,19 @@ + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeColorLoopTimeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeColorLoopStartEnhancedHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopStartEnhancedHueWithCompletion:completionHandler];
+    [self readAttributeColorLoopStartEnhancedHueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorLoopStartEnhancedHueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84665,7 +91084,10 @@ - (void)subscribeAttributeColorLoopStartEnhancedHueWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeColorLoopStartEnhancedHueWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -84676,13 +91098,19 @@ + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCa
     [self readAttributeColorLoopStartEnhancedHueWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeColorLoopStoredEnhancedHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopStoredEnhancedHueWithCompletion:completionHandler];
+    [self readAttributeColorLoopStoredEnhancedHueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorLoopStoredEnhancedHueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84701,7 +91129,10 @@ - (void)subscribeAttributeColorLoopStoredEnhancedHueWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeColorLoopStoredEnhancedHueWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -84712,13 +91143,19 @@ + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeC
     [self readAttributeColorLoopStoredEnhancedHueWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeColorCapabilitiesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorCapabilitiesWithCompletion:completionHandler];
+    [self readAttributeColorCapabilitiesWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorCapabilitiesWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84737,7 +91174,10 @@ - (void)subscribeAttributeColorCapabilitiesWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeColorCapabilitiesWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -84748,13 +91188,19 @@ + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeColorCapabilitiesWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTempPhysicalMinMiredsWithCompletion:completionHandler];
+    [self readAttributeColorTempPhysicalMinMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorTempPhysicalMinMiredsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84773,7 +91219,10 @@ - (void)subscribeAttributeColorTempPhysicalMinMiredsWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeColorTempPhysicalMinMiredsWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -84784,13 +91233,19 @@ + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeC
     [self readAttributeColorTempPhysicalMinMiredsWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTempPhysicalMaxMiredsWithCompletion:completionHandler];
+    [self readAttributeColorTempPhysicalMaxMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84809,7 +91264,10 @@ - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeColorTempPhysicalMaxMiredsWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -84820,13 +91278,19 @@ + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeC
     [self readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:completionHandler];
+    [self readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84845,7 +91309,10 @@ - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithMinInterval:(NSNumb
     }
     [self subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -84856,13 +91323,19 @@ + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttri
     [self readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeStartUpColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpColorTemperatureMiredsWithCompletion:completionHandler];
+    [self readAttributeStartUpColorTemperatureMiredsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value
                                            completionHandler:(MTRStatusCompletion)completionHandler
@@ -84892,7 +91365,10 @@ - (void)subscribeAttributeStartUpColorTemperatureMiredsWithMinInterval:(NSNumber
     }
     [self subscribeAttributeStartUpColorTemperatureMiredsWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -84903,13 +91379,19 @@ + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttribu
     [self readAttributeStartUpColorTemperatureMiredsWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84928,7 +91410,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -84939,13 +91424,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84964,7 +91455,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -84975,13 +91469,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -84998,7 +91498,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -85009,13 +91512,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -85032,7 +91541,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -85042,13 +91554,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -85066,7 +91584,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -85077,7 +91598,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -86842,7 +93366,10 @@ @implementation MTRBaseClusterBallastConfiguration (Deprecated)
 - (void)readAttributePhysicalMinLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalMinLevelWithCompletion:completionHandler];
+    [self readAttributePhysicalMinLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributePhysicalMinLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -86860,7 +93387,10 @@ - (void)readAttributePhysicalMinLevelWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributePhysicalMinLevelWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -86871,13 +93401,19 @@ + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributePhysicalMinLevelWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributePhysicalMaxLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalMaxLevelWithCompletion:completionHandler];
+    [self readAttributePhysicalMaxLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributePhysicalMaxLevelWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -86895,7 +93431,10 @@ - (void)readAttributePhysicalMaxLevelWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributePhysicalMaxLevelWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -86906,13 +93445,19 @@ + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributePhysicalMaxLevelWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeBallastStatusWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBallastStatusWithCompletion:completionHandler];
+    [self readAttributeBallastStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeBallastStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -86930,7 +93475,10 @@ - (void)subscribeAttributeBallastStatusWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeBallastStatusWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -86941,13 +93489,19 @@ + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeBallastStatusWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinLevelWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinLevelWithCompletion:completionHandler];
+    [self readAttributeMinLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMinLevelWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -86974,7 +93528,10 @@ - (void)subscribeAttributeMinLevelWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeMinLevelWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -86984,13 +93541,19 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeMinLevelWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeMaxLevelWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxLevelWithCompletion:completionHandler];
+    [self readAttributeMaxLevelWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeMaxLevelWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87017,7 +93580,10 @@ - (void)subscribeAttributeMaxLevelWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeMaxLevelWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -87027,13 +93593,19 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeMaxLevelWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeIntrinsicBalanceFactorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIntrinsicBalanceFactorWithCompletion:completionHandler];
+    [self readAttributeIntrinsicBalanceFactorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSNumber * _Nullable)value
                                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -87063,7 +93635,10 @@ - (void)subscribeAttributeIntrinsicBalanceFactorWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeIntrinsicBalanceFactorWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -87074,13 +93649,19 @@ + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCache
     [self readAttributeIntrinsicBalanceFactorWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBallastFactorAdjustmentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBallastFactorAdjustmentWithCompletion:completionHandler];
+    [self readAttributeBallastFactorAdjustmentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSNumber * _Nullable)value
                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -87110,7 +93691,10 @@ - (void)subscribeAttributeBallastFactorAdjustmentWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeBallastFactorAdjustmentWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -87121,13 +93705,19 @@ + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCach
     [self readAttributeBallastFactorAdjustmentWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeLampQuantityWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampQuantityWithCompletion:completionHandler];
+    [self readAttributeLampQuantityWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLampQuantityWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87144,7 +93734,10 @@ - (void)subscribeAttributeLampQuantityWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeLampQuantityWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -87155,13 +93748,19 @@ + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeLampQuantityWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeLampTypeWithCompletionHandler:(void (^)(
                                                        NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampTypeWithCompletion:completionHandler];
+    [self readAttributeLampTypeWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampTypeWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87188,7 +93787,10 @@ - (void)subscribeAttributeLampTypeWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeLampTypeWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -87198,13 +93800,19 @@ + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeLampTypeWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeLampManufacturerWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampManufacturerWithCompletion:completionHandler];
+    [self readAttributeLampManufacturerWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87232,7 +93840,10 @@ - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value
     }
     [self subscribeAttributeLampManufacturerWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -87243,13 +93854,19 @@ + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeLampManufacturerWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLampRatedHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampRatedHoursWithCompletion:completionHandler];
+    [self readAttributeLampRatedHoursWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampRatedHoursWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87277,7 +93894,10 @@ - (void)subscribeAttributeLampRatedHoursWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeLampRatedHoursWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -87288,13 +93908,19 @@ + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeLampRatedHoursWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeLampBurnHoursWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampBurnHoursWithCompletion:completionHandler];
+    [self readAttributeLampBurnHoursWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampBurnHoursWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87322,7 +93948,10 @@ - (void)subscribeAttributeLampBurnHoursWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeLampBurnHoursWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -87333,13 +93962,19 @@ + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeLampBurnHoursWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeLampAlarmModeWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampAlarmModeWithCompletion:completionHandler];
+    [self readAttributeLampAlarmModeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampAlarmModeWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -87367,7 +94002,10 @@ - (void)subscribeAttributeLampAlarmModeWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeLampAlarmModeWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -87378,13 +94016,19 @@ + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeLampAlarmModeWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeLampBurnHoursTripPointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampBurnHoursTripPointWithCompletion:completionHandler];
+    [self readAttributeLampBurnHoursTripPointWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSNumber * _Nullable)value
                                     completionHandler:(MTRStatusCompletion)completionHandler
@@ -87414,7 +94058,10 @@ - (void)subscribeAttributeLampBurnHoursTripPointWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeLampBurnHoursTripPointWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -87425,13 +94072,19 @@ + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCache
     [self readAttributeLampBurnHoursTripPointWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87450,7 +94103,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -87461,13 +94117,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87486,7 +94148,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -87497,13 +94162,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87520,7 +94191,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -87531,13 +94205,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87554,7 +94234,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -87564,13 +94247,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -87588,7 +94277,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -87599,7 +94291,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -88340,7 +95035,10 @@ @implementation MTRBaseClusterIlluminanceMeasurement (Deprecated)
 - (void)readAttributeMeasuredValueWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88358,7 +95056,10 @@ - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMeasuredValueWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -88369,13 +95070,19 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -88393,7 +95100,10 @@ - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -88404,13 +95114,19 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -88428,7 +95144,10 @@ - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -88439,13 +95158,19 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithCompletion:completionHandler];
+    [self readAttributeToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88462,7 +95187,10 @@ - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeToleranceWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -88472,13 +95200,19 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeLightSensorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLightSensorTypeWithCompletion:completionHandler];
+    [self readAttributeLightSensorTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLightSensorTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88496,7 +95230,10 @@ - (void)subscribeAttributeLightSensorTypeWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeLightSensorTypeWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -88507,13 +95244,19 @@ + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeLightSensorTypeWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88532,7 +95275,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -88543,13 +95289,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88568,7 +95320,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -88579,13 +95334,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88602,7 +95363,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -88613,13 +95377,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88636,7 +95406,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -88646,13 +95419,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -88670,7 +95449,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -88681,7 +95463,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -89353,7 +96138,10 @@ @implementation MTRBaseClusterTemperatureMeasurement (Deprecated)
 - (void)readAttributeMeasuredValueWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89371,7 +96159,10 @@ - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMeasuredValueWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -89382,13 +96173,19 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -89406,7 +96203,10 @@ - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -89417,13 +96217,19 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -89441,7 +96247,10 @@ - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -89452,13 +96261,19 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithCompletion:completionHandler];
+    [self readAttributeToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89475,7 +96290,10 @@ - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeToleranceWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -89485,13 +96303,19 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89510,7 +96334,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -89521,13 +96348,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89546,7 +96379,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -89557,13 +96393,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89580,7 +96422,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -89591,13 +96436,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89614,7 +96465,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -89624,13 +96478,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -89648,7 +96508,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -89659,7 +96522,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -90675,7 +97541,10 @@ @implementation MTRBaseClusterPressureMeasurement (Deprecated)
 - (void)readAttributeMeasuredValueWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90693,7 +97562,10 @@ - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMeasuredValueWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -90704,13 +97576,19 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -90728,7 +97606,10 @@ - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -90739,13 +97620,19 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -90763,7 +97650,10 @@ - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -90774,13 +97664,19 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithCompletion:completionHandler];
+    [self readAttributeToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90797,7 +97693,10 @@ - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeToleranceWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -90807,13 +97706,19 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeScaledValueWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaledValueWithCompletion:completionHandler];
+    [self readAttributeScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeScaledValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90830,7 +97735,10 @@ - (void)subscribeAttributeScaledValueWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeScaledValueWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -90841,13 +97749,19 @@ + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeScaledValueWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeMinScaledValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinScaledValueWithCompletion:completionHandler];
+    [self readAttributeMinScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMinScaledValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90865,7 +97779,10 @@ - (void)subscribeAttributeMinScaledValueWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeMinScaledValueWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -90876,13 +97793,19 @@ + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeMinScaledValueWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeMaxScaledValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxScaledValueWithCompletion:completionHandler];
+    [self readAttributeMaxScaledValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMaxScaledValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90900,7 +97823,10 @@ - (void)subscribeAttributeMaxScaledValueWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeMaxScaledValueWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -90911,13 +97837,19 @@ + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeMaxScaledValueWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeScaledToleranceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaledToleranceWithCompletion:completionHandler];
+    [self readAttributeScaledToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeScaledToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90935,7 +97867,10 @@ - (void)subscribeAttributeScaledToleranceWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeScaledToleranceWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -90946,12 +97881,18 @@ + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeScaledToleranceWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeScaleWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaleWithCompletion:completionHandler];
+    [self readAttributeScaleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeScaleWithMinInterval:(NSNumber * _Nonnull)minInterval
                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -90968,20 +97909,32 @@ - (void)subscribeAttributeScaleWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeScaleWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaleWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeScaleWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91000,7 +97953,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -91011,13 +97967,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91036,7 +97998,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -91047,13 +98012,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91070,7 +98041,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -91081,13 +98055,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91104,7 +98084,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -91114,13 +98097,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91138,7 +98127,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -91149,7 +98141,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -91820,7 +98815,10 @@ @implementation MTRBaseClusterFlowMeasurement (Deprecated)
 - (void)readAttributeMeasuredValueWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91838,7 +98836,10 @@ - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMeasuredValueWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -91849,13 +98850,19 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -91873,7 +98880,10 @@ - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -91884,13 +98894,19 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -91908,7 +98924,10 @@ - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -91919,13 +98938,19 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithCompletion:completionHandler];
+    [self readAttributeToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91942,7 +98967,10 @@ - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeToleranceWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -91952,13 +98980,19 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -91977,7 +99011,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -91988,13 +99025,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92013,7 +99056,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -92024,13 +99070,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92047,7 +99099,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -92058,13 +99113,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92081,7 +99142,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -92091,13 +99155,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92115,7 +99185,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -92126,7 +99199,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -92800,7 +99876,10 @@ @implementation MTRBaseClusterRelativeHumidityMeasurement (Deprecated)
 - (void)readAttributeMeasuredValueWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92818,7 +99897,10 @@ - (void)subscribeAttributeMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeMeasuredValueWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -92829,13 +99911,19 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMinMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMinMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -92853,7 +99941,10 @@ - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMinMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -92864,13 +99955,19 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithCompletion:completionHandler];
+    [self readAttributeMaxMeasuredValueWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeMaxMeasuredValueWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -92888,7 +99985,10 @@ - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeMaxMeasuredValueWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -92899,13 +99999,19 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithCompletion:completionHandler];
+    [self readAttributeToleranceWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92922,7 +100028,10 @@ - (void)subscribeAttributeToleranceWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeToleranceWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -92932,13 +100041,19 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92957,7 +100072,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -92968,13 +100086,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -92993,7 +100117,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -93004,13 +100131,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -93027,7 +100160,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -93038,13 +100174,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -93061,7 +100203,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -93071,13 +100216,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -93095,7 +100246,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -93106,7 +100260,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -94721,7 +101878,10 @@ @implementation MTRBaseClusterOccupancySensing (Deprecated)
 - (void)readAttributeOccupancyWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancyWithCompletion:completionHandler];
+    [self readAttributeOccupancyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupancyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -94738,7 +101898,10 @@ - (void)subscribeAttributeOccupancyWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeOccupancyWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -94748,13 +101911,19 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeOccupancyWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeOccupancySensorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancySensorTypeWithCompletion:completionHandler];
+    [self readAttributeOccupancySensorTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupancySensorTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -94773,7 +101942,10 @@ - (void)subscribeAttributeOccupancySensorTypeWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeOccupancySensorTypeWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -94784,13 +101956,19 @@ + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeOccupancySensorTypeWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOccupancySensorTypeBitmapWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancySensorTypeBitmapWithCompletion:completionHandler];
+    [self readAttributeOccupancySensorTypeBitmapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOccupancySensorTypeBitmapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -94809,7 +101987,10 @@ - (void)subscribeAttributeOccupancySensorTypeBitmapWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeOccupancySensorTypeBitmapWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -94820,13 +102001,19 @@ + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCa
     [self readAttributeOccupancySensorTypeBitmapWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributePirOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirOccupiedToUnoccupiedDelayWithCompletion:completionHandler];
+    [self readAttributePirOccupiedToUnoccupiedDelayWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -94856,7 +102043,10 @@ - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithMinInterval:(NSNumber
     }
     [self subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -94867,13 +102057,19 @@ + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttribut
     [self readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributePirUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirUnoccupiedToOccupiedDelayWithCompletion:completionHandler];
+    [self readAttributePirUnoccupiedToOccupiedDelayWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -94903,7 +102099,10 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithMinInterval:(NSNumber
     }
     [self subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -94914,13 +102113,19 @@ + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttribut
     [self readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributePirUnoccupiedToOccupiedThresholdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirUnoccupiedToOccupiedThresholdWithCompletion:completionHandler];
+    [self readAttributePirUnoccupiedToOccupiedThresholdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                               completionHandler:(MTRStatusCompletion)completionHandler
@@ -94950,7 +102155,10 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithMinInterval:(NSNum
     }
     [self subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:subscribeParams
                                                subscriptionEstablished:subscriptionEstablishedHandler
-                                                         reportHandler:reportHandler];
+                                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             reportHandler(static_cast(value), error);
+                                                         }];
 }
 + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                endpoint:(NSNumber *)endpoint
@@ -94961,13 +102169,19 @@ + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttr
     [self readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
                                                                  endpoint:endpoint
                                                                     queue:queue
-                                                               completion:completionHandler];
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion:completionHandler];
+    [self readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -94997,7 +102211,10 @@ - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithMinInterval:(NS
     }
     [self subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:subscribeParams
                                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                                            reportHandler:reportHandler];
+                                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                reportHandler(static_cast(value), error);
+                                                            }];
 }
 + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                   endpoint:(NSNumber *)endpoint
@@ -95008,13 +102225,20 @@ + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRA
     [self readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
                                                                     endpoint:endpoint
                                                                        queue:queue
-                                                                  completion:completionHandler];
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion:completionHandler];
+    [self readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -95044,7 +102268,10 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithMinInterval:(NS
     }
     [self subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:subscribeParams
                                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                                            reportHandler:reportHandler];
+                                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                reportHandler(static_cast(value), error);
+                                                            }];
 }
 + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                   endpoint:(NSNumber *)endpoint
@@ -95055,13 +102282,21 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRA
     [self readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
                                                                     endpoint:endpoint
                                                                        queue:queue
-                                                                  completion:completionHandler];
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion:completionHandler];
+    [self readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                                      completionHandler:(MTRStatusCompletion)completionHandler
@@ -95091,7 +102326,11 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithMinInterval
     }
     [self subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:subscribeParams
                                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                                reportHandler:reportHandler];
+                                                                reportHandler:^(
+                                                                    NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                    // Cast is safe because subclass does not add any selectors.
+                                                                    reportHandler(static_cast(value), error);
+                                                                }];
 }
 + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                       endpoint:(NSNumber *)endpoint
@@ -95102,13 +102341,22 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(
     [self readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
                                                                         endpoint:endpoint
                                                                            queue:queue
-                                                                      completion:completionHandler];
+                                                                      completion:^(
+                                                                          NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                          // Cast is safe because subclass does not add any
+                                                                          // selectors.
+                                                                          completionHandler(static_cast(value), error);
+                                                                      }];
 }
 
 - (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion:completionHandler];
+    [self readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -95138,7 +102386,11 @@ - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithMinInterva
     }
     [self subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95150,13 +102402,22 @@ + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
     [self readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion:completionHandler];
+    [self readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -95186,7 +102447,11 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithMinInterva
     }
     [self subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95198,13 +102463,22 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
     [self readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletionHandler:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion:completionHandler];
+    [self readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -95234,7 +102508,12 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithMinInt
     }
     [self subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams:subscribeParams
                                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                                     reportHandler:reportHandler];
+                                                                     reportHandler:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         reportHandler(static_cast(value), error);
+                                                                     }];
 }
 + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95246,13 +102525,22 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCa
     [self readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
                                                                              endpoint:endpoint
                                                                                 queue:queue
-                                                                           completion:completionHandler];
+                                                                           completion:^(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error) {
+                                                                               // Cast is safe because subclass does not add any
+                                                                               // selectors.
+                                                                               completionHandler(
+                                                                                   static_cast(value), error);
+                                                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95271,7 +102559,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -95282,13 +102573,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95307,7 +102604,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -95318,13 +102618,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95341,7 +102647,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -95352,13 +102661,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95375,7 +102690,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -95385,13 +102703,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95409,7 +102733,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -95420,7 +102747,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -95879,7 +103209,10 @@ @implementation MTRBaseClusterWakeOnLan (Deprecated)
 - (void)readAttributeMACAddressWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMACAddressWithCompletion:completionHandler];
+    [self readAttributeMACAddressWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMACAddressWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95896,7 +103229,10 @@ - (void)subscribeAttributeMACAddressWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeMACAddressWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -95906,13 +103242,19 @@ + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeMACAddressWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95931,7 +103273,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -95942,13 +103287,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -95967,7 +103318,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -95978,13 +103332,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96001,7 +103361,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -96012,13 +103375,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96035,7 +103404,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -96045,13 +103417,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96069,7 +103447,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -96080,7 +103461,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -96764,7 +104148,11 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params
               completionHandler:(void (^)(MTRChannelClusterChangeChannelResponseParams * _Nullable data,
                                     NSError * _Nullable error))completionHandler
 {
-    [self changeChannelWithParams:params completion:completionHandler];
+    [self changeChannelWithParams:params
+                       completion:^(MTRChannelClusterChangeChannelResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberParams *)params
                       completionHandler:(MTRStatusCompletion)completionHandler
@@ -96779,7 +104167,10 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params compl
 - (void)readAttributeChannelListWithCompletionHandler:(void (^)(
                                                           NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelListWithCompletion:completionHandler];
+    [self readAttributeChannelListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeChannelListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96796,7 +104187,10 @@ - (void)subscribeAttributeChannelListWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeChannelListWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -96806,13 +104200,19 @@ + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeChannelListWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeLineupWithCompletionHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineupWithCompletion:completionHandler];
+    [self readAttributeLineupWithCompletion:^(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLineupWithMinInterval:(NSNumber * _Nonnull)minInterval
                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96830,7 +104230,10 @@ - (void)subscribeAttributeLineupWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeLineupWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
@@ -96838,13 +104241,22 @@ + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attr
                             completionHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineupWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeLineupWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeCurrentChannelWithCompletionHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentChannelWithCompletion:completionHandler];
+    [self readAttributeCurrentChannelWithCompletion:^(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentChannelWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96862,7 +104274,10 @@ - (void)subscribeAttributeCurrentChannelWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeCurrentChannelWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -96870,16 +104285,23 @@ + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentChannelWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:completionHandler];
+    [self
+        readAttributeCurrentChannelWithAttributeCache:attributeCacheContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96898,7 +104320,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -96909,13 +104334,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96934,7 +104365,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -96945,13 +104379,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -96968,7 +104408,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -96979,13 +104422,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97002,7 +104451,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -97012,13 +104464,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97036,7 +104494,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -97047,7 +104508,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -97612,13 +105076,21 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
                completionHandler:(void (^)(MTRTargetNavigatorClusterNavigateTargetResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self navigateTargetWithParams:params completion:completionHandler];
+    [self navigateTargetWithParams:params
+                        completion:^(
+                            MTRTargetNavigatorClusterNavigateTargetResponseParams * _Nullable data, NSError * _Nullable error) {
+                            // Cast is safe because subclass does not add any selectors.
+                            completionHandler(static_cast(data), error);
+                        }];
 }
 
 - (void)readAttributeTargetListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetListWithCompletion:completionHandler];
+    [self readAttributeTargetListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTargetListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97635,7 +105107,10 @@ - (void)subscribeAttributeTargetListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeTargetListWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -97645,13 +105120,19 @@ + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeTargetListWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeCurrentTargetWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentTargetWithCompletion:completionHandler];
+    [self readAttributeCurrentTargetWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentTargetWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97669,7 +105150,10 @@ - (void)subscribeAttributeCurrentTargetWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeCurrentTargetWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -97680,13 +105164,19 @@ + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentTargetWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97705,7 +105195,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -97716,13 +105209,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97741,7 +105240,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -97752,13 +105254,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97775,7 +105283,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -97786,13 +105297,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97809,7 +105326,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -97819,13 +105339,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -97843,7 +105369,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -97854,7 +105383,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -99058,113 +106590,160 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params
      completionHandler:
          (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self playWithParams:params completion:completionHandler];
+    [self playWithParams:params
+              completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                  // Cast is safe because subclass does not add any selectors.
+                  completionHandler(static_cast(data), error);
+              }];
 }
 - (void)playWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                       NSError * _Nullable error))completionHandler
 {
-    [self playWithParams:nil completion:completionHandler];
+    [self playWithParams:nil completionHandler:completionHandler];
 }
 - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
       completionHandler:
           (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self pauseWithParams:params completion:completionHandler];
+    [self pauseWithParams:params
+               completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                   // Cast is safe because subclass does not add any selectors.
+                   completionHandler(static_cast(data), error);
+               }];
 }
 - (void)pauseWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self pauseWithParams:nil completion:completionHandler];
+    [self pauseWithParams:nil completionHandler:completionHandler];
 }
 - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nullable)params
              completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self stopPlaybackWithParams:params completion:completionHandler];
+    [self stopPlaybackWithParams:params
+                      completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)stopPlaybackWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
-    [self stopPlaybackWithParams:nil completion:completionHandler];
+    [self stopPlaybackWithParams:nil completionHandler:completionHandler];
 }
 - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)params
           completionHandler:
               (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self startOverWithParams:params completion:completionHandler];
+    [self startOverWithParams:params
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)startOverWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
-    [self startOverWithParams:nil completion:completionHandler];
+    [self startOverWithParams:nil completionHandler:completionHandler];
 }
 - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)params
          completionHandler:
              (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self previousWithParams:params completion:completionHandler];
+    [self previousWithParams:params
+                  completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                      // Cast is safe because subclass does not add any selectors.
+                      completionHandler(static_cast(data), error);
+                  }];
 }
 - (void)previousWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                           NSError * _Nullable error))completionHandler
 {
-    [self previousWithParams:nil completion:completionHandler];
+    [self previousWithParams:nil completionHandler:completionHandler];
 }
 - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
      completionHandler:
          (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self nextWithParams:params completion:completionHandler];
+    [self nextWithParams:params
+              completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                  // Cast is safe because subclass does not add any selectors.
+                  completionHandler(static_cast(data), error);
+              }];
 }
 - (void)nextWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                       NSError * _Nullable error))completionHandler
 {
-    [self nextWithParams:nil completion:completionHandler];
+    [self nextWithParams:nil completionHandler:completionHandler];
 }
 - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
        completionHandler:
            (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self rewindWithParams:params completion:completionHandler];
+    [self rewindWithParams:params
+                completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                    // Cast is safe because subclass does not add any selectors.
+                    completionHandler(static_cast(data), error);
+                }];
 }
 - (void)rewindWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self rewindWithParams:nil completion:completionHandler];
+    [self rewindWithParams:nil completionHandler:completionHandler];
 }
 - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nullable)params
             completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                   NSError * _Nullable error))completionHandler
 {
-    [self fastForwardWithParams:params completion:completionHandler];
+    [self fastForwardWithParams:params
+                     completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)fastForwardWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
-    [self fastForwardWithParams:nil completion:completionHandler];
+    [self fastForwardWithParams:nil completionHandler:completionHandler];
 }
 - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
             completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                   NSError * _Nullable error))completionHandler
 {
-    [self skipForwardWithParams:params completion:completionHandler];
+    [self skipForwardWithParams:params
+                     completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)params
              completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self skipBackwardWithParams:params completion:completionHandler];
+    [self skipBackwardWithParams:params
+                      completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
      completionHandler:
          (void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self seekWithParams:params completion:completionHandler];
+    [self seekWithParams:params
+              completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                  // Cast is safe because subclass does not add any selectors.
+                  completionHandler(static_cast(data), error);
+              }];
 }
 
 - (void)readAttributeCurrentStateWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentStateWithCompletion:completionHandler];
+    [self readAttributeCurrentStateWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentStateWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99181,7 +106760,10 @@ - (void)subscribeAttributeCurrentStateWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeCurrentStateWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -99192,13 +106774,19 @@ + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentStateWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeStartTimeWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartTimeWithCompletion:completionHandler];
+    [self readAttributeStartTimeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStartTimeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99215,7 +106803,10 @@ - (void)subscribeAttributeStartTimeWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeStartTimeWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -99225,13 +106816,19 @@ + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeStartTimeWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeDurationWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDurationWithCompletion:completionHandler];
+    [self readAttributeDurationWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDurationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99248,7 +106845,10 @@ - (void)subscribeAttributeDurationWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeDurationWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -99258,13 +106858,20 @@ + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeDurationWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeSampledPositionWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSampledPositionWithCompletion:completionHandler];
+    [self readAttributeSampledPositionWithCompletion:^(
+        MTRMediaPlaybackClusterPlaybackPosition * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSampledPositionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99282,7 +106889,11 @@ - (void)subscribeAttributeSampledPositionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeSampledPositionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(
+                                            MTRMediaPlaybackClusterPlaybackPosition * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -99293,13 +106904,21 @@ + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeSampledPositionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
+                                                  NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(
+                                                      static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePlaybackSpeedWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePlaybackSpeedWithCompletion:completionHandler];
+    [self readAttributePlaybackSpeedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePlaybackSpeedWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99317,7 +106936,10 @@ - (void)subscribeAttributePlaybackSpeedWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributePlaybackSpeedWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -99328,13 +106950,19 @@ + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributePlaybackSpeedWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeSeekRangeEndWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSeekRangeEndWithCompletion:completionHandler];
+    [self readAttributeSeekRangeEndWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSeekRangeEndWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99351,7 +106979,10 @@ - (void)subscribeAttributeSeekRangeEndWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeSeekRangeEndWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -99362,13 +106993,19 @@ + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeSeekRangeEndWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSeekRangeStartWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSeekRangeStartWithCompletion:completionHandler];
+    [self readAttributeSeekRangeStartWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeSeekRangeStartWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99386,7 +107023,10 @@ - (void)subscribeAttributeSeekRangeStartWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeSeekRangeStartWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -99397,13 +107037,19 @@ + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeSeekRangeStartWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99422,7 +107068,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -99433,13 +107082,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99458,7 +107113,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -99469,13 +107127,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99492,7 +107156,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -99503,13 +107170,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99526,7 +107199,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -99536,13 +107212,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -99560,7 +107242,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -99571,7 +107256,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -100226,7 +107914,7 @@ - (void)showInputStatusWithParams:(MTRMediaInputClusterShowInputStatusParams * _
 }
 - (void)showInputStatusWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self showInputStatusWithParams:nil completion:completionHandler];
+    [self showInputStatusWithParams:nil completionHandler:completionHandler];
 }
 - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _Nullable)params
                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -100235,7 +107923,7 @@ - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _
 }
 - (void)hideInputStatusWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self hideInputStatusWithParams:nil completion:completionHandler];
+    [self hideInputStatusWithParams:nil completionHandler:completionHandler];
 }
 - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params
             completionHandler:(MTRStatusCompletion)completionHandler
@@ -100246,7 +107934,10 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params
 - (void)readAttributeInputListWithCompletionHandler:(void (^)(
                                                         NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInputListWithCompletion:completionHandler];
+    [self readAttributeInputListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInputListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100263,7 +107954,10 @@ - (void)subscribeAttributeInputListWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeInputListWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -100273,13 +107967,19 @@ + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeInputListWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeCurrentInputWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentInputWithCompletion:completionHandler];
+    [self readAttributeCurrentInputWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentInputWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100296,7 +107996,10 @@ - (void)subscribeAttributeCurrentInputWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeCurrentInputWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -100307,13 +108010,19 @@ + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentInputWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100332,7 +108041,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -100343,13 +108055,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100368,7 +108086,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -100379,13 +108100,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100402,7 +108129,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -100413,13 +108143,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100436,7 +108172,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -100446,13 +108185,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100470,7 +108215,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -100481,7 +108229,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -100904,13 +108655,16 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params comple
 }
 - (void)sleepWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self sleepWithParams:nil completion:completionHandler];
+    [self sleepWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100929,7 +108683,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -100940,13 +108697,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100965,7 +108728,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -100976,13 +108742,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -100999,7 +108771,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -101010,13 +108785,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101033,7 +108814,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -101043,13 +108827,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101067,7 +108857,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -101078,7 +108871,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -101494,13 +109290,20 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
         completionHandler:
             (void (^)(MTRKeypadInputClusterSendKeyResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self sendKeyWithParams:params completion:completionHandler];
+    [self sendKeyWithParams:params
+                 completion:^(MTRKeypadInputClusterSendKeyResponseParams * _Nullable data, NSError * _Nullable error) {
+                     // Cast is safe because subclass does not add any selectors.
+                     completionHandler(static_cast(data), error);
+                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101519,7 +109322,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -101530,13 +109336,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101555,7 +109367,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -101566,13 +109381,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101589,7 +109410,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -101600,13 +109424,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101623,7 +109453,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -101633,13 +109466,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -101657,7 +109496,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -101668,7 +109510,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -102452,19 +110297,30 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *)
               completionHandler:(void (^)(MTRContentLauncherClusterLaunchResponseParams * _Nullable data,
                                     NSError * _Nullable error))completionHandler
 {
-    [self launchContentWithParams:params completion:completionHandler];
+    [self launchContentWithParams:params
+                       completion:^(MTRContentLauncherClusterLaunchResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
           completionHandler:
               (void (^)(MTRContentLauncherClusterLaunchResponseParams * _Nullable data, NSError * _Nullable error))completionHandler
 {
-    [self launchURLWithParams:params completion:completionHandler];
+    [self launchURLWithParams:params
+                   completion:^(MTRContentLauncherClusterLaunchResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 
 - (void)readAttributeAcceptHeaderWithCompletionHandler:(void (^)(
                                                            NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptHeaderWithCompletion:completionHandler];
+    [self readAttributeAcceptHeaderWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptHeaderWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102481,7 +110337,10 @@ - (void)subscribeAttributeAcceptHeaderWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeAcceptHeaderWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -102492,13 +110351,19 @@ + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAcceptHeaderWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSupportedStreamingProtocolsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedStreamingProtocolsWithCompletion:completionHandler];
+    [self readAttributeSupportedStreamingProtocolsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSNumber * _Nonnull)value
                                          completionHandler:(MTRStatusCompletion)completionHandler
@@ -102528,7 +110393,10 @@ - (void)subscribeAttributeSupportedStreamingProtocolsWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeSupportedStreamingProtocolsWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -102539,13 +110407,19 @@ + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttribute
     [self readAttributeSupportedStreamingProtocolsWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102564,7 +110438,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -102575,13 +110452,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102600,7 +110483,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -102611,13 +110497,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102634,7 +110526,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -102645,13 +110540,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102668,7 +110569,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -102678,13 +110582,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -102702,7 +110612,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -102713,7 +110626,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -103308,7 +111224,10 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params
 - (void)readAttributeOutputListWithCompletionHandler:(void (^)(
                                                          NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutputListWithCompletion:completionHandler];
+    [self readAttributeOutputListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeOutputListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103325,7 +111244,10 @@ - (void)subscribeAttributeOutputListWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeOutputListWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -103335,13 +111257,19 @@ + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeOutputListWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeCurrentOutputWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentOutputWithCompletion:completionHandler];
+    [self readAttributeCurrentOutputWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentOutputWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103359,7 +111287,10 @@ - (void)subscribeAttributeCurrentOutputWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeCurrentOutputWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -103370,13 +111301,19 @@ + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeCurrentOutputWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103395,7 +111332,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -103406,13 +111346,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103431,7 +111377,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -103442,13 +111391,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103465,7 +111420,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -103476,13 +111434,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103499,7 +111463,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -103509,13 +111476,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -103533,7 +111506,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -103544,7 +111520,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -104224,25 +112203,40 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para
           completionHandler:(void (^)(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data,
                                 NSError * _Nullable error))completionHandler
 {
-    [self launchAppWithParams:params completion:completionHandler];
+    [self launchAppWithParams:params
+                   completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
         completionHandler:(void (^)(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data,
                               NSError * _Nullable error))completionHandler
 {
-    [self stopAppWithParams:params completion:completionHandler];
+    [self stopAppWithParams:params
+                 completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                     // Cast is safe because subclass does not add any selectors.
+                     completionHandler(static_cast(data), error);
+                 }];
 }
 - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
         completionHandler:(void (^)(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data,
                               NSError * _Nullable error))completionHandler
 {
-    [self hideAppWithParams:params completion:completionHandler];
+    [self hideAppWithParams:params
+                 completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                     // Cast is safe because subclass does not add any selectors.
+                     completionHandler(static_cast(data), error);
+                 }];
 }
 
 - (void)readAttributeCatalogListWithCompletionHandler:(void (^)(
                                                           NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCatalogListWithCompletion:completionHandler];
+    [self readAttributeCatalogListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCatalogListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104259,7 +112253,10 @@ - (void)subscribeAttributeCatalogListWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeCatalogListWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -104269,13 +112266,20 @@ + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeCatalogListWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeCurrentAppWithCompletionHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentAppWithCompletion:completionHandler];
+    [self readAttributeCurrentAppWithCompletion:^(
+        MTRApplicationLauncherClusterApplicationEP * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeCurrentAppWithValue:(MTRApplicationLauncherClusterApplicationEP * _Nullable)value
                         completionHandler:(MTRStatusCompletion)completionHandler
@@ -104304,7 +112308,11 @@ - (void)subscribeAttributeCurrentAppWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeCurrentAppWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(
+                                       MTRApplicationLauncherClusterApplicationEP * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -104315,13 +112323,21 @@ + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeCurrentAppWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
+                                             NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(
+                                                 static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104340,7 +112356,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -104351,13 +112370,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104376,7 +112401,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -104387,13 +112415,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104410,7 +112444,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -104421,13 +112458,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104444,7 +112487,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -104454,13 +112500,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -104478,7 +112530,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -104489,7 +112544,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -105455,7 +113513,10 @@ @implementation MTRBaseClusterApplicationBasic (Deprecated)
 - (void)readAttributeVendorNameWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithCompletion:completionHandler];
+    [self readAttributeVendorNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105472,7 +113533,10 @@ - (void)subscribeAttributeVendorNameWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeVendorNameWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -105482,13 +113546,19 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithCompletion:completionHandler];
+    [self readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105505,7 +113575,10 @@ - (void)subscribeAttributeVendorIDWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeVendorIDWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -105515,13 +113588,19 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeApplicationNameWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationNameWithCompletion:completionHandler];
+    [self readAttributeApplicationNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApplicationNameWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105539,7 +113618,10 @@ - (void)subscribeAttributeApplicationNameWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeApplicationNameWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -105550,13 +113632,19 @@ + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeApplicationNameWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeProductIDWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductIDWithCompletion:completionHandler];
+    [self readAttributeProductIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeProductIDWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105573,7 +113661,10 @@ - (void)subscribeAttributeProductIDWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeProductIDWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -105583,13 +113674,20 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeProductIDWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeApplicationWithCompletionHandler:
     (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationWithCompletion:completionHandler];
+    [self readAttributeApplicationWithCompletion:^(
+        MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApplicationWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105608,7 +113706,12 @@ - (void)subscribeAttributeApplicationWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeApplicationWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
+                                        NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(
+                                            static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -105617,15 +113720,24 @@ + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *
                                      (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:completionHandler];
+    [self
+        readAttributeApplicationWithAttributeCache:attributeCacheContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
+                                            NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(
+                                                static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithCompletion:completionHandler];
+    [self readAttributeStatusWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105642,20 +113754,32 @@ - (void)subscribeAttributeStatusWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeStatusWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeStatusWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeApplicationVersionWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationVersionWithCompletion:completionHandler];
+    [self readAttributeApplicationVersionWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApplicationVersionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105674,7 +113798,10 @@ - (void)subscribeAttributeApplicationVersionWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeApplicationVersionWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -105685,13 +113812,19 @@ + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeApplicationVersionWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeAllowedVendorListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAllowedVendorListWithCompletion:completionHandler];
+    [self readAttributeAllowedVendorListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeAllowedVendorListWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -105709,7 +113842,10 @@ - (void)readAttributeAllowedVendorListWithCompletionHandler:(void (^)(NSArray *
     }
     [self subscribeAttributeAllowedVendorListWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -105720,13 +113856,19 @@ + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeAllowedVendorListWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105745,7 +113887,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -105756,13 +113901,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105781,7 +113932,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -105792,13 +113946,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105815,7 +113975,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -105826,13 +113989,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105849,7 +114018,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -105859,13 +114031,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -105883,7 +114061,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -105894,7 +114075,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -106378,7 +114562,11 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params
             completionHandler:(void (^)(MTRAccountLoginClusterGetSetupPINResponseParams * _Nullable data,
                                   NSError * _Nullable error))completionHandler
 {
-    [self getSetupPINWithParams:params completion:completionHandler];
+    [self getSetupPINWithParams:params
+                     completion:^(MTRAccountLoginClusterGetSetupPINResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -106391,13 +114579,16 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params
 }
 - (void)logoutWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self logoutWithParams:nil completion:completionHandler];
+    [self logoutWithParams:nil completionHandler:completionHandler];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -106416,7 +114607,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -106427,13 +114621,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -106452,7 +114652,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -106463,13 +114666,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -106486,7 +114695,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -106497,13 +114709,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -106520,7 +114738,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -106530,13 +114751,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -106554,7 +114781,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -106565,7 +114795,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -116366,7 +124599,7 @@ - (void)getProfileInfoCommandWithParams:(MTRElectricalMeasurementClusterGetProfi
 }
 - (void)getProfileInfoCommandWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self getProfileInfoCommandWithParams:nil completion:completionHandler];
+    [self getProfileInfoCommandWithParams:nil completionHandler:completionHandler];
 }
 - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterGetMeasurementProfileCommandParams *)params
                              completionHandler:(MTRStatusCompletion)completionHandler
@@ -116377,7 +124610,10 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
 - (void)readAttributeMeasurementTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasurementTypeWithCompletion:completionHandler];
+    [self readAttributeMeasurementTypeWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasurementTypeWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116395,7 +124631,10 @@ - (void)subscribeAttributeMeasurementTypeWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeMeasurementTypeWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -116406,13 +124645,19 @@ + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeMeasurementTypeWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDcVoltageWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageWithCompletion:completionHandler];
+    [self readAttributeDcVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116429,7 +124674,10 @@ - (void)subscribeAttributeDcVoltageWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeDcVoltageWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -116439,13 +124687,19 @@ + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeDcVoltageWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeDcVoltageMinWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMinWithCompletion:completionHandler];
+    [self readAttributeDcVoltageMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcVoltageMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116462,7 +124716,10 @@ - (void)subscribeAttributeDcVoltageMinWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeDcVoltageMinWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -116473,13 +124730,19 @@ + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeDcVoltageMinWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcVoltageMaxWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMaxWithCompletion:completionHandler];
+    [self readAttributeDcVoltageMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcVoltageMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116496,7 +124759,10 @@ - (void)subscribeAttributeDcVoltageMaxWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeDcVoltageMaxWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -116507,13 +124773,19 @@ + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeDcVoltageMaxWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcCurrentWithCompletionHandler:(void (^)(
                                                         NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentWithCompletion:completionHandler];
+    [self readAttributeDcCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116530,7 +124802,10 @@ - (void)subscribeAttributeDcCurrentWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeDcCurrentWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -116540,13 +124815,19 @@ + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeDcCurrentWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeDcCurrentMinWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMinWithCompletion:completionHandler];
+    [self readAttributeDcCurrentMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcCurrentMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116563,7 +124844,10 @@ - (void)subscribeAttributeDcCurrentMinWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeDcCurrentMinWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -116574,13 +124858,19 @@ + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeDcCurrentMinWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcCurrentMaxWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMaxWithCompletion:completionHandler];
+    [self readAttributeDcCurrentMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcCurrentMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116597,7 +124887,10 @@ - (void)subscribeAttributeDcCurrentMaxWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributeDcCurrentMaxWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -116608,12 +124901,18 @@ + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeDcCurrentMaxWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerWithCompletion:completionHandler];
+    [self readAttributeDcPowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcPowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116630,7 +124929,10 @@ - (void)subscribeAttributeDcPowerWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeDcPowerWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -116640,13 +124942,19 @@ + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeDcPowerWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeDcPowerMinWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMinWithCompletion:completionHandler];
+    [self readAttributeDcPowerMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcPowerMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116663,7 +124971,10 @@ - (void)subscribeAttributeDcPowerMinWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeDcPowerMinWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -116673,13 +124984,19 @@ + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeDcPowerMinWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeDcPowerMaxWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMaxWithCompletion:completionHandler];
+    [self readAttributeDcPowerMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcPowerMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116696,7 +125013,10 @@ - (void)subscribeAttributeDcPowerMaxWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeDcPowerMaxWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -116706,13 +125026,19 @@ + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeDcPowerMaxWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeDcVoltageMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMultiplierWithCompletion:completionHandler];
+    [self readAttributeDcVoltageMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcVoltageMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116731,7 +125057,10 @@ - (void)subscribeAttributeDcVoltageMultiplierWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeDcVoltageMultiplierWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -116742,13 +125071,19 @@ + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeDcVoltageMultiplierWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeDcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageDivisorWithCompletion:completionHandler];
+    [self readAttributeDcVoltageDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeDcVoltageDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -116766,7 +125101,10 @@ - (void)readAttributeDcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeDcVoltageDivisorWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -116777,13 +125115,19 @@ + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeDcVoltageDivisorWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeDcCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMultiplierWithCompletion:completionHandler];
+    [self readAttributeDcCurrentMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcCurrentMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116802,7 +125146,10 @@ - (void)subscribeAttributeDcCurrentMultiplierWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeDcCurrentMultiplierWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -116813,13 +125160,19 @@ + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeDcCurrentMultiplierWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeDcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentDivisorWithCompletion:completionHandler];
+    [self readAttributeDcCurrentDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeDcCurrentDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -116837,7 +125190,10 @@ - (void)readAttributeDcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeDcCurrentDivisorWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -116848,13 +125204,19 @@ + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeDcCurrentDivisorWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeDcPowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMultiplierWithCompletion:completionHandler];
+    [self readAttributeDcPowerMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcPowerMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116873,7 +125235,10 @@ - (void)subscribeAttributeDcPowerMultiplierWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeDcPowerMultiplierWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -116884,13 +125249,19 @@ + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeDcPowerMultiplierWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeDcPowerDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerDivisorWithCompletion:completionHandler];
+    [self readAttributeDcPowerDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeDcPowerDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116908,7 +125279,10 @@ - (void)subscribeAttributeDcPowerDivisorWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeDcPowerDivisorWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -116919,13 +125293,19 @@ + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeDcPowerDivisorWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeAcFrequencyWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyWithCompletion:completionHandler];
+    [self readAttributeAcFrequencyWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcFrequencyWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116942,7 +125322,10 @@ - (void)subscribeAttributeAcFrequencyWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeAcFrequencyWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -116953,13 +125336,19 @@ + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeAcFrequencyWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeAcFrequencyMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMinWithCompletion:completionHandler];
+    [self readAttributeAcFrequencyMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcFrequencyMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -116977,7 +125366,10 @@ - (void)subscribeAttributeAcFrequencyMinWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeAcFrequencyMinWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -116988,13 +125380,19 @@ + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeAcFrequencyMinWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeAcFrequencyMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMaxWithCompletion:completionHandler];
+    [self readAttributeAcFrequencyMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcFrequencyMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117012,7 +125410,10 @@ - (void)subscribeAttributeAcFrequencyMaxWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeAcFrequencyMaxWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -117023,13 +125424,19 @@ + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeAcFrequencyMaxWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNeutralCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNeutralCurrentWithCompletion:completionHandler];
+    [self readAttributeNeutralCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeNeutralCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117047,7 +125454,10 @@ - (void)subscribeAttributeNeutralCurrentWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNeutralCurrentWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -117058,13 +125468,19 @@ + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNeutralCurrentWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeTotalActivePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalActivePowerWithCompletion:completionHandler];
+    [self readAttributeTotalActivePowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeTotalActivePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -117082,7 +125498,10 @@ - (void)readAttributeTotalActivePowerWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeTotalActivePowerWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -117093,13 +125512,19 @@ + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeTotalActivePowerWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTotalReactivePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalReactivePowerWithCompletion:completionHandler];
+    [self readAttributeTotalReactivePowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTotalReactivePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117118,7 +125543,10 @@ - (void)subscribeAttributeTotalReactivePowerWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeTotalReactivePowerWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -117129,13 +125557,19 @@ + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeTotalReactivePowerWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeTotalApparentPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalApparentPowerWithCompletion:completionHandler];
+    [self readAttributeTotalApparentPowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeTotalApparentPowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117154,7 +125588,10 @@ - (void)subscribeAttributeTotalApparentPowerWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeTotalApparentPowerWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -117165,13 +125602,19 @@ + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeTotalApparentPowerWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeMeasured1stHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured1stHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured1stHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured1stHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117190,7 +125633,10 @@ - (void)subscribeAttributeMeasured1stHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured1stHarmonicCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117201,13 +125647,19 @@ + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeMeasured1stHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured3rdHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured3rdHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117226,7 +125678,10 @@ - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured3rdHarmonicCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117237,13 +125692,19 @@ + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeMeasured5thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured5thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured5thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured5thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117262,7 +125723,10 @@ - (void)subscribeAttributeMeasured5thHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured5thHarmonicCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117273,13 +125737,19 @@ + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeMeasured5thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeMeasured7thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured7thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured7thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured7thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117298,7 +125768,10 @@ - (void)subscribeAttributeMeasured7thHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured7thHarmonicCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117309,13 +125782,19 @@ + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeMeasured7thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeMeasured9thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured9thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured9thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured9thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117334,7 +125813,10 @@ - (void)subscribeAttributeMeasured9thHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured9thHarmonicCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117345,13 +125827,19 @@ + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeMeasured9thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeMeasured11thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured11thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasured11thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasured11thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117370,7 +125858,10 @@ - (void)subscribeAttributeMeasured11thHarmonicCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeMeasured11thHarmonicCurrentWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -117381,13 +125872,19 @@ + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttribute
     [self readAttributeMeasured11thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117406,7 +125903,10 @@ - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithMinInterval:(NSNumb
     }
     [self subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -117417,13 +125917,19 @@ + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttri
     [self readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117442,7 +125948,10 @@ - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithMinInterval:(NSNumb
     }
     [self subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -117453,13 +125962,19 @@ + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttri
     [self readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117478,7 +125993,10 @@ - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithMinInterval:(NSNumb
     }
     [self subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -117489,13 +126007,19 @@ + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttri
     [self readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117514,7 +126038,10 @@ - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithMinInterval:(NSNumb
     }
     [self subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -117525,13 +126052,19 @@ + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttri
     [self readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117550,7 +126083,10 @@ - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithMinInterval:(NSNumb
     }
     [self subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -117561,13 +126097,19 @@ + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttri
     [self readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:completionHandler];
+    [self readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                               maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117586,7 +126128,10 @@ - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithMinInterval:(NSNum
     }
     [self subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:subscribeParams
                                                subscriptionEstablished:subscriptionEstablishedHandler
-                                                         reportHandler:reportHandler];
+                                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             reportHandler(static_cast(value), error);
+                                                         }];
 }
 + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                endpoint:(NSNumber *)endpoint
@@ -117597,13 +126142,19 @@ + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttr
     [self readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:attributeCacheContainer
                                                                  endpoint:endpoint
                                                                     queue:queue
-                                                               completion:completionHandler];
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeAcFrequencyMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMultiplierWithCompletion:completionHandler];
+    [self readAttributeAcFrequencyMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcFrequencyMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117622,7 +126173,10 @@ - (void)subscribeAttributeAcFrequencyMultiplierWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeAcFrequencyMultiplierWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -117633,13 +126187,19 @@ + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeAcFrequencyMultiplierWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeAcFrequencyDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyDivisorWithCompletion:completionHandler];
+    [self readAttributeAcFrequencyDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcFrequencyDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117658,7 +126218,10 @@ - (void)subscribeAttributeAcFrequencyDivisorWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeAcFrequencyDivisorWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -117669,13 +126232,19 @@ + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeAcFrequencyDivisorWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerMultiplierWithCompletion:completionHandler];
+    [self readAttributePowerMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117693,7 +126262,10 @@ - (void)subscribeAttributePowerMultiplierWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributePowerMultiplierWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -117704,13 +126276,19 @@ + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributePowerMultiplierWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePowerDivisorWithCompletionHandler:(void (^)(
                                                            NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerDivisorWithCompletion:completionHandler];
+    [self readAttributePowerDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117727,7 +126305,10 @@ - (void)subscribeAttributePowerDivisorWithMinInterval:(NSNumber * _Nonnull)minIn
     }
     [self subscribeAttributePowerDivisorWithParams:subscribeParams
                            subscriptionEstablished:subscriptionEstablishedHandler
-                                     reportHandler:reportHandler];
+                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         reportHandler(static_cast(value), error);
+                                     }];
 }
 + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                            endpoint:(NSNumber *)endpoint
@@ -117738,13 +126319,19 @@ + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributePowerDivisorWithAttributeCache:attributeCacheContainer
                                              endpoint:endpoint
                                                 queue:queue
-                                           completion:completionHandler];
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeHarmonicCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHarmonicCurrentMultiplierWithCompletion:completionHandler];
+    [self readAttributeHarmonicCurrentMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeHarmonicCurrentMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117763,7 +126350,10 @@ - (void)subscribeAttributeHarmonicCurrentMultiplierWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeHarmonicCurrentMultiplierWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -117774,13 +126364,19 @@ + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCa
     [self readAttributeHarmonicCurrentMultiplierWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhaseHarmonicCurrentMultiplierWithCompletion:completionHandler];
+    [self readAttributePhaseHarmonicCurrentMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117799,7 +126395,10 @@ - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithMinInterval:(NSNumbe
     }
     [self subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:subscribeParams
                                              subscriptionEstablished:subscriptionEstablishedHandler
-                                                       reportHandler:reportHandler];
+                                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           reportHandler(static_cast(value), error);
+                                                       }];
 }
 + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                              endpoint:(NSNumber *)endpoint
@@ -117810,13 +126409,19 @@ + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttrib
     [self readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:attributeCacheContainer
                                                                endpoint:endpoint
                                                                   queue:queue
-                                                             completion:completionHandler];
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeInstantaneousVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousVoltageWithCompletion:completionHandler];
+    [self readAttributeInstantaneousVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstantaneousVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117835,7 +126440,10 @@ - (void)subscribeAttributeInstantaneousVoltageWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeInstantaneousVoltageWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -117846,13 +126454,19 @@ + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeInstantaneousVoltageWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeInstantaneousLineCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousLineCurrentWithCompletion:completionHandler];
+    [self readAttributeInstantaneousLineCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstantaneousLineCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117871,7 +126485,10 @@ - (void)subscribeAttributeInstantaneousLineCurrentWithMinInterval:(NSNumber * _N
     }
     [self subscribeAttributeInstantaneousLineCurrentWithParams:subscribeParams
                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                 reportHandler:reportHandler];
+                                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     reportHandler(static_cast(value), error);
+                                                 }];
 }
 + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                        endpoint:(NSNumber *)endpoint
@@ -117882,13 +126499,19 @@ + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCac
     [self readAttributeInstantaneousLineCurrentWithAttributeCache:attributeCacheContainer
                                                          endpoint:endpoint
                                                             queue:queue
-                                                       completion:completionHandler];
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeInstantaneousActiveCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousActiveCurrentWithCompletion:completionHandler];
+    [self readAttributeInstantaneousActiveCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstantaneousActiveCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117907,7 +126530,10 @@ - (void)subscribeAttributeInstantaneousActiveCurrentWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeInstantaneousActiveCurrentWithParams:subscribeParams
                                          subscriptionEstablished:subscriptionEstablishedHandler
-                                                   reportHandler:reportHandler];
+                                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       reportHandler(static_cast(value), error);
+                                                   }];
 }
 + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                          endpoint:(NSNumber *)endpoint
@@ -117918,13 +126544,19 @@ + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeC
     [self readAttributeInstantaneousActiveCurrentWithAttributeCache:attributeCacheContainer
                                                            endpoint:endpoint
                                                               queue:queue
-                                                         completion:completionHandler];
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeInstantaneousReactiveCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousReactiveCurrentWithCompletion:completionHandler];
+    [self readAttributeInstantaneousReactiveCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstantaneousReactiveCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                           maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117943,7 +126575,10 @@ - (void)subscribeAttributeInstantaneousReactiveCurrentWithMinInterval:(NSNumber
     }
     [self subscribeAttributeInstantaneousReactiveCurrentWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -117954,13 +126589,19 @@ + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttribut
     [self readAttributeInstantaneousReactiveCurrentWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeInstantaneousPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousPowerWithCompletion:completionHandler];
+    [self readAttributeInstantaneousPowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeInstantaneousPowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -117979,7 +126620,10 @@ - (void)subscribeAttributeInstantaneousPowerWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeInstantaneousPowerWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -117990,13 +126634,19 @@ + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeInstantaneousPowerWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeRmsVoltageWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118013,7 +126663,10 @@ - (void)subscribeAttributeRmsVoltageWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeRmsVoltageWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -118023,13 +126676,19 @@ + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeRmsVoltageWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeRmsVoltageMinWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118047,7 +126706,10 @@ - (void)subscribeAttributeRmsVoltageMinWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRmsVoltageMinWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118058,13 +126720,19 @@ + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRmsVoltageMinWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsVoltageMaxWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118082,7 +126750,10 @@ - (void)subscribeAttributeRmsVoltageMaxWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRmsVoltageMaxWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118093,13 +126764,19 @@ + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRmsVoltageMaxWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsCurrentWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118116,7 +126793,10 @@ - (void)subscribeAttributeRmsCurrentWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeRmsCurrentWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -118126,13 +126806,19 @@ + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeRmsCurrentWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeRmsCurrentMinWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118150,7 +126836,10 @@ - (void)subscribeAttributeRmsCurrentMinWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRmsCurrentMinWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118161,13 +126850,19 @@ + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRmsCurrentMinWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsCurrentMaxWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118185,7 +126880,10 @@ - (void)subscribeAttributeRmsCurrentMaxWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRmsCurrentMaxWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118196,13 +126894,19 @@ + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRmsCurrentMaxWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeActivePowerWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerWithCompletion:completionHandler];
+    [self readAttributeActivePowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118219,7 +126923,10 @@ - (void)subscribeAttributeActivePowerWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeActivePowerWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -118230,13 +126937,19 @@ + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeActivePowerWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeActivePowerMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinWithCompletion:completionHandler];
+    [self readAttributeActivePowerMinWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMinWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118254,7 +126967,10 @@ - (void)subscribeAttributeActivePowerMinWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeActivePowerMinWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -118265,13 +126981,19 @@ + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeActivePowerMinWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeActivePowerMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxWithCompletion:completionHandler];
+    [self readAttributeActivePowerMaxWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMaxWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118289,7 +127011,10 @@ - (void)subscribeAttributeActivePowerMaxWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeActivePowerMaxWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -118300,13 +127025,19 @@ + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeActivePowerMaxWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeReactivePowerWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerWithCompletion:completionHandler];
+    [self readAttributeReactivePowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReactivePowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118324,7 +127055,10 @@ - (void)subscribeAttributeReactivePowerWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeReactivePowerWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118335,13 +127069,19 @@ + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeReactivePowerWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeApparentPowerWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerWithCompletion:completionHandler];
+    [self readAttributeApparentPowerWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApparentPowerWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118359,7 +127099,10 @@ - (void)subscribeAttributeApparentPowerWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeApparentPowerWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -118370,13 +127113,19 @@ + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeApparentPowerWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributePowerFactorWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorWithCompletion:completionHandler];
+    [self readAttributePowerFactorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerFactorWithMinInterval:(NSNumber * _Nonnull)minInterval
                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118393,7 +127142,10 @@ - (void)subscribeAttributePowerFactorWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributePowerFactorWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -118404,13 +127156,19 @@ + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributePowerFactorWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion:completionHandler];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSNumber * _Nonnull)value
                                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -118440,7 +127198,10 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithMinInterval:(NSN
     }
     [self subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -118448,16 +127209,23 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterWithCompletion:completionHandler];
+    [self readAttributeAverageRmsUnderVoltageCounterWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSNumber * _Nonnull)value
                                            completionHandler:(MTRStatusCompletion)completionHandler
@@ -118487,7 +127255,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithMinInterval:(NSNumber
     }
     [self subscribeAttributeAverageRmsUnderVoltageCounterWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -118498,13 +127269,19 @@ + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttribu
     [self readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeOverVoltagePeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSNumber * _Nonnull)value
                                          completionHandler:(MTRStatusCompletion)completionHandler
@@ -118534,7 +127311,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -118545,13 +127325,19 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttribute
     [self readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeUnderVoltagePeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSNumber * _Nonnull)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -118581,7 +127367,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithMinInterval:(NSNumber
     }
     [self subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -118592,13 +127381,19 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttribut
     [self readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSagPeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -118628,7 +127423,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsVoltageSagPeriodWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -118639,13 +127437,19 @@ + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsVoltageSagPeriodWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSwellPeriodWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSNumber * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -118675,7 +127479,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeRmsVoltageSwellPeriodWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -118686,13 +127493,19 @@ + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeRmsVoltageSwellPeriodWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeAcVoltageMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageMultiplierWithCompletion:completionHandler];
+    [self readAttributeAcVoltageMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcVoltageMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118711,7 +127524,10 @@ - (void)subscribeAttributeAcVoltageMultiplierWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcVoltageMultiplierWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -118722,13 +127538,19 @@ + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcVoltageMultiplierWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageDivisorWithCompletion:completionHandler];
+    [self readAttributeAcVoltageDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeAcVoltageDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -118746,7 +127568,10 @@ - (void)readAttributeAcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeAcVoltageDivisorWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -118757,13 +127582,19 @@ + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeAcVoltageDivisorWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeAcCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentMultiplierWithCompletion:completionHandler];
+    [self readAttributeAcCurrentMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcCurrentMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118782,7 +127613,10 @@ - (void)subscribeAttributeAcCurrentMultiplierWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcCurrentMultiplierWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -118793,13 +127627,19 @@ + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcCurrentMultiplierWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentDivisorWithCompletion:completionHandler];
+    [self readAttributeAcCurrentDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeAcCurrentDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -118817,7 +127657,10 @@ - (void)readAttributeAcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeAcCurrentDivisorWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -118828,13 +127671,19 @@ + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeAcCurrentDivisorWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeAcPowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcPowerMultiplierWithCompletion:completionHandler];
+    [self readAttributeAcPowerMultiplierWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcPowerMultiplierWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118853,7 +127702,10 @@ - (void)subscribeAttributeAcPowerMultiplierWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeAcPowerMultiplierWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -118864,13 +127716,19 @@ + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeAcPowerMultiplierWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAcPowerDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcPowerDivisorWithCompletion:completionHandler];
+    [self readAttributeAcPowerDivisorWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcPowerDivisorWithMinInterval:(NSNumber * _Nonnull)minInterval
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118888,7 +127746,10 @@ - (void)subscribeAttributeAcPowerDivisorWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeAcPowerDivisorWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -118899,13 +127760,19 @@ + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeAcPowerDivisorWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOverloadAlarmsMaskWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverloadAlarmsMaskWithCompletion:completionHandler];
+    [self readAttributeOverloadAlarmsMaskWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -118935,7 +127802,10 @@ - (void)subscribeAttributeOverloadAlarmsMaskWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeOverloadAlarmsMaskWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -118946,13 +127816,19 @@ + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeOverloadAlarmsMaskWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeVoltageOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVoltageOverloadWithCompletion:completionHandler];
+    [self readAttributeVoltageOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeVoltageOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -118970,7 +127846,10 @@ - (void)subscribeAttributeVoltageOverloadWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeVoltageOverloadWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -118981,13 +127860,19 @@ + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeVoltageOverloadWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCurrentOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentOverloadWithCompletion:completionHandler];
+    [self readAttributeCurrentOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeCurrentOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119005,7 +127890,10 @@ - (void)subscribeAttributeCurrentOverloadWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeCurrentOverloadWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -119016,13 +127904,19 @@ + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeCurrentOverloadWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeAcOverloadAlarmsMaskWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcOverloadAlarmsMaskWithCompletion:completionHandler];
+    [self readAttributeAcOverloadAlarmsMaskWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -119052,7 +127946,10 @@ - (void)subscribeAttributeAcOverloadAlarmsMaskWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeAcOverloadAlarmsMaskWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -119063,13 +127960,19 @@ + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeAcOverloadAlarmsMaskWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcVoltageOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageOverloadWithCompletion:completionHandler];
+    [self readAttributeAcVoltageOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcVoltageOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119088,7 +127991,10 @@ - (void)subscribeAttributeAcVoltageOverloadWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeAcVoltageOverloadWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -119099,13 +128005,19 @@ + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeAcVoltageOverloadWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAcCurrentOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentOverloadWithCompletion:completionHandler];
+    [self readAttributeAcCurrentOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcCurrentOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119124,7 +128036,10 @@ - (void)subscribeAttributeAcCurrentOverloadWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeAcCurrentOverloadWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -119135,13 +128050,19 @@ + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeAcCurrentOverloadWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAcActivePowerOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcActivePowerOverloadWithCompletion:completionHandler];
+    [self readAttributeAcActivePowerOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcActivePowerOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119160,7 +128081,10 @@ - (void)subscribeAttributeAcActivePowerOverloadWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeAcActivePowerOverloadWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -119171,13 +128095,19 @@ + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeAcActivePowerOverloadWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeAcReactivePowerOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcReactivePowerOverloadWithCompletion:completionHandler];
+    [self readAttributeAcReactivePowerOverloadWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcReactivePowerOverloadWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                      maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119196,7 +128126,10 @@ - (void)subscribeAttributeAcReactivePowerOverloadWithMinInterval:(NSNumber * _No
     }
     [self subscribeAttributeAcReactivePowerOverloadWithParams:subscribeParams
                                       subscriptionEstablished:subscriptionEstablishedHandler
-                                                reportHandler:reportHandler];
+                                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    reportHandler(static_cast(value), error);
+                                                }];
 }
 + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                       endpoint:(NSNumber *)endpoint
@@ -119207,13 +128140,19 @@ + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCach
     [self readAttributeAcReactivePowerOverloadWithAttributeCache:attributeCacheContainer
                                                         endpoint:endpoint
                                                            queue:queue
-                                                      completion:completionHandler];
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageWithCompletion:completionHandler];
+    [self readAttributeAverageRmsOverVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsOverVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119232,7 +128171,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeAverageRmsOverVoltageWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -119243,13 +128185,19 @@ + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeAverageRmsOverVoltageWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageWithCompletion:completionHandler];
+    [self readAttributeAverageRmsUnderVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsUnderVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119268,7 +128216,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeAverageRmsUnderVoltageWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -119279,13 +128230,19 @@ + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCache
     [self readAttributeAverageRmsUnderVoltageWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltageWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeOverVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeOverVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119304,7 +128261,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltageWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeRmsExtremeOverVoltageWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -119315,13 +128275,19 @@ + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeRmsExtremeOverVoltageWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltageWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeUnderVoltageWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeUnderVoltageWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                     maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119340,7 +128306,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltageWithMinInterval:(NSNumber * _Non
     }
     [self subscribeAttributeRmsExtremeUnderVoltageWithParams:subscribeParams
                                      subscriptionEstablished:subscriptionEstablishedHandler
-                                               reportHandler:reportHandler];
+                                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   reportHandler(static_cast(value), error);
+                                               }];
 }
 + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                      endpoint:(NSNumber *)endpoint
@@ -119351,13 +128320,19 @@ + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCache
     [self readAttributeRmsExtremeUnderVoltageWithAttributeCache:attributeCacheContainer
                                                        endpoint:endpoint
                                                           queue:queue
-                                                     completion:completionHandler];
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsVoltageSagWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSagWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSagWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119375,7 +128350,10 @@ - (void)subscribeAttributeRmsVoltageSagWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeRmsVoltageSagWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -119386,13 +128364,19 @@ + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeRmsVoltageSagWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsVoltageSwellWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSwellWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSwellWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119410,7 +128394,10 @@ - (void)subscribeAttributeRmsVoltageSwellWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeRmsVoltageSwellWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -119421,13 +128408,19 @@ + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeRmsVoltageSwellWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeLineCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineCurrentPhaseBWithCompletion:completionHandler];
+    [self readAttributeLineCurrentPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLineCurrentPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119446,7 +128439,10 @@ - (void)subscribeAttributeLineCurrentPhaseBWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeLineCurrentPhaseBWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -119457,13 +128453,19 @@ + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeLineCurrentPhaseBWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActiveCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCurrentPhaseBWithCompletion:completionHandler];
+    [self readAttributeActiveCurrentPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveCurrentPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119482,7 +128484,10 @@ - (void)subscribeAttributeActiveCurrentPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeActiveCurrentPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119493,13 +128498,19 @@ + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeActiveCurrentPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeReactiveCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactiveCurrentPhaseBWithCompletion:completionHandler];
+    [self readAttributeReactiveCurrentPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReactiveCurrentPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119518,7 +128529,10 @@ - (void)subscribeAttributeReactiveCurrentPhaseBWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeReactiveCurrentPhaseBWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -119529,13 +128543,19 @@ + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeReactiveCurrentPhaseBWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRmsVoltagePhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltagePhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsVoltagePhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRmsVoltagePhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -119553,7 +128573,10 @@ - (void)readAttributeRmsVoltagePhaseBWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRmsVoltagePhaseBWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -119564,13 +128587,19 @@ + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRmsVoltagePhaseBWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsVoltageMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMinPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMinPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119589,7 +128618,10 @@ - (void)subscribeAttributeRmsVoltageMinPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsVoltageMinPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119600,13 +128632,19 @@ + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsVoltageMinPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsVoltageMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMaxPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMaxPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119625,7 +128663,10 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsVoltageMaxPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119636,13 +128677,19 @@ + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsVoltageMaxPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRmsCurrentPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -119660,7 +128707,10 @@ - (void)readAttributeRmsCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRmsCurrentPhaseBWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -119671,13 +128721,19 @@ + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRmsCurrentPhaseBWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsCurrentMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMinPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMinPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119696,7 +128752,10 @@ - (void)subscribeAttributeRmsCurrentMinPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsCurrentMinPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119707,13 +128766,19 @@ + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsCurrentMinPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMaxPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMaxPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119732,7 +128797,10 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsCurrentMaxPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119743,13 +128811,19 @@ + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsCurrentMaxPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeActivePowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerPhaseBWithCompletion:completionHandler];
+    [self readAttributeActivePowerPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119768,7 +128842,10 @@ - (void)subscribeAttributeActivePowerPhaseBWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeActivePowerPhaseBWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -119779,13 +128856,19 @@ + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeActivePowerPhaseBWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActivePowerMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinPhaseBWithCompletion:completionHandler];
+    [self readAttributeActivePowerMinPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMinPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119804,7 +128887,10 @@ - (void)subscribeAttributeActivePowerMinPhaseBWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeActivePowerMinPhaseBWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -119815,13 +128901,19 @@ + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeActivePowerMinPhaseBWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActivePowerMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxPhaseBWithCompletion:completionHandler];
+    [self readAttributeActivePowerMaxPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMaxPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119840,7 +128932,10 @@ - (void)subscribeAttributeActivePowerMaxPhaseBWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeActivePowerMaxPhaseBWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -119851,13 +128946,19 @@ + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeActivePowerMaxPhaseBWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeReactivePowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerPhaseBWithCompletion:completionHandler];
+    [self readAttributeReactivePowerPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReactivePowerPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119876,7 +128977,10 @@ - (void)subscribeAttributeReactivePowerPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeReactivePowerPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119887,13 +128991,19 @@ + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeReactivePowerPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeApparentPowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerPhaseBWithCompletion:completionHandler];
+    [self readAttributeApparentPowerPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApparentPowerPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119912,7 +129022,10 @@ - (void)subscribeAttributeApparentPowerPhaseBWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeApparentPowerPhaseBWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -119923,13 +129036,19 @@ + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeApparentPowerPhaseBWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributePowerFactorPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorPhaseBWithCompletion:completionHandler];
+    [self readAttributePowerFactorPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerFactorPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119948,7 +129067,10 @@ - (void)subscribeAttributePowerFactorPhaseBWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePowerFactorPhaseBWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -119959,13 +129081,20 @@ + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePowerFactorPhaseBWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:completionHandler];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -119984,7 +129113,11 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithMinInterva
     }
     [self subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119996,13 +129129,21 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
     [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:completionHandler];
+    [self readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120021,7 +129162,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithMinInterval:(NSN
     }
     [self subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -120029,16 +129173,23 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:completionHandler];
+    [self readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120057,7 +129208,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithMinInterval:(NS
     }
     [self subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:subscribeParams
                                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                                            reportHandler:reportHandler];
+                                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                reportHandler(static_cast(value), error);
+                                                            }];
 }
 + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                   endpoint:(NSNumber *)endpoint
@@ -120068,13 +129222,20 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRA
     [self readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:attributeCacheContainer
                                                                     endpoint:endpoint
                                                                        queue:queue
-                                                                  completion:completionHandler];
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120093,7 +129254,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithMinInterval:(NSNu
     }
     [self subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:subscribeParams
                                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                                          reportHandler:reportHandler];
+                                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              reportHandler(static_cast(value), error);
+                                                          }];
 }
 + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                 endpoint:(NSNumber *)endpoint
@@ -120101,16 +129265,23 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                                  endpoint:endpoint
-                                                                     queue:queue
-                                                                completion:completionHandler];
+    [self
+        readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120129,7 +129300,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithMinInterval:(NSN
     }
     [self subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -120137,16 +129311,23 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120165,7 +129346,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -120176,13 +129360,19 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCa
     [self readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120201,7 +129391,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -120212,13 +129405,19 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttribute
     [self readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeLineCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineCurrentPhaseCWithCompletion:completionHandler];
+    [self readAttributeLineCurrentPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeLineCurrentPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120237,7 +129436,10 @@ - (void)subscribeAttributeLineCurrentPhaseCWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeLineCurrentPhaseCWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -120248,13 +129450,19 @@ + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeLineCurrentPhaseCWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActiveCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCurrentPhaseCWithCompletion:completionHandler];
+    [self readAttributeActiveCurrentPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActiveCurrentPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120273,7 +129481,10 @@ - (void)subscribeAttributeActiveCurrentPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeActiveCurrentPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120284,13 +129495,19 @@ + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeActiveCurrentPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeReactiveCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactiveCurrentPhaseCWithCompletion:completionHandler];
+    [self readAttributeReactiveCurrentPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReactiveCurrentPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                    maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120309,7 +129526,10 @@ - (void)subscribeAttributeReactiveCurrentPhaseCWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeReactiveCurrentPhaseCWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -120320,13 +129540,19 @@ + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeReactiveCurrentPhaseCWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRmsVoltagePhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltagePhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsVoltagePhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRmsVoltagePhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -120344,7 +129570,10 @@ - (void)readAttributeRmsVoltagePhaseCWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRmsVoltagePhaseCWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -120355,13 +129584,19 @@ + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRmsVoltagePhaseCWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsVoltageMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMinPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMinPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120380,7 +129615,10 @@ - (void)subscribeAttributeRmsVoltageMinPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsVoltageMinPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120391,13 +129629,19 @@ + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsVoltageMinPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsVoltageMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageMaxPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageMaxPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120416,7 +129660,10 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsVoltageMaxPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120427,13 +129674,19 @@ + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsVoltageMaxPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)
     subscribeAttributeRmsCurrentPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -120451,7 +129704,10 @@ - (void)readAttributeRmsCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber *
     }
     [self subscribeAttributeRmsCurrentPhaseCWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -120462,13 +129718,19 @@ + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeRmsCurrentPhaseCWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsCurrentMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMinPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMinPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120487,7 +129749,10 @@ - (void)subscribeAttributeRmsCurrentMinPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsCurrentMinPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120498,13 +129763,19 @@ + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsCurrentMinPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsCurrentMaxPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsCurrentMaxPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120523,7 +129794,10 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeRmsCurrentMaxPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120534,13 +129808,19 @@ + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeRmsCurrentMaxPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeActivePowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerPhaseCWithCompletion:completionHandler];
+    [self readAttributeActivePowerPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120559,7 +129839,10 @@ - (void)subscribeAttributeActivePowerPhaseCWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeActivePowerPhaseCWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -120570,13 +129853,19 @@ + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeActivePowerPhaseCWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActivePowerMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinPhaseCWithCompletion:completionHandler];
+    [self readAttributeActivePowerMinPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMinPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120595,7 +129884,10 @@ - (void)subscribeAttributeActivePowerMinPhaseCWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeActivePowerMinPhaseCWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -120606,13 +129898,19 @@ + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeActivePowerMinPhaseCWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActivePowerMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxPhaseCWithCompletion:completionHandler];
+    [self readAttributeActivePowerMaxPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeActivePowerMaxPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120631,7 +129929,10 @@ - (void)subscribeAttributeActivePowerMaxPhaseCWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeActivePowerMaxPhaseCWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -120642,13 +129943,19 @@ + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeActivePowerMaxPhaseCWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeReactivePowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerPhaseCWithCompletion:completionHandler];
+    [self readAttributeReactivePowerPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeReactivePowerPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120667,7 +129974,10 @@ - (void)subscribeAttributeReactivePowerPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeReactivePowerPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120678,13 +129988,19 @@ + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeReactivePowerPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeApparentPowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerPhaseCWithCompletion:completionHandler];
+    [self readAttributeApparentPowerPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeApparentPowerPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120703,7 +130019,10 @@ - (void)subscribeAttributeApparentPowerPhaseCWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeApparentPowerPhaseCWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -120714,13 +130033,19 @@ + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeApparentPowerPhaseCWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributePowerFactorPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorPhaseCWithCompletion:completionHandler];
+    [self readAttributePowerFactorPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributePowerFactorPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120739,7 +130064,10 @@ - (void)subscribeAttributePowerFactorPhaseCWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributePowerFactorPhaseCWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -120750,13 +130078,20 @@ + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributePowerFactorPhaseCWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:completionHandler];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:^(
+        NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                       maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120775,7 +130110,11 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithMinInterva
     }
     [self subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:subscribeParams
                                                        subscriptionEstablished:subscriptionEstablishedHandler
-                                                                 reportHandler:reportHandler];
+                                                                 reportHandler:^(
+                                                                     NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                     // Cast is safe because subclass does not add any selectors.
+                                                                     reportHandler(static_cast(value), error);
+                                                                 }];
 }
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
             (MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120787,13 +130126,21 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
     [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:attributeCacheContainer
                                                                          endpoint:endpoint
                                                                             queue:queue
-                                                                       completion:completionHandler];
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:completionHandler];
+    [self readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120812,7 +130159,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithMinInterval:(NSN
     }
     [self subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -120820,16 +130170,23 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:completionHandler];
+    [self readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120848,7 +130205,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithMinInterval:(NS
     }
     [self subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:subscribeParams
                                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                                            reportHandler:reportHandler];
+                                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                reportHandler(static_cast(value), error);
+                                                            }];
 }
 + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                   endpoint:(NSNumber *)endpoint
@@ -120859,13 +130219,20 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRA
     [self readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:attributeCacheContainer
                                                                     endpoint:endpoint
                                                                        queue:queue
-                                                                  completion:completionHandler];
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120884,7 +130251,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithMinInterval:(NSNu
     }
     [self subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:subscribeParams
                                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                                          reportHandler:reportHandler];
+                                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              reportHandler(static_cast(value), error);
+                                                          }];
 }
 + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                 endpoint:(NSNumber *)endpoint
@@ -120892,16 +130262,23 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                                  endpoint:endpoint
-                                                                     queue:queue
-                                                                completion:completionHandler];
+    [self
+        readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                                 maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120920,7 +130297,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithMinInterval:(NSN
     }
     [self subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:subscribeParams
                                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                                           reportHandler:reportHandler];
+                                                           reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               reportHandler(static_cast(value), error);
+                                                           }];
 }
 + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                                  endpoint:(NSNumber *)endpoint
@@ -120928,16 +130308,23 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                                   endpoint:endpoint
-                                                                      queue:queue
-                                                                 completion:completionHandler];
+    [self
+        readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                        maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120956,7 +130343,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithMinInterval:(NSNumber * _
     }
     [self subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:subscribeParams
                                         subscriptionEstablished:subscriptionEstablishedHandler
-                                                  reportHandler:reportHandler];
+                                                  reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      reportHandler(static_cast(value), error);
+                                                  }];
 }
 + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                         endpoint:(NSNumber *)endpoint
@@ -120967,13 +130357,19 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCa
     [self readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:attributeCacheContainer
                                                           endpoint:endpoint
                                                              queue:queue
-                                                        completion:completionHandler];
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:completionHandler];
+    [self readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                          maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -120992,7 +130388,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithMinInterval:(NSNumber *
     }
     [self subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:subscribeParams
                                           subscriptionEstablished:subscriptionEstablishedHandler
-                                                    reportHandler:reportHandler];
+                                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        reportHandler(static_cast(value), error);
+                                                    }];
 }
 + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                           endpoint:(NSNumber *)endpoint
@@ -121003,13 +130402,19 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttribute
     [self readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:attributeCacheContainer
                                                             endpoint:endpoint
                                                                queue:queue
-                                                          completion:completionHandler];
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -121028,7 +130433,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -121039,13 +130447,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -121064,7 +130478,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -121075,13 +130492,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -121098,7 +130521,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -121109,13 +130535,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -121132,7 +130564,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -121142,13 +130577,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -121166,7 +130607,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -121177,7 +130621,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -132204,164 +141651,272 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
 
 @end
 
-@implementation MTRBaseClusterUnitTesting (Deprecated)
+@implementation MTRBaseClusterTestCluster
+@end
 
-- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
+@implementation MTRBaseClusterTestCluster (Deprecated)
+
+- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testWithParams:params completion:completionHandler];
 }
 - (void)testWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self testWithParams:nil completion:completionHandler];
+    [self testWithParams:nil completionHandler:completionHandler];
 }
-- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
                completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testNotHandledWithParams:params completion:completionHandler];
 }
 - (void)testNotHandledWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self testNotHandledWithParams:nil completion:completionHandler];
+    [self testNotHandledWithParams:nil completionHandler:completionHandler];
 }
-- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
-             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
+             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self testSpecificWithParams:params completion:completionHandler];
+    [self testSpecificWithParams:params
+                      completion:^(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
-- (void)testSpecificWithCompletionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+- (void)testSpecificWithCompletionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
-    [self testSpecificWithParams:nil completion:completionHandler];
+    [self testSpecificWithParams:nil completionHandler:completionHandler];
 }
-- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testUnknownCommandWithParams:params completion:completionHandler];
 }
 - (void)testUnknownCommandWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self testUnknownCommandWithParams:nil completion:completionHandler];
+    [self testUnknownCommandWithParams:nil completionHandler:completionHandler];
 }
-- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
+- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
+                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self testAddArgumentsWithParams:params completion:completionHandler];
+    [self testAddArgumentsWithParams:params
+                          completion:^(
+                              MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
-- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
-    [self testSimpleArgumentRequestWithParams:params completion:completionHandler];
+    [self testSimpleArgumentRequestWithParams:params
+                                   completion:^(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+                                       NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(
+                                           static_cast(data), error);
+                                   }];
 }
-- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
                                completionHandler:
-                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self testStructArrayArgumentRequestWithParams:params completion:completionHandler];
-}
-- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
-                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+    [self testStructArrayArgumentRequestWithParams:params
+                                        completion:^(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                            NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(
+                                                static_cast(data),
+                                                error);
+                                        }];
+}
+- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
+                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
-    [self testStructArgumentRequestWithParams:params completion:completionHandler];
+    [self testStructArgumentRequestWithParams:params
+                                   completion:^(
+                                       MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(data), error);
+                                   }];
 }
-- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
-                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
+                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
 {
-    [self testNestedStructArgumentRequestWithParams:params completion:completionHandler];
+    [self testNestedStructArgumentRequestWithParams:params
+                                         completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                             NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(
+                                                 static_cast(data), error);
+                                         }];
 }
-- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
-                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
+                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
 {
-    [self testListStructArgumentRequestWithParams:params completion:completionHandler];
+    [self
+        testListStructArgumentRequestWithParams:params
+                                     completion:^(
+                                         MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(data), error);
+                                     }];
 }
-- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
-                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
+                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
 {
-    [self testListInt8UArgumentRequestWithParams:params completion:completionHandler];
+    [self testListInt8UArgumentRequestWithParams:params
+                                      completion:^(
+                                          MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(data), error);
+                                      }];
 }
-- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
-                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
+                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
 {
-    [self testNestedStructListArgumentRequestWithParams:params completion:completionHandler];
+    [self testNestedStructListArgumentRequestWithParams:params
+                                             completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                                 NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(
+                                                     static_cast(data), error);
+                                             }];
 }
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
-                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
+                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self testListNestedStructListArgumentRequestWithParams:params completion:completionHandler];
+    [self testListNestedStructListArgumentRequestWithParams:params
+                                                 completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                                     NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(
+                                                         static_cast(data), error);
+                                                 }];
 }
-- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
+                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
-    [self testListInt8UReverseRequestWithParams:params completion:completionHandler];
+    [self testListInt8UReverseRequestWithParams:params
+                                     completion:^(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(
+                                             static_cast(data), error);
+                                     }];
 }
-- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
+- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
+                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self testEnumsRequestWithParams:params completion:completionHandler];
+    [self testEnumsRequestWithParams:params
+                          completion:^(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
-- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
+                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
-    [self testNullableOptionalRequestWithParams:params completion:completionHandler];
+    [self testNullableOptionalRequestWithParams:params
+                                     completion:^(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(
+                                             static_cast(data), error);
+                                     }];
 }
-- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
                                    completionHandler:
-                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
-    [self testComplexNullableOptionalRequestWithParams:params completion:completionHandler];
-}
-- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
-                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
+    [self testComplexNullableOptionalRequestWithParams:params
+                                            completion:^(
+                                                MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                                NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(
+                                                    static_cast(
+                                                        data),
+                                                    error);
+                                            }];
+}
+- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
+                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
-    [self simpleStructEchoRequestWithParams:params completion:completionHandler];
+    [self simpleStructEchoRequestWithParams:params
+                                 completion:^(
+                                     MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     completionHandler(static_cast(data), error);
+                                 }];
 }
-- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
                    completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self timedInvokeRequestWithParams:params completion:completionHandler];
 }
 - (void)timedInvokeRequestWithCompletionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self timedInvokeRequestWithParams:nil completion:completionHandler];
+    [self timedInvokeRequestWithParams:nil completionHandler:completionHandler];
 }
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                   completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self testSimpleOptionalArgumentRequestWithParams:params completion:completionHandler];
 }
-- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
-                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
+                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
 {
-    [self testEmitTestEventRequestWithParams:params completion:completionHandler];
+    [self testEmitTestEventRequestWithParams:params
+                                  completion:^(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+                                      NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(
+                                          static_cast(data), error);
+                                  }];
 }
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
                                      completionHandler:
                                          (void (^)(
-                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
-    [self testEmitTestFabricScopedEventRequestWithParams:params completion:completionHandler];
+    [self
+        testEmitTestFabricScopedEventRequestWithParams:params
+                                            completion:^(
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(
+                                                    static_cast(
+                                                        data),
+                                                    error);
+                                            }];
 }
 
 - (void)readAttributeBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBooleanWithCompletion:completionHandler];
+    [self readAttributeBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132388,7 +141943,10 @@ - (void)subscribeAttributeBooleanWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeBooleanWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -132398,12 +141956,18 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeBooleanWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeBitmap8WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap8WithCompletion:completionHandler];
+    [self readAttributeBitmap8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132430,7 +141994,10 @@ - (void)subscribeAttributeBitmap8WithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeBitmap8WithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -132440,13 +142007,19 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeBitmap8WithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeBitmap16WithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap16WithCompletion:completionHandler];
+    [self readAttributeBitmap16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132473,7 +142046,10 @@ - (void)subscribeAttributeBitmap16WithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeBitmap16WithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -132483,13 +142059,19 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeBitmap16WithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeBitmap32WithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap32WithCompletion:completionHandler];
+    [self readAttributeBitmap32WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132516,7 +142098,10 @@ - (void)subscribeAttributeBitmap32WithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeBitmap32WithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -132526,13 +142111,19 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeBitmap32WithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeBitmap64WithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap64WithCompletion:completionHandler];
+    [self readAttributeBitmap64WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132559,7 +142150,10 @@ - (void)subscribeAttributeBitmap64WithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeBitmap64WithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -132569,12 +142163,18 @@ + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeBitmap64WithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8uWithCompletion:completionHandler];
+    [self readAttributeInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132601,19 +142201,31 @@ - (void)subscribeAttributeInt8uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt8uWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt8uWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16uWithCompletion:completionHandler];
+    [self readAttributeInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132640,19 +142252,31 @@ - (void)subscribeAttributeInt16uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt16uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt16uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt24uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24uWithCompletion:completionHandler];
+    [self readAttributeInt24uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132679,19 +142303,31 @@ - (void)subscribeAttributeInt24uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt24uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt24uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt32uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32uWithCompletion:completionHandler];
+    [self readAttributeInt32uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132718,19 +142354,31 @@ - (void)subscribeAttributeInt32uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt32uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt32uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt40uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40uWithCompletion:completionHandler];
+    [self readAttributeInt40uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132757,19 +142405,31 @@ - (void)subscribeAttributeInt40uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt40uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt40uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt48uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48uWithCompletion:completionHandler];
+    [self readAttributeInt48uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132796,19 +142456,31 @@ - (void)subscribeAttributeInt48uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt48uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt48uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt56uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56uWithCompletion:completionHandler];
+    [self readAttributeInt56uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132835,19 +142507,31 @@ - (void)subscribeAttributeInt56uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt56uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt56uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt64uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64uWithCompletion:completionHandler];
+    [self readAttributeInt64uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132874,19 +142558,31 @@ - (void)subscribeAttributeInt64uWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt64uWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64uWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt64uWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8sWithCompletion:completionHandler];
+    [self readAttributeInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132913,19 +142609,31 @@ - (void)subscribeAttributeInt8sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt8sWithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt8sWithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16sWithCompletion:completionHandler];
+    [self readAttributeInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132952,19 +142660,31 @@ - (void)subscribeAttributeInt16sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt16sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt16sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt24sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24sWithCompletion:completionHandler];
+    [self readAttributeInt24sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -132991,19 +142711,31 @@ - (void)subscribeAttributeInt24sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt24sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt24sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt32sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32sWithCompletion:completionHandler];
+    [self readAttributeInt32sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133030,19 +142762,31 @@ - (void)subscribeAttributeInt32sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt32sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt32sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt40sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40sWithCompletion:completionHandler];
+    [self readAttributeInt40sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133069,19 +142813,31 @@ - (void)subscribeAttributeInt40sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt40sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt40sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt48sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48sWithCompletion:completionHandler];
+    [self readAttributeInt48sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133108,19 +142864,31 @@ - (void)subscribeAttributeInt48sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt48sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt48sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt56sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56sWithCompletion:completionHandler];
+    [self readAttributeInt56sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133147,19 +142915,31 @@ - (void)subscribeAttributeInt56sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt56sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt56sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeInt64sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64sWithCompletion:completionHandler];
+    [self readAttributeInt64sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133186,19 +142966,31 @@ - (void)subscribeAttributeInt64sWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeInt64sWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64sWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeInt64sWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeEnum8WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum8WithCompletion:completionHandler];
+    [self readAttributeEnum8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133225,19 +143017,31 @@ - (void)subscribeAttributeEnum8WithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeEnum8WithParams:subscribeParams
                     subscriptionEstablished:subscriptionEstablishedHandler
-                              reportHandler:reportHandler];
+                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  reportHandler(static_cast(value), error);
+                              }];
 }
 + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                     endpoint:(NSNumber *)endpoint
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum8WithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeEnum8WithAttributeCache:attributeCacheContainer
+                                      endpoint:endpoint
+                                         queue:queue
+                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        completionHandler(static_cast(value), error);
+                                    }];
 }
 
 - (void)readAttributeEnum16WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum16WithCompletion:completionHandler];
+    [self readAttributeEnum16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133264,20 +143068,32 @@ - (void)subscribeAttributeEnum16WithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeEnum16WithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum16WithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeEnum16WithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeFloatSingleWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFloatSingleWithCompletion:completionHandler];
+    [self readAttributeFloatSingleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133304,7 +143120,10 @@ - (void)subscribeAttributeFloatSingleWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeFloatSingleWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -133315,13 +143134,19 @@ + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeFloatSingleWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeFloatDoubleWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFloatDoubleWithCompletion:completionHandler];
+    [self readAttributeFloatDoubleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133348,7 +143173,10 @@ - (void)subscribeAttributeFloatDoubleWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeFloatDoubleWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -133359,13 +143187,19 @@ + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeFloatDoubleWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeOctetStringWithCompletionHandler:(void (^)(
                                                           NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOctetStringWithCompletion:completionHandler];
+    [self readAttributeOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133392,7 +143226,10 @@ - (void)subscribeAttributeOctetStringWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeOctetStringWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -133402,13 +143239,19 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeOctetStringWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeListInt8uWithCompletionHandler:(void (^)(
                                                         NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListInt8uWithCompletion:completionHandler];
+    [self readAttributeListInt8uWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133435,7 +143278,10 @@ - (void)subscribeAttributeListInt8uWithMinInterval:(NSNumber * _Nonnull)minInter
     }
     [self subscribeAttributeListInt8uWithParams:subscribeParams
                         subscriptionEstablished:subscriptionEstablishedHandler
-                                  reportHandler:reportHandler];
+                                  reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      reportHandler(static_cast(value), error);
+                                  }];
 }
 + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                         endpoint:(NSNumber *)endpoint
@@ -133445,13 +143291,19 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a
     [self readAttributeListInt8uWithAttributeCache:attributeCacheContainer
                                           endpoint:endpoint
                                              queue:queue
-                                        completion:completionHandler];
+                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeListOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListOctetStringWithCompletion:completionHandler];
+    [self readAttributeListOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133479,7 +143331,10 @@ - (void)subscribeAttributeListOctetStringWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeListOctetStringWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -133490,13 +143345,19 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeListOctetStringWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeListStructOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListStructOctetStringWithCompletion:completionHandler];
+    [self readAttributeListStructOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -133526,7 +143387,10 @@ - (void)subscribeAttributeListStructOctetStringWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeListStructOctetStringWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -133537,13 +143401,19 @@ + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeListStructOctetStringWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeLongOctetStringWithCompletionHandler:(void (^)(
                                                               NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLongOctetStringWithCompletion:completionHandler];
+    [self readAttributeLongOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133571,7 +143441,10 @@ - (void)subscribeAttributeLongOctetStringWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeLongOctetStringWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -133582,13 +143455,19 @@ + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeLongOctetStringWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCharStringWithCompletionHandler:(void (^)(
                                                          NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCharStringWithCompletion:completionHandler];
+    [self readAttributeCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133615,7 +143494,10 @@ - (void)subscribeAttributeCharStringWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeCharStringWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -133625,13 +143507,19 @@ + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeCharStringWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeLongCharStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLongCharStringWithCompletion:completionHandler];
+    [self readAttributeLongCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133659,7 +143547,10 @@ - (void)subscribeAttributeLongCharStringWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeLongCharStringWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -133670,12 +143561,18 @@ + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeLongCharStringWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeEpochUsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEpochUsWithCompletion:completionHandler];
+    [self readAttributeEpochUsWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133702,7 +143599,10 @@ - (void)subscribeAttributeEpochUsWithMinInterval:(NSNumber * _Nonnull)minInterva
     }
     [self subscribeAttributeEpochUsWithParams:subscribeParams
                       subscriptionEstablished:subscriptionEstablishedHandler
-                                reportHandler:reportHandler];
+                                reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    reportHandler(static_cast(value), error);
+                                }];
 }
 + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                       endpoint:(NSNumber *)endpoint
@@ -133712,12 +143612,18 @@ + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)att
     [self readAttributeEpochUsWithAttributeCache:attributeCacheContainer
                                         endpoint:endpoint
                                            queue:queue
-                                      completion:completionHandler];
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeEpochSWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEpochSWithCompletion:completionHandler];
+    [self readAttributeEpochSWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133744,20 +143650,32 @@ - (void)subscribeAttributeEpochSWithMinInterval:(NSNumber * _Nonnull)minInterval
     }
     [self subscribeAttributeEpochSWithParams:subscribeParams
                      subscriptionEstablished:subscriptionEstablishedHandler
-                               reportHandler:reportHandler];
+                               reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   reportHandler(static_cast(value), error);
+                               }];
 }
 + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                      endpoint:(NSNumber *)endpoint
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEpochSWithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:completionHandler];
+    [self readAttributeEpochSWithAttributeCache:attributeCacheContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeVendorIdWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIdWithCompletion:completionHandler];
+    [self readAttributeVendorIdWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133784,7 +143702,10 @@ - (void)subscribeAttributeVendorIdWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeVendorIdWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -133794,13 +143715,19 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeVendorIdWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeListNullablesAndOptionalsStructWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListNullablesAndOptionalsStructWithCompletion:completionHandler];
+    [self readAttributeListNullablesAndOptionalsStructWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnull)value
                                              completionHandler:(MTRStatusCompletion)completionHandler
@@ -133830,7 +143757,10 @@ - (void)subscribeAttributeListNullablesAndOptionalsStructWithMinInterval:(NSNumb
     }
     [self subscribeAttributeListNullablesAndOptionalsStructWithParams:subscribeParams
                                               subscriptionEstablished:subscriptionEstablishedHandler
-                                                        reportHandler:reportHandler];
+                                                        reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            reportHandler(static_cast(value), error);
+                                                        }];
 }
 + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                               endpoint:(NSNumber *)endpoint
@@ -133841,13 +143771,19 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri
     [self readAttributeListNullablesAndOptionalsStructWithAttributeCache:attributeCacheContainer
                                                                 endpoint:endpoint
                                                                    queue:queue
-                                                              completion:completionHandler];
+                                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeEnumAttrWithCompletionHandler:(void (^)(
                                                        NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnumAttrWithCompletion:completionHandler];
+    [self readAttributeEnumAttrWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133874,7 +143810,10 @@ - (void)subscribeAttributeEnumAttrWithMinInterval:(NSNumber * _Nonnull)minInterv
     }
     [self subscribeAttributeEnumAttrWithParams:subscribeParams
                        subscriptionEstablished:subscriptionEstablishedHandler
-                                 reportHandler:reportHandler];
+                                 reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     reportHandler(static_cast(value), error);
+                                 }];
 }
 + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                        endpoint:(NSNumber *)endpoint
@@ -133884,20 +143823,26 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
     [self readAttributeEnumAttrWithAttributeCache:attributeCacheContainer
                                          endpoint:endpoint
                                             queue:queue
-                                       completion:completionHandler];
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
-- (void)readAttributeStructAttrWithCompletionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+- (void)readAttributeStructAttrWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStructAttrWithCompletion:completionHandler];
+    [self readAttributeStructAttrWithCompletion:^(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
-- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self writeAttributeStructAttrWithValue:value params:nil completion:completionHandler];
 }
-- (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
+- (void)writeAttributeStructAttrWithValue:(MTRTestClusterClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -133907,7 +143852,7 @@ - (void)subscribeAttributeStructAttrWithMinInterval:(NSNumber * _Nonnull)minInte
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
                                              params:(MTRSubscribeParams * _Nullable)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                      reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                         NSError * _Nullable error))reportHandler
 {
     MTRSubscribeParams * _Nullable subscribeParams = [params copy];
@@ -133919,24 +143864,34 @@ - (void)subscribeAttributeStructAttrWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeStructAttrWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
                                             queue:(dispatch_queue_t)queue
-                                completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
 {
     [self readAttributeStructAttrWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(
+                                             MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeRangeRestrictedInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt8uWithCompletion:completionHandler];
+    [self readAttributeRangeRestrictedInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -133966,7 +143921,10 @@ - (void)subscribeAttributeRangeRestrictedInt8uWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeRangeRestrictedInt8uWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -133977,13 +143935,19 @@ + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeRangeRestrictedInt8uWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRangeRestrictedInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt8sWithCompletion:completionHandler];
+    [self readAttributeRangeRestrictedInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value
                                   completionHandler:(MTRStatusCompletion)completionHandler
@@ -134013,7 +143977,10 @@ - (void)subscribeAttributeRangeRestrictedInt8sWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeRangeRestrictedInt8sWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -134024,13 +143991,19 @@ + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeRangeRestrictedInt8sWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRangeRestrictedInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt16uWithCompletion:completionHandler];
+    [self readAttributeRangeRestrictedInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -134060,7 +144033,10 @@ - (void)subscribeAttributeRangeRestrictedInt16uWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeRangeRestrictedInt16uWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -134071,13 +144047,19 @@ + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeRangeRestrictedInt16uWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRangeRestrictedInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt16sWithCompletion:completionHandler];
+    [self readAttributeRangeRestrictedInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value
                                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -134107,7 +144089,10 @@ - (void)subscribeAttributeRangeRestrictedInt16sWithMinInterval:(NSNumber * _Nonn
     }
     [self subscribeAttributeRangeRestrictedInt16sWithParams:subscribeParams
                                     subscriptionEstablished:subscriptionEstablishedHandler
-                                              reportHandler:reportHandler];
+                                              reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  reportHandler(static_cast(value), error);
+                                              }];
 }
 + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                     endpoint:(NSNumber *)endpoint
@@ -134118,13 +144103,19 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC
     [self readAttributeRangeRestrictedInt16sWithAttributeCache:attributeCacheContainer
                                                       endpoint:endpoint
                                                          queue:queue
-                                                    completion:completionHandler];
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeListLongOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListLongOctetStringWithCompletion:completionHandler];
+    [self readAttributeListLongOctetStringWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -134154,7 +144145,10 @@ - (void)subscribeAttributeListLongOctetStringWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeListLongOctetStringWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -134165,13 +144159,20 @@ + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeListLongOctetStringWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)params
                               completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListFabricScopedWithParams:params completion:completionHandler];
+    [self readAttributeListFabricScopedWithParams:params
+                                       completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134199,7 +144200,10 @@ - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value
     }
     [self subscribeAttributeListFabricScopedWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -134210,13 +144214,19 @@ + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeListFabricScopedWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTimedWriteBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTimedWriteBooleanWithCompletion:completionHandler];
+    [self readAttributeTimedWriteBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134245,7 +144255,10 @@ - (void)subscribeAttributeTimedWriteBooleanWithMinInterval:(NSNumber * _Nonnull)
     }
     [self subscribeAttributeTimedWriteBooleanWithParams:subscribeParams
                                 subscriptionEstablished:subscriptionEstablishedHandler
-                                          reportHandler:reportHandler];
+                                          reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              reportHandler(static_cast(value), error);
+                                          }];
 }
 + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                 endpoint:(NSNumber *)endpoint
@@ -134256,13 +144269,19 @@ + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheConta
     [self readAttributeTimedWriteBooleanWithAttributeCache:attributeCacheContainer
                                                   endpoint:endpoint
                                                      queue:queue
-                                                completion:completionHandler];
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneralErrorBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneralErrorBooleanWithCompletion:completionHandler];
+    [self readAttributeGeneralErrorBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -134292,7 +144311,10 @@ - (void)subscribeAttributeGeneralErrorBooleanWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeGeneralErrorBooleanWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -134303,13 +144325,19 @@ + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeGeneralErrorBooleanWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeClusterErrorBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterErrorBooleanWithCompletion:completionHandler];
+    [self readAttributeClusterErrorBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -134339,7 +144367,10 @@ - (void)subscribeAttributeClusterErrorBooleanWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeClusterErrorBooleanWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -134350,13 +144381,19 @@ + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeClusterErrorBooleanWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeUnsupportedWithCompletionHandler:(void (^)(
                                                           NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnsupportedWithCompletion:completionHandler];
+    [self readAttributeUnsupportedWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134383,7 +144420,10 @@ - (void)subscribeAttributeUnsupportedWithMinInterval:(NSNumber * _Nonnull)minInt
     }
     [self subscribeAttributeUnsupportedWithParams:subscribeParams
                           subscriptionEstablished:subscriptionEstablishedHandler
-                                    reportHandler:reportHandler];
+                                    reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                        // Cast is safe because subclass does not add any selectors.
+                                        reportHandler(static_cast(value), error);
+                                    }];
 }
 + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                           endpoint:(NSNumber *)endpoint
@@ -134394,13 +144434,19 @@ + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *
     [self readAttributeUnsupportedWithAttributeCache:attributeCacheContainer
                                             endpoint:endpoint
                                                queue:queue
-                                          completion:completionHandler];
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeNullableBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBooleanWithCompletion:completionHandler];
+    [self readAttributeNullableBooleanWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134428,7 +144474,10 @@ - (void)subscribeAttributeNullableBooleanWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeNullableBooleanWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -134439,13 +144488,19 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeNullableBooleanWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeNullableBitmap8WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap8WithCompletion:completionHandler];
+    [self readAttributeNullableBitmap8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134473,7 +144528,10 @@ - (void)subscribeAttributeNullableBitmap8WithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeNullableBitmap8WithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -134484,13 +144542,19 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeNullableBitmap8WithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeNullableBitmap16WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap16WithCompletion:completionHandler];
+    [self readAttributeNullableBitmap16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134518,7 +144582,10 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value
     }
     [self subscribeAttributeNullableBitmap16WithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -134529,13 +144596,19 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeNullableBitmap16WithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableBitmap32WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap32WithCompletion:completionHandler];
+    [self readAttributeNullableBitmap32WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134563,7 +144636,10 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value
     }
     [self subscribeAttributeNullableBitmap32WithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -134574,13 +144650,19 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeNullableBitmap32WithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableBitmap64WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap64WithCompletion:completionHandler];
+    [self readAttributeNullableBitmap64WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134608,7 +144690,10 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value
     }
     [self subscribeAttributeNullableBitmap64WithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -134619,13 +144704,19 @@ + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeNullableBitmap64WithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableInt8uWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt8uWithCompletion:completionHandler];
+    [self readAttributeNullableInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134653,7 +144744,10 @@ - (void)subscribeAttributeNullableInt8uWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeNullableInt8uWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -134664,13 +144758,19 @@ + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeNullableInt8uWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeNullableInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt16uWithCompletion:completionHandler];
+    [self readAttributeNullableInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134698,7 +144798,10 @@ - (void)subscribeAttributeNullableInt16uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt16uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134709,13 +144812,19 @@ + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt16uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt24uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt24uWithCompletion:completionHandler];
+    [self readAttributeNullableInt24uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134743,7 +144852,10 @@ - (void)subscribeAttributeNullableInt24uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt24uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134754,13 +144866,19 @@ + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt24uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt32uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt32uWithCompletion:completionHandler];
+    [self readAttributeNullableInt32uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134788,7 +144906,10 @@ - (void)subscribeAttributeNullableInt32uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt32uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134799,13 +144920,19 @@ + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt32uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt40uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt40uWithCompletion:completionHandler];
+    [self readAttributeNullableInt40uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134833,7 +144960,10 @@ - (void)subscribeAttributeNullableInt40uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt40uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134844,13 +144974,19 @@ + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt40uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt48uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt48uWithCompletion:completionHandler];
+    [self readAttributeNullableInt48uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134878,7 +145014,10 @@ - (void)subscribeAttributeNullableInt48uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt48uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134889,13 +145028,19 @@ + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt48uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt56uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt56uWithCompletion:completionHandler];
+    [self readAttributeNullableInt56uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134923,7 +145068,10 @@ - (void)subscribeAttributeNullableInt56uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt56uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134934,13 +145082,19 @@ + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt56uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt64uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt64uWithCompletion:completionHandler];
+    [self readAttributeNullableInt64uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -134968,7 +145122,10 @@ - (void)subscribeAttributeNullableInt64uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt64uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -134979,13 +145136,19 @@ + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt64uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt8sWithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt8sWithCompletion:completionHandler];
+    [self readAttributeNullableInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135013,7 +145176,10 @@ - (void)subscribeAttributeNullableInt8sWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeNullableInt8sWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -135024,13 +145190,19 @@ + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeNullableInt8sWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeNullableInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt16sWithCompletion:completionHandler];
+    [self readAttributeNullableInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135058,7 +145230,10 @@ - (void)subscribeAttributeNullableInt16sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt16sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135069,13 +145244,19 @@ + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt16sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt24sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt24sWithCompletion:completionHandler];
+    [self readAttributeNullableInt24sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135103,7 +145284,10 @@ - (void)subscribeAttributeNullableInt24sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt24sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135114,13 +145298,19 @@ + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt24sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt32sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt32sWithCompletion:completionHandler];
+    [self readAttributeNullableInt32sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135148,7 +145338,10 @@ - (void)subscribeAttributeNullableInt32sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt32sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135159,13 +145352,19 @@ + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt32sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt40sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt40sWithCompletion:completionHandler];
+    [self readAttributeNullableInt40sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135193,7 +145392,10 @@ - (void)subscribeAttributeNullableInt40sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt40sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135204,13 +145406,19 @@ + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt40sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt48sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt48sWithCompletion:completionHandler];
+    [self readAttributeNullableInt48sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135238,7 +145446,10 @@ - (void)subscribeAttributeNullableInt48sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt48sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135249,13 +145460,19 @@ + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt48sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt56sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt56sWithCompletion:completionHandler];
+    [self readAttributeNullableInt56sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135283,7 +145500,10 @@ - (void)subscribeAttributeNullableInt56sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt56sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135294,13 +145514,19 @@ + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt56sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableInt64sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt64sWithCompletion:completionHandler];
+    [self readAttributeNullableInt64sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135328,7 +145554,10 @@ - (void)subscribeAttributeNullableInt64sWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableInt64sWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135339,13 +145568,19 @@ + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableInt64sWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableEnum8WithCompletionHandler:(void (^)(
                                                             NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnum8WithCompletion:completionHandler];
+    [self readAttributeNullableEnum8WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135373,7 +145608,10 @@ - (void)subscribeAttributeNullableEnum8WithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeNullableEnum8WithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -135384,13 +145622,19 @@ + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeNullableEnum8WithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeNullableEnum16WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnum16WithCompletion:completionHandler];
+    [self readAttributeNullableEnum16WithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135418,7 +145662,10 @@ - (void)subscribeAttributeNullableEnum16WithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableEnum16WithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135429,13 +145676,19 @@ + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeNullableEnum16WithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableFloatSingleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableFloatSingleWithCompletion:completionHandler];
+    [self readAttributeNullableFloatSingleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -135465,7 +145718,10 @@ - (void)subscribeAttributeNullableFloatSingleWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeNullableFloatSingleWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -135476,13 +145732,19 @@ + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeNullableFloatSingleWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableFloatDoubleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableFloatDoubleWithCompletion:completionHandler];
+    [self readAttributeNullableFloatDoubleWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -135512,7 +145774,10 @@ - (void)subscribeAttributeNullableFloatDoubleWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeNullableFloatDoubleWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -135523,13 +145788,19 @@ + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeNullableFloatDoubleWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableOctetStringWithCompletionHandler:(void (^)(NSData * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableOctetStringWithCompletion:completionHandler];
+    [self readAttributeNullableOctetStringWithCompletion:^(NSData * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value
                                  completionHandler:(MTRStatusCompletion)completionHandler
@@ -135559,7 +145830,10 @@ - (void)subscribeAttributeNullableOctetStringWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeNullableOctetStringWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -135570,13 +145844,19 @@ + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeNullableOctetStringWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableCharStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
                                                                  NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableCharStringWithCompletion:completionHandler];
+    [self readAttributeNullableCharStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value
                                 completionHandler:(MTRStatusCompletion)completionHandler
@@ -135606,7 +145886,10 @@ - (void)subscribeAttributeNullableCharStringWithMinInterval:(NSNumber * _Nonnull
     }
     [self subscribeAttributeNullableCharStringWithParams:subscribeParams
                                  subscriptionEstablished:subscriptionEstablishedHandler
-                                           reportHandler:reportHandler];
+                                           reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               reportHandler(static_cast(value), error);
+                                           }];
 }
 + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                  endpoint:(NSNumber *)endpoint
@@ -135617,13 +145900,19 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont
     [self readAttributeNullableCharStringWithAttributeCache:attributeCacheContainer
                                                    endpoint:endpoint
                                                       queue:queue
-                                                 completion:completionHandler];
+                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeNullableEnumAttrWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnumAttrWithCompletion:completionHandler];
+    [self readAttributeNullableEnumAttrWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135651,7 +145940,10 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value
     }
     [self subscribeAttributeNullableEnumAttrWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:reportHandler];
+                                         reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             reportHandler(static_cast(value), error);
+                                         }];
 }
 + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                endpoint:(NSNumber *)endpoint
@@ -135662,20 +145954,27 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
     [self readAttributeNullableEnumAttrWithAttributeCache:attributeCacheContainer
                                                  endpoint:endpoint
                                                     queue:queue
-                                               completion:completionHandler];
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
-- (void)readAttributeNullableStructWithCompletionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+- (void)readAttributeNullableStructWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableStructWithCompletion:completionHandler];
+    [self readAttributeNullableStructWithCompletion:^(
+        MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
-- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
                             completionHandler:(MTRStatusCompletion)completionHandler
 {
     [self writeAttributeNullableStructWithValue:value params:nil completion:completionHandler];
 }
-- (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
+- (void)writeAttributeNullableStructWithValue:(MTRTestClusterClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                             completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135685,7 +145984,7 @@ - (void)subscribeAttributeNullableStructWithMinInterval:(NSNumber * _Nonnull)min
                                             maxInterval:(NSNumber * _Nonnull)maxInterval
                                                  params:(MTRSubscribeParams * _Nullable)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
-                                          reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                          reportHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                             NSError * _Nullable error))reportHandler
 {
     MTRSubscribeParams * _Nullable subscribeParams = [params copy];
@@ -135697,24 +145996,35 @@ - (void)subscribeAttributeNullableStructWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeNullableStructWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(
+                                           MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
-                                    completionHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                    completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
     [self readAttributeNullableStructWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(
+                                                 MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt8uWithCompletion:completionHandler];
+    [self readAttributeNullableRangeRestrictedInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullable)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -135744,7 +146054,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8uWithMinInterval:(NSNumber
     }
     [self subscribeAttributeNullableRangeRestrictedInt8uWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -135755,13 +146068,19 @@ + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttribut
     [self readAttributeNullableRangeRestrictedInt8uWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt8sWithCompletion:completionHandler];
+    [self readAttributeNullableRangeRestrictedInt8sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullable)value
                                           completionHandler:(MTRStatusCompletion)completionHandler
@@ -135791,7 +146110,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8sWithMinInterval:(NSNumber
     }
     [self subscribeAttributeNullableRangeRestrictedInt8sWithParams:subscribeParams
                                            subscriptionEstablished:subscriptionEstablishedHandler
-                                                     reportHandler:reportHandler];
+                                                     reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         reportHandler(static_cast(value), error);
+                                                     }];
 }
 + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                            endpoint:(NSNumber *)endpoint
@@ -135802,13 +146124,19 @@ + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttribut
     [self readAttributeNullableRangeRestrictedInt8sWithAttributeCache:attributeCacheContainer
                                                              endpoint:endpoint
                                                                 queue:queue
-                                                           completion:completionHandler];
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt16uWithCompletion:completionHandler];
+    [self readAttributeNullableRangeRestrictedInt16uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullable)value
                                            completionHandler:(MTRStatusCompletion)completionHandler
@@ -135838,7 +146166,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16uWithMinInterval:(NSNumber
     }
     [self subscribeAttributeNullableRangeRestrictedInt16uWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -135849,13 +146180,19 @@ + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttribu
     [self readAttributeNullableRangeRestrictedInt16uWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt16sWithCompletion:completionHandler];
+    [self readAttributeNullableRangeRestrictedInt16sWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullable)value
                                            completionHandler:(MTRStatusCompletion)completionHandler
@@ -135885,7 +146222,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16sWithMinInterval:(NSNumber
     }
     [self subscribeAttributeNullableRangeRestrictedInt16sWithParams:subscribeParams
                                             subscriptionEstablished:subscriptionEstablishedHandler
-                                                      reportHandler:reportHandler];
+                                                      reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          reportHandler(static_cast(value), error);
+                                                      }];
 }
 + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                             endpoint:(NSNumber *)endpoint
@@ -135896,13 +146236,19 @@ + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttribu
     [self readAttributeNullableRangeRestrictedInt16sWithAttributeCache:attributeCacheContainer
                                                               endpoint:endpoint
                                                                  queue:queue
-                                                            completion:completionHandler];
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeWriteOnlyInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWriteOnlyInt8uWithCompletion:completionHandler];
+    [self readAttributeWriteOnlyInt8uWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value completionHandler:(MTRStatusCompletion)completionHandler
 {
@@ -135930,7 +146276,10 @@ - (void)subscribeAttributeWriteOnlyInt8uWithMinInterval:(NSNumber * _Nonnull)min
     }
     [self subscribeAttributeWriteOnlyInt8uWithParams:subscribeParams
                              subscriptionEstablished:subscriptionEstablishedHandler
-                                       reportHandler:reportHandler];
+                                       reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           reportHandler(static_cast(value), error);
+                                       }];
 }
 + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
@@ -135941,13 +146290,19 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine
     [self readAttributeWriteOnlyInt8uWithAttributeCache:attributeCacheContainer
                                                endpoint:endpoint
                                                   queue:queue
-                                             completion:completionHandler];
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithCompletion:completionHandler];
+    [self readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                   maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -135966,7 +146321,10 @@ - (void)subscribeAttributeGeneratedCommandListWithMinInterval:(NSNumber * _Nonnu
     }
     [self subscribeAttributeGeneratedCommandListWithParams:subscribeParams
                                    subscriptionEstablished:subscriptionEstablishedHandler
-                                             reportHandler:reportHandler];
+                                             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 reportHandler(static_cast(value), error);
+                                             }];
 }
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                    endpoint:(NSNumber *)endpoint
@@ -135977,13 +146335,19 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
     [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
                                                      endpoint:endpoint
                                                         queue:queue
-                                                   completion:completionHandler];
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
                                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithCompletion:completionHandler];
+    [self readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                                  maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -136002,7 +146366,10 @@ - (void)subscribeAttributeAcceptedCommandListWithMinInterval:(NSNumber * _Nonnul
     }
     [self subscribeAttributeAcceptedCommandListWithParams:subscribeParams
                                   subscriptionEstablished:subscriptionEstablishedHandler
-                                            reportHandler:reportHandler];
+                                            reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                reportHandler(static_cast(value), error);
+                                            }];
 }
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                                   endpoint:(NSNumber *)endpoint
@@ -136013,13 +146380,19 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
     [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:completionHandler];
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
                                                             NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithCompletion:completionHandler];
+    [self readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minInterval
                                            maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -136036,7 +146409,10 @@ - (void)subscribeAttributeAttributeListWithMinInterval:(NSNumber * _Nonnull)minI
     }
     [self subscribeAttributeAttributeListWithParams:subscribeParams
                             subscriptionEstablished:subscriptionEstablishedHandler
-                                      reportHandler:reportHandler];
+                                      reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          reportHandler(static_cast(value), error);
+                                      }];
 }
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                             endpoint:(NSNumber *)endpoint
@@ -136047,13 +146423,19 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
     [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
                                               endpoint:endpoint
                                                  queue:queue
-                                            completion:completionHandler];
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
                                                          NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithCompletion:completionHandler];
+    [self readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInterval
                                         maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -136070,7 +146452,10 @@ - (void)subscribeAttributeFeatureMapWithMinInterval:(NSNumber * _Nonnull)minInte
     }
     [self subscribeAttributeFeatureMapWithParams:subscribeParams
                          subscriptionEstablished:subscriptionEstablishedHandler
-                                   reportHandler:reportHandler];
+                                   reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       reportHandler(static_cast(value), error);
+                                   }];
 }
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                          endpoint:(NSNumber *)endpoint
@@ -136080,13 +146465,19 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
     [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
                                            endpoint:endpoint
                                               queue:queue
-                                         completion:completionHandler];
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithCompletion:completionHandler];
+    [self readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+        // Cast is safe because subclass does not add any selectors.
+        completionHandler(static_cast(value), error);
+    }];
 }
 - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)minInterval
                                              maxInterval:(NSNumber * _Nonnull)maxInterval
@@ -136104,7 +146495,10 @@ - (void)subscribeAttributeClusterRevisionWithMinInterval:(NSNumber * _Nonnull)mi
     }
     [self subscribeAttributeClusterRevisionWithParams:subscribeParams
                               subscriptionEstablished:subscriptionEstablishedHandler
-                                        reportHandler:reportHandler];
+                                        reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            reportHandler(static_cast(value), error);
+                                        }];
 }
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                               endpoint:(NSNumber *)endpoint
@@ -136115,7 +146509,10 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
     [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
                                                 endpoint:endpoint
                                                    queue:queue
-                                              completion:completionHandler];
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 8b74552d362f42..376d759c424220 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -90,7 +90,8 @@ typedef NS_ENUM(uint32_t, MTRClusterIDType) {
     MTRClusterApplicationBasicID = 0x0000050D,
     MTRClusterAccountLoginID = 0x0000050E,
     MTRClusterElectricalMeasurementID = 0x00000B04,
-    MTRClusterUnitTestingID = 0xFFF1FC05,
+    MTRClusterUnitTestingID MTR_NEWLY_AVAILABLE = 0xFFF1FC05,
+    MTRClusterTestClusterID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingID") = 0xFFF1FC05,
     MTRClusterFaultInjectionID = 0xFFF1FC06,
 };
 
@@ -1279,94 +1280,270 @@ typedef NS_ENUM(uint32_t, MTRClusterAttributeIDType) {
     MTRClusterElectricalMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster UnitTesting attributes
-    MTRClusterUnitTestingAttributeBooleanID = 0x00000000,
-    MTRClusterUnitTestingAttributeBitmap8ID = 0x00000001,
-    MTRClusterUnitTestingAttributeBitmap16ID = 0x00000002,
-    MTRClusterUnitTestingAttributeBitmap32ID = 0x00000003,
-    MTRClusterUnitTestingAttributeBitmap64ID = 0x00000004,
-    MTRClusterUnitTestingAttributeInt8uID = 0x00000005,
-    MTRClusterUnitTestingAttributeInt16uID = 0x00000006,
-    MTRClusterUnitTestingAttributeInt24uID = 0x00000007,
-    MTRClusterUnitTestingAttributeInt32uID = 0x00000008,
-    MTRClusterUnitTestingAttributeInt40uID = 0x00000009,
-    MTRClusterUnitTestingAttributeInt48uID = 0x0000000A,
-    MTRClusterUnitTestingAttributeInt56uID = 0x0000000B,
-    MTRClusterUnitTestingAttributeInt64uID = 0x0000000C,
-    MTRClusterUnitTestingAttributeInt8sID = 0x0000000D,
-    MTRClusterUnitTestingAttributeInt16sID = 0x0000000E,
-    MTRClusterUnitTestingAttributeInt24sID = 0x0000000F,
-    MTRClusterUnitTestingAttributeInt32sID = 0x00000010,
-    MTRClusterUnitTestingAttributeInt40sID = 0x00000011,
-    MTRClusterUnitTestingAttributeInt48sID = 0x00000012,
-    MTRClusterUnitTestingAttributeInt56sID = 0x00000013,
-    MTRClusterUnitTestingAttributeInt64sID = 0x00000014,
-    MTRClusterUnitTestingAttributeEnum8ID = 0x00000015,
-    MTRClusterUnitTestingAttributeEnum16ID = 0x00000016,
-    MTRClusterUnitTestingAttributeFloatSingleID = 0x00000017,
-    MTRClusterUnitTestingAttributeFloatDoubleID = 0x00000018,
-    MTRClusterUnitTestingAttributeOctetStringID = 0x00000019,
-    MTRClusterUnitTestingAttributeListInt8uID = 0x0000001A,
-    MTRClusterUnitTestingAttributeListOctetStringID = 0x0000001B,
-    MTRClusterUnitTestingAttributeListStructOctetStringID = 0x0000001C,
-    MTRClusterUnitTestingAttributeLongOctetStringID = 0x0000001D,
-    MTRClusterUnitTestingAttributeCharStringID = 0x0000001E,
-    MTRClusterUnitTestingAttributeLongCharStringID = 0x0000001F,
-    MTRClusterUnitTestingAttributeEpochUsID = 0x00000020,
-    MTRClusterUnitTestingAttributeEpochSID = 0x00000021,
-    MTRClusterUnitTestingAttributeVendorIdID = 0x00000022,
-    MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID = 0x00000023,
-    MTRClusterUnitTestingAttributeEnumAttrID = 0x00000024,
-    MTRClusterUnitTestingAttributeStructAttrID = 0x00000025,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt8uID = 0x00000026,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt8sID = 0x00000027,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt16uID = 0x00000028,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt16sID = 0x00000029,
-    MTRClusterUnitTestingAttributeListLongOctetStringID = 0x0000002A,
-    MTRClusterUnitTestingAttributeListFabricScopedID = 0x0000002B,
-    MTRClusterUnitTestingAttributeTimedWriteBooleanID = 0x00000030,
-    MTRClusterUnitTestingAttributeGeneralErrorBooleanID = 0x00000031,
-    MTRClusterUnitTestingAttributeClusterErrorBooleanID = 0x00000032,
-    MTRClusterUnitTestingAttributeUnsupportedID = 0x000000FF,
-    MTRClusterUnitTestingAttributeNullableBooleanID = 0x00004000,
-    MTRClusterUnitTestingAttributeNullableBitmap8ID = 0x00004001,
-    MTRClusterUnitTestingAttributeNullableBitmap16ID = 0x00004002,
-    MTRClusterUnitTestingAttributeNullableBitmap32ID = 0x00004003,
-    MTRClusterUnitTestingAttributeNullableBitmap64ID = 0x00004004,
-    MTRClusterUnitTestingAttributeNullableInt8uID = 0x00004005,
-    MTRClusterUnitTestingAttributeNullableInt16uID = 0x00004006,
-    MTRClusterUnitTestingAttributeNullableInt24uID = 0x00004007,
-    MTRClusterUnitTestingAttributeNullableInt32uID = 0x00004008,
-    MTRClusterUnitTestingAttributeNullableInt40uID = 0x00004009,
-    MTRClusterUnitTestingAttributeNullableInt48uID = 0x0000400A,
-    MTRClusterUnitTestingAttributeNullableInt56uID = 0x0000400B,
-    MTRClusterUnitTestingAttributeNullableInt64uID = 0x0000400C,
-    MTRClusterUnitTestingAttributeNullableInt8sID = 0x0000400D,
-    MTRClusterUnitTestingAttributeNullableInt16sID = 0x0000400E,
-    MTRClusterUnitTestingAttributeNullableInt24sID = 0x0000400F,
-    MTRClusterUnitTestingAttributeNullableInt32sID = 0x00004010,
-    MTRClusterUnitTestingAttributeNullableInt40sID = 0x00004011,
-    MTRClusterUnitTestingAttributeNullableInt48sID = 0x00004012,
-    MTRClusterUnitTestingAttributeNullableInt56sID = 0x00004013,
-    MTRClusterUnitTestingAttributeNullableInt64sID = 0x00004014,
-    MTRClusterUnitTestingAttributeNullableEnum8ID = 0x00004015,
-    MTRClusterUnitTestingAttributeNullableEnum16ID = 0x00004016,
-    MTRClusterUnitTestingAttributeNullableFloatSingleID = 0x00004017,
-    MTRClusterUnitTestingAttributeNullableFloatDoubleID = 0x00004018,
-    MTRClusterUnitTestingAttributeNullableOctetStringID = 0x00004019,
-    MTRClusterUnitTestingAttributeNullableCharStringID = 0x0000401E,
-    MTRClusterUnitTestingAttributeNullableEnumAttrID = 0x00004024,
-    MTRClusterUnitTestingAttributeNullableStructID = 0x00004025,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID = 0x00004026,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID = 0x00004027,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID = 0x00004028,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID = 0x00004029,
-    MTRClusterUnitTestingAttributeWriteOnlyInt8uID = 0x0000402A,
+    MTRClusterUnitTestingAttributeBooleanID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRClusterUnitTestingAttributeBitmap8ID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRClusterUnitTestingAttributeBitmap16ID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRClusterUnitTestingAttributeBitmap32ID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRClusterUnitTestingAttributeBitmap64ID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRClusterUnitTestingAttributeInt8uID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRClusterUnitTestingAttributeInt16uID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRClusterUnitTestingAttributeInt24uID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRClusterUnitTestingAttributeInt32uID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRClusterUnitTestingAttributeInt40uID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRClusterUnitTestingAttributeInt48uID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRClusterUnitTestingAttributeInt56uID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRClusterUnitTestingAttributeInt64uID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRClusterUnitTestingAttributeInt8sID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRClusterUnitTestingAttributeInt16sID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRClusterUnitTestingAttributeInt24sID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRClusterUnitTestingAttributeInt32sID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRClusterUnitTestingAttributeInt40sID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRClusterUnitTestingAttributeInt48sID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRClusterUnitTestingAttributeInt56sID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRClusterUnitTestingAttributeInt64sID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRClusterUnitTestingAttributeEnum8ID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRClusterUnitTestingAttributeEnum16ID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRClusterUnitTestingAttributeFloatSingleID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRClusterUnitTestingAttributeFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRClusterUnitTestingAttributeOctetStringID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRClusterUnitTestingAttributeListInt8uID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRClusterUnitTestingAttributeListOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRClusterUnitTestingAttributeListStructOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRClusterUnitTestingAttributeLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRClusterUnitTestingAttributeCharStringID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRClusterUnitTestingAttributeLongCharStringID MTR_NEWLY_AVAILABLE = 0x0000001F,
+    MTRClusterUnitTestingAttributeEpochUsID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRClusterUnitTestingAttributeEpochSID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRClusterUnitTestingAttributeVendorIdID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRClusterUnitTestingAttributeEnumAttrID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRClusterUnitTestingAttributeStructAttrID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00000026,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00000027,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRClusterUnitTestingAttributeRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRClusterUnitTestingAttributeListLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRClusterUnitTestingAttributeListFabricScopedID MTR_NEWLY_AVAILABLE = 0x0000002B,
+    MTRClusterUnitTestingAttributeTimedWriteBooleanID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRClusterUnitTestingAttributeGeneralErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRClusterUnitTestingAttributeClusterErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRClusterUnitTestingAttributeUnsupportedID MTR_NEWLY_AVAILABLE = 0x000000FF,
+    MTRClusterUnitTestingAttributeNullableBooleanID MTR_NEWLY_AVAILABLE = 0x00004000,
+    MTRClusterUnitTestingAttributeNullableBitmap8ID MTR_NEWLY_AVAILABLE = 0x00004001,
+    MTRClusterUnitTestingAttributeNullableBitmap16ID MTR_NEWLY_AVAILABLE = 0x00004002,
+    MTRClusterUnitTestingAttributeNullableBitmap32ID MTR_NEWLY_AVAILABLE = 0x00004003,
+    MTRClusterUnitTestingAttributeNullableBitmap64ID MTR_NEWLY_AVAILABLE = 0x00004004,
+    MTRClusterUnitTestingAttributeNullableInt8uID MTR_NEWLY_AVAILABLE = 0x00004005,
+    MTRClusterUnitTestingAttributeNullableInt16uID MTR_NEWLY_AVAILABLE = 0x00004006,
+    MTRClusterUnitTestingAttributeNullableInt24uID MTR_NEWLY_AVAILABLE = 0x00004007,
+    MTRClusterUnitTestingAttributeNullableInt32uID MTR_NEWLY_AVAILABLE = 0x00004008,
+    MTRClusterUnitTestingAttributeNullableInt40uID MTR_NEWLY_AVAILABLE = 0x00004009,
+    MTRClusterUnitTestingAttributeNullableInt48uID MTR_NEWLY_AVAILABLE = 0x0000400A,
+    MTRClusterUnitTestingAttributeNullableInt56uID MTR_NEWLY_AVAILABLE = 0x0000400B,
+    MTRClusterUnitTestingAttributeNullableInt64uID MTR_NEWLY_AVAILABLE = 0x0000400C,
+    MTRClusterUnitTestingAttributeNullableInt8sID MTR_NEWLY_AVAILABLE = 0x0000400D,
+    MTRClusterUnitTestingAttributeNullableInt16sID MTR_NEWLY_AVAILABLE = 0x0000400E,
+    MTRClusterUnitTestingAttributeNullableInt24sID MTR_NEWLY_AVAILABLE = 0x0000400F,
+    MTRClusterUnitTestingAttributeNullableInt32sID MTR_NEWLY_AVAILABLE = 0x00004010,
+    MTRClusterUnitTestingAttributeNullableInt40sID MTR_NEWLY_AVAILABLE = 0x00004011,
+    MTRClusterUnitTestingAttributeNullableInt48sID MTR_NEWLY_AVAILABLE = 0x00004012,
+    MTRClusterUnitTestingAttributeNullableInt56sID MTR_NEWLY_AVAILABLE = 0x00004013,
+    MTRClusterUnitTestingAttributeNullableInt64sID MTR_NEWLY_AVAILABLE = 0x00004014,
+    MTRClusterUnitTestingAttributeNullableEnum8ID MTR_NEWLY_AVAILABLE = 0x00004015,
+    MTRClusterUnitTestingAttributeNullableEnum16ID MTR_NEWLY_AVAILABLE = 0x00004016,
+    MTRClusterUnitTestingAttributeNullableFloatSingleID MTR_NEWLY_AVAILABLE = 0x00004017,
+    MTRClusterUnitTestingAttributeNullableFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00004018,
+    MTRClusterUnitTestingAttributeNullableOctetStringID MTR_NEWLY_AVAILABLE = 0x00004019,
+    MTRClusterUnitTestingAttributeNullableCharStringID MTR_NEWLY_AVAILABLE = 0x0000401E,
+    MTRClusterUnitTestingAttributeNullableEnumAttrID MTR_NEWLY_AVAILABLE = 0x00004024,
+    MTRClusterUnitTestingAttributeNullableStructID MTR_NEWLY_AVAILABLE = 0x00004025,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00004026,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00004027,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00004028,
+    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00004029,
+    MTRClusterUnitTestingAttributeWriteOnlyInt8uID MTR_NEWLY_AVAILABLE = 0x0000402A,
     MTRClusterUnitTestingAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
     MTRClusterUnitTestingAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
     MTRClusterUnitTestingAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
     MTRClusterUnitTestingAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
     MTRClusterUnitTestingAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
 
+    // Cluster TestCluster attributes
+    MTRClusterTestClusterAttributeBooleanID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBooleanID") = 0x00000000,
+    MTRClusterTestClusterAttributeBitmap8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap8ID") = 0x00000001,
+    MTRClusterTestClusterAttributeBitmap16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap16ID")
+    = 0x00000002,
+    MTRClusterTestClusterAttributeBitmap32ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap32ID")
+    = 0x00000003,
+    MTRClusterTestClusterAttributeBitmap64ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap64ID")
+    = 0x00000004,
+    MTRClusterTestClusterAttributeInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt8uID") = 0x00000005,
+    MTRClusterTestClusterAttributeInt16uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt16uID") = 0x00000006,
+    MTRClusterTestClusterAttributeInt24uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt24uID") = 0x00000007,
+    MTRClusterTestClusterAttributeInt32uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt32uID") = 0x00000008,
+    MTRClusterTestClusterAttributeInt40uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt40uID") = 0x00000009,
+    MTRClusterTestClusterAttributeInt48uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt48uID") = 0x0000000A,
+    MTRClusterTestClusterAttributeInt56uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt56uID") = 0x0000000B,
+    MTRClusterTestClusterAttributeInt64uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt64uID") = 0x0000000C,
+    MTRClusterTestClusterAttributeInt8sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt8sID") = 0x0000000D,
+    MTRClusterTestClusterAttributeInt16sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt16sID") = 0x0000000E,
+    MTRClusterTestClusterAttributeInt24sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt24sID") = 0x0000000F,
+    MTRClusterTestClusterAttributeInt32sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt32sID") = 0x00000010,
+    MTRClusterTestClusterAttributeInt40sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt40sID") = 0x00000011,
+    MTRClusterTestClusterAttributeInt48sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt48sID") = 0x00000012,
+    MTRClusterTestClusterAttributeInt56sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt56sID") = 0x00000013,
+    MTRClusterTestClusterAttributeInt64sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt64sID") = 0x00000014,
+    MTRClusterTestClusterAttributeEnum8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnum8ID") = 0x00000015,
+    MTRClusterTestClusterAttributeEnum16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnum16ID") = 0x00000016,
+    MTRClusterTestClusterAttributeFloatSingleID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeFloatSingleID")
+    = 0x00000017,
+    MTRClusterTestClusterAttributeFloatDoubleID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeFloatDoubleID")
+    = 0x00000018,
+    MTRClusterTestClusterAttributeOctetStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeOctetStringID")
+    = 0x00000019,
+    MTRClusterTestClusterAttributeListInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeListInt8uID")
+    = 0x0000001A,
+    MTRClusterTestClusterAttributeListOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeListOctetStringID")
+    = 0x0000001B,
+    MTRClusterTestClusterAttributeListStructOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeListStructOctetStringID")
+    = 0x0000001C,
+    MTRClusterTestClusterAttributeLongOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeLongOctetStringID")
+    = 0x0000001D,
+    MTRClusterTestClusterAttributeCharStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeCharStringID")
+    = 0x0000001E,
+    MTRClusterTestClusterAttributeLongCharStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeLongCharStringID")
+    = 0x0000001F,
+    MTRClusterTestClusterAttributeEpochUsID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEpochUsID") = 0x00000020,
+    MTRClusterTestClusterAttributeEpochSID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEpochSID") = 0x00000021,
+    MTRClusterTestClusterAttributeVendorIdID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeVendorIdID")
+    = 0x00000022,
+    MTRClusterTestClusterAttributeListNullablesAndOptionalsStructID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID")
+    = 0x00000023,
+    MTRClusterTestClusterAttributeEnumAttrID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnumAttrID")
+    = 0x00000024,
+    MTRClusterTestClusterAttributeStructAttrID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeStructAttrID")
+    = 0x00000025,
+    MTRClusterTestClusterAttributeRangeRestrictedInt8uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt8uID")
+    = 0x00000026,
+    MTRClusterTestClusterAttributeRangeRestrictedInt8sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt8sID")
+    = 0x00000027,
+    MTRClusterTestClusterAttributeRangeRestrictedInt16uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt16uID")
+    = 0x00000028,
+    MTRClusterTestClusterAttributeRangeRestrictedInt16sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt16sID")
+    = 0x00000029,
+    MTRClusterTestClusterAttributeListLongOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeListLongOctetStringID")
+    = 0x0000002A,
+    MTRClusterTestClusterAttributeListFabricScopedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeListFabricScopedID")
+    = 0x0000002B,
+    MTRClusterTestClusterAttributeTimedWriteBooleanID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeTimedWriteBooleanID")
+    = 0x00000030,
+    MTRClusterTestClusterAttributeGeneralErrorBooleanID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeGeneralErrorBooleanID")
+    = 0x00000031,
+    MTRClusterTestClusterAttributeClusterErrorBooleanID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeClusterErrorBooleanID")
+    = 0x00000032,
+    MTRClusterTestClusterAttributeUnsupportedID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeUnsupportedID")
+    = 0x000000FF,
+    MTRClusterTestClusterAttributeNullableBooleanID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableBooleanID")
+    = 0x00004000,
+    MTRClusterTestClusterAttributeNullableBitmap8ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableBitmap8ID")
+    = 0x00004001,
+    MTRClusterTestClusterAttributeNullableBitmap16ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableBitmap16ID")
+    = 0x00004002,
+    MTRClusterTestClusterAttributeNullableBitmap32ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableBitmap32ID")
+    = 0x00004003,
+    MTRClusterTestClusterAttributeNullableBitmap64ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableBitmap64ID")
+    = 0x00004004,
+    MTRClusterTestClusterAttributeNullableInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt8uID")
+    = 0x00004005,
+    MTRClusterTestClusterAttributeNullableInt16uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt16uID")
+    = 0x00004006,
+    MTRClusterTestClusterAttributeNullableInt24uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt24uID")
+    = 0x00004007,
+    MTRClusterTestClusterAttributeNullableInt32uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt32uID")
+    = 0x00004008,
+    MTRClusterTestClusterAttributeNullableInt40uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt40uID")
+    = 0x00004009,
+    MTRClusterTestClusterAttributeNullableInt48uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt48uID")
+    = 0x0000400A,
+    MTRClusterTestClusterAttributeNullableInt56uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt56uID")
+    = 0x0000400B,
+    MTRClusterTestClusterAttributeNullableInt64uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt64uID")
+    = 0x0000400C,
+    MTRClusterTestClusterAttributeNullableInt8sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt8sID")
+    = 0x0000400D,
+    MTRClusterTestClusterAttributeNullableInt16sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt16sID")
+    = 0x0000400E,
+    MTRClusterTestClusterAttributeNullableInt24sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt24sID")
+    = 0x0000400F,
+    MTRClusterTestClusterAttributeNullableInt32sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt32sID")
+    = 0x00004010,
+    MTRClusterTestClusterAttributeNullableInt40sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt40sID")
+    = 0x00004011,
+    MTRClusterTestClusterAttributeNullableInt48sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt48sID")
+    = 0x00004012,
+    MTRClusterTestClusterAttributeNullableInt56sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt56sID")
+    = 0x00004013,
+    MTRClusterTestClusterAttributeNullableInt64sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt64sID")
+    = 0x00004014,
+    MTRClusterTestClusterAttributeNullableEnum8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableEnum8ID")
+    = 0x00004015,
+    MTRClusterTestClusterAttributeNullableEnum16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableEnum16ID")
+    = 0x00004016,
+    MTRClusterTestClusterAttributeNullableFloatSingleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableFloatSingleID")
+    = 0x00004017,
+    MTRClusterTestClusterAttributeNullableFloatDoubleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableFloatDoubleID")
+    = 0x00004018,
+    MTRClusterTestClusterAttributeNullableOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableOctetStringID")
+    = 0x00004019,
+    MTRClusterTestClusterAttributeNullableCharStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableCharStringID")
+    = 0x0000401E,
+    MTRClusterTestClusterAttributeNullableEnumAttrID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableEnumAttrID")
+    = 0x00004024,
+    MTRClusterTestClusterAttributeNullableStructID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableStructID")
+    = 0x00004025,
+    MTRClusterTestClusterAttributeNullableRangeRestrictedInt8uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID")
+    = 0x00004026,
+    MTRClusterTestClusterAttributeNullableRangeRestrictedInt8sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID")
+    = 0x00004027,
+    MTRClusterTestClusterAttributeNullableRangeRestrictedInt16uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID")
+    = 0x00004028,
+    MTRClusterTestClusterAttributeNullableRangeRestrictedInt16sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID")
+    = 0x00004029,
+    MTRClusterTestClusterAttributeWriteOnlyInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeWriteOnlyInt8uID")
+    = 0x0000402A,
+    MTRClusterTestClusterAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTestClusterAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTestClusterAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTestClusterAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTestClusterAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+
     // Cluster FaultInjection attributes
     MTRClusterFaultInjectionAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
     MTRClusterFaultInjectionAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
@@ -1379,6 +1556,7 @@ typedef NS_ENUM(uint32_t, MTRClusterAttributeIDType) {
 #pragma mark - Commands IDs
 
 typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
+
     // Cluster Identify commands
     MTRClusterIdentifyCommandIdentifyID = 0x00000000,
     MTRClusterIdentifyCommandTriggerEffectID = 0x00000040,
@@ -1665,40 +1843,137 @@ typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
     MTRClusterElectricalMeasurementCommandGetMeasurementProfileCommandID = 0x00000001,
 
     // Cluster UnitTesting commands
-    MTRClusterUnitTestingCommandTestID = 0x00000000,
-    MTRClusterUnitTestingCommandTestSpecificResponseID = 0x00000000,
-    MTRClusterUnitTestingCommandTestNotHandledID = 0x00000001,
-    MTRClusterUnitTestingCommandTestAddArgumentsResponseID = 0x00000001,
-    MTRClusterUnitTestingCommandTestSpecificID = 0x00000002,
-    MTRClusterUnitTestingCommandTestSimpleArgumentResponseID = 0x00000002,
-    MTRClusterUnitTestingCommandTestUnknownCommandID = 0x00000003,
-    MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID = 0x00000003,
-    MTRClusterUnitTestingCommandTestAddArgumentsID = 0x00000004,
-    MTRClusterUnitTestingCommandTestListInt8UReverseResponseID = 0x00000004,
-    MTRClusterUnitTestingCommandTestSimpleArgumentRequestID = 0x00000005,
-    MTRClusterUnitTestingCommandTestEnumsResponseID = 0x00000005,
-    MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID = 0x00000006,
-    MTRClusterUnitTestingCommandTestNullableOptionalResponseID = 0x00000006,
-    MTRClusterUnitTestingCommandTestStructArgumentRequestID = 0x00000007,
-    MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID = 0x00000007,
-    MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID = 0x00000008,
-    MTRClusterUnitTestingCommandBooleanResponseID = 0x00000008,
-    MTRClusterUnitTestingCommandTestListStructArgumentRequestID = 0x00000009,
-    MTRClusterUnitTestingCommandSimpleStructResponseID = 0x00000009,
-    MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID = 0x0000000A,
-    MTRClusterUnitTestingCommandTestEmitTestEventResponseID = 0x0000000A,
-    MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID = 0x0000000B,
-    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID = 0x0000000B,
-    MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID = 0x0000000C,
-    MTRClusterUnitTestingCommandTestListInt8UReverseRequestID = 0x0000000D,
-    MTRClusterUnitTestingCommandTestEnumsRequestID = 0x0000000E,
-    MTRClusterUnitTestingCommandTestNullableOptionalRequestID = 0x0000000F,
-    MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID = 0x00000010,
-    MTRClusterUnitTestingCommandSimpleStructEchoRequestID = 0x00000011,
-    MTRClusterUnitTestingCommandTimedInvokeRequestID = 0x00000012,
-    MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID = 0x00000013,
-    MTRClusterUnitTestingCommandTestEmitTestEventRequestID = 0x00000014,
-    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID = 0x00000015,
+    MTRClusterUnitTestingCommandTestID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRClusterUnitTestingCommandTestSpecificResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRClusterUnitTestingCommandTestNotHandledID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRClusterUnitTestingCommandTestAddArgumentsResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRClusterUnitTestingCommandTestSpecificID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRClusterUnitTestingCommandTestSimpleArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRClusterUnitTestingCommandTestUnknownCommandID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRClusterUnitTestingCommandTestAddArgumentsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRClusterUnitTestingCommandTestListInt8UReverseResponseID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRClusterUnitTestingCommandTestSimpleArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRClusterUnitTestingCommandTestEnumsResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRClusterUnitTestingCommandTestNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRClusterUnitTestingCommandTestStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRClusterUnitTestingCommandBooleanResponseID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRClusterUnitTestingCommandTestListStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRClusterUnitTestingCommandSimpleStructResponseID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRClusterUnitTestingCommandTestEmitTestEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRClusterUnitTestingCommandTestListInt8UReverseRequestID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRClusterUnitTestingCommandTestEnumsRequestID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRClusterUnitTestingCommandTestNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRClusterUnitTestingCommandSimpleStructEchoRequestID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRClusterUnitTestingCommandTimedInvokeRequestID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRClusterUnitTestingCommandTestEmitTestEventRequestID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID MTR_NEWLY_AVAILABLE = 0x00000015,
+
+    // Cluster TestCluster commands
+    MTRClusterTestClusterCommandTestID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestID") = 0x00000000,
+    MTRClusterTestClusterCommandTestSpecificResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestSpecificResponseID")
+    = 0x00000000,
+    MTRClusterTestClusterCommandTestNotHandledID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestNotHandledID")
+    = 0x00000001,
+    MTRClusterTestClusterCommandTestAddArgumentsResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestAddArgumentsResponseID")
+    = 0x00000001,
+    MTRClusterTestClusterCommandTestSpecificID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestSpecificID")
+    = 0x00000002,
+    MTRClusterTestClusterCommandTestSimpleArgumentResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestSimpleArgumentResponseID")
+    = 0x00000002,
+    MTRClusterTestClusterCommandTestUnknownCommandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestUnknownCommandID")
+    = 0x00000003,
+    MTRClusterTestClusterCommandTestStructArrayArgumentResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID")
+    = 0x00000003,
+    MTRClusterTestClusterCommandTestAddArgumentsID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestAddArgumentsID")
+    = 0x00000004,
+    MTRClusterTestClusterCommandTestListInt8UReverseResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestListInt8UReverseResponseID")
+    = 0x00000004,
+    MTRClusterTestClusterCommandTestSimpleArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestSimpleArgumentRequestID")
+    = 0x00000005,
+    MTRClusterTestClusterCommandTestEnumsResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestEnumsResponseID")
+    = 0x00000005,
+    MTRClusterTestClusterCommandTestStructArrayArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID")
+    = 0x00000006,
+    MTRClusterTestClusterCommandTestNullableOptionalResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestNullableOptionalResponseID")
+    = 0x00000006,
+    MTRClusterTestClusterCommandTestStructArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestStructArgumentRequestID")
+    = 0x00000007,
+    MTRClusterTestClusterCommandTestComplexNullableOptionalResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID")
+    = 0x00000007,
+    MTRClusterTestClusterCommandTestNestedStructArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID")
+    = 0x00000008,
+    MTRClusterTestClusterCommandBooleanResponseID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandBooleanResponseID")
+    = 0x00000008,
+    MTRClusterTestClusterCommandTestListStructArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestListStructArgumentRequestID")
+    = 0x00000009,
+    MTRClusterTestClusterCommandSimpleStructResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandSimpleStructResponseID")
+    = 0x00000009,
+    MTRClusterTestClusterCommandTestListInt8UArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID")
+    = 0x0000000A,
+    MTRClusterTestClusterCommandTestEmitTestEventResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestEmitTestEventResponseID")
+    = 0x0000000A,
+    MTRClusterTestClusterCommandTestNestedStructListArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID")
+    = 0x0000000B,
+    MTRClusterTestClusterCommandTestEmitTestFabricScopedEventResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID")
+    = 0x0000000B,
+    MTRClusterTestClusterCommandTestListNestedStructListArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID")
+    = 0x0000000C,
+    MTRClusterTestClusterCommandTestListInt8UReverseRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestListInt8UReverseRequestID")
+    = 0x0000000D,
+    MTRClusterTestClusterCommandTestEnumsRequestID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestEnumsRequestID")
+    = 0x0000000E,
+    MTRClusterTestClusterCommandTestNullableOptionalRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestNullableOptionalRequestID")
+    = 0x0000000F,
+    MTRClusterTestClusterCommandTestComplexNullableOptionalRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID")
+    = 0x00000010,
+    MTRClusterTestClusterCommandSimpleStructEchoRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandSimpleStructEchoRequestID")
+    = 0x00000011,
+    MTRClusterTestClusterCommandTimedInvokeRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTimedInvokeRequestID")
+    = 0x00000012,
+    MTRClusterTestClusterCommandTestSimpleOptionalArgumentRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID")
+    = 0x00000013,
+    MTRClusterTestClusterCommandTestEmitTestEventRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestEmitTestEventRequestID")
+    = 0x00000014,
+    MTRClusterTestClusterCommandTestEmitTestFabricScopedEventRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID")
+    = 0x00000015,
 
     // Cluster FaultInjection commands
     MTRClusterFaultInjectionCommandFailAtFaultID = 0x00000000,
@@ -1709,6 +1984,7 @@ typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
 #pragma mark - Events IDs
 
 typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
+
     // Cluster AccessControl events
     MTRClusterAccessControlEventAccessControlEntryChangedID = 0x00000000,
     MTRClusterAccessControlEventAccessControlExtensionChangedID = 0x00000001,
@@ -1791,7 +2067,13 @@ typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
     MTRClusterPumpConfigurationAndControlEventTurbineOperationID = 0x00000010,
 
     // Cluster UnitTesting events
-    MTRClusterUnitTestingEventTestEventID = 0x00000001,
-    MTRClusterUnitTestingEventTestFabricScopedEventID = 0x00000002,
+    MTRClusterUnitTestingEventTestEventID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRClusterUnitTestingEventTestFabricScopedEventID MTR_NEWLY_AVAILABLE = 0x00000002,
+
+    // Cluster TestCluster events
+    MTRClusterTestClusterEventTestEventID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingEventTestEventID") = 0x00000001,
+    MTRClusterTestClusterEventTestFabricScopedEventID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterUnitTestingEventTestFabricScopedEventID")
+    = 0x00000002,
 
 };
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index 9dbe71183a2c39..e8574a054fcb9b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -4598,6 +4598,7 @@ labels.
  * Cluster Unit Testing
  *    The Test Cluster is meant to validate the generated code
  */
+MTR_NEWLY_AVAILABLE
 @interface MTRClusterUnitTesting : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRDevice *)device
@@ -5304,12 +5305,15 @@ labels.
                                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                                       params:(MTRWriteParams * _Nullable)params;
 
-- (NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params;
+- (NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)dataValueDictionary
-                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs;
+                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)dataValueDictionary
                         expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                       params:(MTRWriteParams * _Nullable)params;
+                                       params:(MTRWriteParams * _Nullable)params
+    API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2));
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params;
 
@@ -5326,6 +5330,10 @@ labels.
 
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTesting")
+@interface MTRClusterTestCluster : MTRClusterUnitTesting
+@end
+
 @interface MTRClusterIdentify (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRDevice *)device
@@ -6850,13 +6858,13 @@ labels.
     MTR_NEWLY_DEPRECATED("Please use getMeasurementProfileCommandWithParams:expectedValues:expectedValueIntervalMs:completion:");
 @end
 
-@interface MTRClusterUnitTesting (Deprecated)
+@interface MTRClusterTestCluster (Deprecated)
 
 - (nullable instancetype)initWithDevice:(MTRDevice *)device
                                endpoint:(uint16_t)endpoint
                                   queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use initWithDevice:endpoindID:queue:");
 
-- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
         completionHandler:(MTRStatusCompletion)completionHandler
@@ -6865,7 +6873,7 @@ labels.
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
              completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
@@ -6874,18 +6882,18 @@ labels.
                    expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                        completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNotHandledWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithParams:expectedValues:expectedValueIntervalMs:completion:");
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                     completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+                     completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSpecificWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -6894,100 +6902,100 @@ labels.
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                            completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use testUnknownCommandWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams *)params
+- (void)testAddArgumentsWithParams:(MTRTestClusterClusterTestAddArgumentsParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testAddArgumentsWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testSimpleArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
+- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                completionHandler:
-                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArrayArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNestedStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                           expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListStructArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:
                                            (NSArray *> * _Nullable)expectedDataValueDictionaries
                                 expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testNestedStructListArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:
                                                (NSArray *> * _Nullable)expectedDataValueDictionaries
                                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testListNestedStructListArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testListInt8UReverseRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEnumsRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testNullableOptionalRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
+- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
                                       expectedValues:
                                           (NSArray *> * _Nullable)expectedDataValueDictionaries
                                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                    completionHandler:
-                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testComplexNullableOptionalRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
+                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use simpleStructEchoRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -6996,26 +7004,26 @@ labels.
                        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                            completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED("Please use timedInvokeRequestWithExpectedValues:expectedValueIntervalMs:completion:");
-- (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
+- (void)testSimpleOptionalArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams * _Nullable)params
                                      expectedValues:
                                          (NSArray *> * _Nullable)expectedDataValueDictionaries
                               expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                   completionHandler:(MTRStatusCompletion)completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testSimpleOptionalArgumentRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                      expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED("Please use testEmitTestEventRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         expectedValues:
                                             (NSArray *> * _Nullable)expectedDataValueDictionaries
                                  expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                      completionHandler:
                                          (void (^)(
-                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
     MTR_NEWLY_DEPRECATED(
         "Please use testEmitTestFabricScopedEventRequestWithParams:expectedValues:expectedValueIntervalMs:completion:");
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index 9216de3aeeed19..e709166833da73 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -653,7 +653,10 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params
     [self addGroupWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRGroupsClusterAddGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -664,7 +667,10 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
     [self viewGroupWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRGroupsClusterViewGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -675,7 +681,11 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *
     [self getGroupMembershipWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(
+                                MTRGroupsClusterGetGroupMembershipResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -686,7 +696,10 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
     [self removeGroupWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(MTRGroupsClusterRemoveGroupResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Nullable)params
                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -702,9 +715,10 @@ - (void)removeAllGroupsWithExpectedValues:(NSArray
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self removeAllGroupsWithExpectedValues:expectedValues
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self removeAllGroupsWithParams:nil
+                     expectedValues:expectedValues
+              expectedValueInterval:expectedValueIntervalMs
+                  completionHandler:completionHandler];
 }
 - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingParams *)params
                          expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1469,7 +1483,10 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params
     [self addSceneWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRScenesClusterAddSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1480,7 +1497,10 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
     [self viewSceneWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRScenesClusterViewSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1491,7 +1511,10 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
     [self removeSceneWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(MTRScenesClusterRemoveSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)params
                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1502,7 +1525,10 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param
     [self removeAllScenesWithParams:params
                      expectedValues:expectedDataValueDictionaries
               expectedValueInterval:expectedValueIntervalMs
-                         completion:completionHandler];
+                         completion:^(MTRScenesClusterRemoveAllScenesResponseParams * _Nullable data, NSError * _Nullable error) {
+                             // Cast is safe because subclass does not add any selectors.
+                             completionHandler(static_cast(data), error);
+                         }];
 }
 - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
               expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1513,7 +1539,10 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
     [self storeSceneWithParams:params
                 expectedValues:expectedDataValueDictionaries
          expectedValueInterval:expectedValueIntervalMs
-                    completion:completionHandler];
+                    completion:^(MTRScenesClusterStoreSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1534,7 +1563,11 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *
     [self getSceneMembershipWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(
+                                MTRScenesClusterGetSceneMembershipResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1545,7 +1578,10 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par
     [self enhancedAddSceneWithParams:params
                       expectedValues:expectedDataValueDictionaries
                expectedValueInterval:expectedValueIntervalMs
-                          completion:completionHandler];
+                          completion:^(MTRScenesClusterEnhancedAddSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
 - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)params
                      expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1553,10 +1589,14 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p
                   completionHandler:(void (^)(MTRScenesClusterEnhancedViewSceneResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self enhancedViewSceneWithParams:params
-                       expectedValues:expectedDataValueDictionaries
-                expectedValueInterval:expectedValueIntervalMs
-                           completion:completionHandler];
+    [self
+        enhancedViewSceneWithParams:params
+                     expectedValues:expectedDataValueDictionaries
+              expectedValueInterval:expectedValueIntervalMs
+                         completion:^(MTRScenesClusterEnhancedViewSceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                             // Cast is safe because subclass does not add any selectors.
+                             completionHandler(static_cast(data), error);
+                         }];
 }
 - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -1567,7 +1607,10 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
     [self copySceneWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRScenesClusterCopySceneResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 @end
 
@@ -2069,7 +2112,10 @@ - (void)offWithExpectedValues:(NSArray *> *)expecte
         expectedValueInterval:(NSNumber *)expectedValueIntervalMs
             completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self offWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self offWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -2085,7 +2131,10 @@ - (void)onWithExpectedValues:(NSArray *> *)expected
        expectedValueInterval:(NSNumber *)expectedValueIntervalMs
            completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self onWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self onWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -2101,7 +2150,10 @@ - (void)toggleWithExpectedValues:(NSArray *> *)expe
            expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self toggleWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self toggleWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params
                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -2127,9 +2179,10 @@ - (void)onWithRecallGlobalSceneWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -4932,9 +4985,10 @@ - (void)mfgSpecificPingWithExpectedValues:(NSArray
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self mfgSpecificPingWithExpectedValues:expectedValues
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self mfgSpecificPingWithParams:nil
+                     expectedValues:expectedValues
+              expectedValueInterval:expectedValueIntervalMs
+                  completionHandler:completionHandler];
 }
 @end
 
@@ -5196,7 +5250,11 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam
     [self queryImageWithParams:params
                 expectedValues:expectedDataValueDictionaries
          expectedValueInterval:expectedValueIntervalMs
-                    completion:completionHandler];
+                    completion:^(
+                        MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams *)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -5207,7 +5265,12 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp
     [self applyUpdateRequestWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams * _Nullable data,
+                                NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(
+                                    static_cast(data), error);
+                            }];
 }
 - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams *)params
                        expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6403,7 +6466,11 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams *
     [self armFailSafeWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(
+                         MTRGeneralCommissioningClusterArmFailSafeResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulatoryConfigParams *)params
                        expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6414,7 +6481,12 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato
     [self setRegulatoryConfigWithParams:params
                          expectedValues:expectedDataValueDictionaries
                   expectedValueInterval:expectedValueIntervalMs
-                             completion:completionHandler];
+                             completion:^(MTRGeneralCommissioningClusterSetRegulatoryConfigResponseParams * _Nullable data,
+                                 NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(
+                                     static_cast(data), error);
+                             }];
 }
 - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissioningCompleteParams * _Nullable)params
                          expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6423,10 +6495,16 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
                           (void (^)(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams * _Nullable data,
                               NSError * _Nullable error))completionHandler
 {
-    [self commissioningCompleteWithParams:params
-                           expectedValues:expectedDataValueDictionaries
-                    expectedValueInterval:expectedValueIntervalMs
-                               completion:completionHandler];
+    [self
+        commissioningCompleteWithParams:params
+                         expectedValues:expectedDataValueDictionaries
+                  expectedValueInterval:expectedValueIntervalMs
+                             completion:^(MTRGeneralCommissioningClusterCommissioningCompleteResponseParams * _Nullable data,
+                                 NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(
+                                     static_cast(data), error);
+                             }];
 }
 - (void)commissioningCompleteWithExpectedValues:(NSArray *> *)expectedValues
                           expectedValueInterval:(NSNumber *)expectedValueIntervalMs
@@ -6434,9 +6512,10 @@ - (void)commissioningCompleteWithExpectedValues:(NSArray(data), error);
+                      }];
 }
 - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateWiFiNetworkParams *)params
                           expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6919,7 +7002,12 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd
     [self addOrUpdateWiFiNetworkWithParams:params
                             expectedValues:expectedDataValueDictionaries
                      expectedValueInterval:expectedValueIntervalMs
-                                completion:completionHandler];
+                                completion:^(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
+                                    NSError * _Nullable error) {
+                                    // Cast is safe because subclass does not add any selectors.
+                                    completionHandler(
+                                        static_cast(data), error);
+                                }];
 }
 - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpdateThreadNetworkParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6930,7 +7018,12 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU
     [self addOrUpdateThreadNetworkWithParams:params
                               expectedValues:expectedDataValueDictionaries
                        expectedValueInterval:expectedValueIntervalMs
-                                  completion:completionHandler];
+                                  completion:^(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
+                                      NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(
+                                          static_cast(data), error);
+                                  }];
 }
 - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkParams *)params
                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6941,7 +7034,11 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara
     [self removeNetworkWithParams:params
                    expectedValues:expectedDataValueDictionaries
             expectedValueInterval:expectedValueIntervalMs
-                       completion:completionHandler];
+                       completion:^(
+                           MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkParams *)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6949,10 +7046,15 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa
                completionHandler:(void (^)(MTRNetworkCommissioningClusterConnectNetworkResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self connectNetworkWithParams:params
-                    expectedValues:expectedDataValueDictionaries
-             expectedValueInterval:expectedValueIntervalMs
-                        completion:completionHandler];
+    [self
+        connectNetworkWithParams:params
+                  expectedValues:expectedDataValueDictionaries
+           expectedValueInterval:expectedValueIntervalMs
+                      completion:^(
+                          MTRNetworkCommissioningClusterConnectNetworkResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkParams *)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -6960,10 +7062,15 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
                completionHandler:(void (^)(MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self reorderNetworkWithParams:params
-                    expectedValues:expectedDataValueDictionaries
-             expectedValueInterval:expectedValueIntervalMs
-                        completion:completionHandler];
+    [self
+        reorderNetworkWithParams:params
+                  expectedValues:expectedDataValueDictionaries
+           expectedValueInterval:expectedValueIntervalMs
+                      completion:^(
+                          MTRNetworkCommissioningClusterNetworkConfigResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 @end
 
@@ -7089,7 +7196,11 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
     [self retrieveLogsRequestWithParams:params
                          expectedValues:expectedDataValueDictionaries
                   expectedValueInterval:expectedValueIntervalMs
-                             completion:completionHandler];
+                             completion:^(
+                                 MTRDiagnosticLogsClusterRetrieveLogsResponseParams * _Nullable data, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(static_cast(data), error);
+                             }];
 }
 @end
 
@@ -7458,9 +7569,10 @@ - (void)resetWatermarksWithExpectedValues:(NSArray
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetWatermarksWithExpectedValues:expectedValues
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self resetWatermarksWithParams:nil
+                     expectedValues:expectedValues
+              expectedValueInterval:expectedValueIntervalMs
+                  completionHandler:completionHandler];
 }
 @end
 
@@ -8104,7 +8216,10 @@ - (void)resetCountsWithExpectedValues:(NSArray *> *
                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self resetCountsWithParams:nil
+                 expectedValues:expectedValues
+          expectedValueInterval:expectedValueIntervalMs
+              completionHandler:completionHandler];
 }
 @end
 
@@ -8347,7 +8462,10 @@ - (void)resetCountsWithExpectedValues:(NSArray *> *
                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self resetCountsWithParams:nil
+                 expectedValues:expectedValues
+          expectedValueInterval:expectedValueIntervalMs
+              completionHandler:completionHandler];
 }
 @end
 
@@ -8558,7 +8676,10 @@ - (void)resetCountsWithExpectedValues:(NSArray *> *
                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self resetCountsWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self resetCountsWithParams:nil
+                 expectedValues:expectedValues
+          expectedValueInterval:expectedValueIntervalMs
+              completionHandler:completionHandler];
 }
 @end
 
@@ -9147,9 +9268,10 @@ - (void)revokeCommissioningWithExpectedValues:(NSArray(data), error);
+                            }];
 }
 - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCertificateChainRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9669,10 +9796,16 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti
                         completionHandler:(void (^)(MTROperationalCredentialsClusterCertificateChainResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
-    [self certificateChainRequestWithParams:params
-                             expectedValues:expectedDataValueDictionaries
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self
+        certificateChainRequestWithParams:params
+                           expectedValues:expectedDataValueDictionaries
+                    expectedValueInterval:expectedValueIntervalMs
+                               completion:^(MTROperationalCredentialsClusterCertificateChainResponseParams * _Nullable data,
+                                   NSError * _Nullable error) {
+                                   // Cast is safe because subclass does not add any selectors.
+                                   completionHandler(
+                                       static_cast(data), error);
+                               }];
 }
 - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *)params
               expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9683,7 +9816,10 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *
     [self CSRRequestWithParams:params
                 expectedValues:expectedDataValueDictionaries
          expectedValueInterval:expectedValueIntervalMs
-                    completion:completionHandler];
+                    completion:^(MTROperationalCredentialsClusterCSRResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9694,7 +9830,10 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
     [self addNOCWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9705,7 +9844,10 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p
     [self updateNOCWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabricLabelParams *)params
                      expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9716,7 +9858,11 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri
     [self updateFabricLabelWithParams:params
                        expectedValues:expectedDataValueDictionaries
                 expectedValueInterval:expectedValueIntervalMs
-                           completion:completionHandler];
+                           completion:^(
+                               MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                               // Cast is safe because subclass does not add any selectors.
+                               completionHandler(static_cast(data), error);
+                           }];
 }
 - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricParams *)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -9727,7 +9873,10 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara
     [self removeFabricWithParams:params
                   expectedValues:expectedDataValueDictionaries
            expectedValueInterval:expectedValueIntervalMs
-                      completion:completionHandler];
+                      completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAddTrustedRootCertificateParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -10125,7 +10274,10 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par
     [self keySetReadWithParams:params
                 expectedValues:expectedDataValueDictionaries
          expectedValueInterval:expectedValueIntervalMs
-                    completion:completionHandler];
+                    completion:^(MTRGroupKeyManagementClusterKeySetReadResponseParams * _Nullable data, NSError * _Nullable error) {
+                        // Cast is safe because subclass does not add any selectors.
+                        completionHandler(static_cast(data), error);
+                    }];
 }
 - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams *)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -10146,7 +10298,12 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
     [self keySetReadAllIndicesWithParams:params
                           expectedValues:expectedDataValueDictionaries
                    expectedValueInterval:expectedValueIntervalMs
-                              completion:completionHandler];
+                              completion:^(MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseParams * _Nullable data,
+                                  NSError * _Nullable error) {
+                                  // Cast is safe because subclass does not add any selectors.
+                                  completionHandler(
+                                      static_cast(data), error);
+                              }];
 }
 @end
 
@@ -12345,7 +12502,11 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams
     [self getWeekDayScheduleWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(
+                                MTRDoorLockClusterGetWeekDayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDayScheduleParams *)params
                         expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -12376,7 +12537,11 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams
     [self getYearDayScheduleWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(
+                                MTRDoorLockClusterGetYearDayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDayScheduleParams *)params
                         expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -12407,7 +12572,11 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams
     [self getHolidayScheduleWithParams:params
                         expectedValues:expectedDataValueDictionaries
                  expectedValueInterval:expectedValueIntervalMs
-                            completion:completionHandler];
+                            completion:^(
+                                MTRDoorLockClusterGetHolidayScheduleResponseParams * _Nullable data, NSError * _Nullable error) {
+                                // Cast is safe because subclass does not add any selectors.
+                                completionHandler(static_cast(data), error);
+                            }];
 }
 - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidayScheduleParams *)params
                         expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -12438,7 +12607,10 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params
     [self getUserWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRDoorLockClusterGetUserResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -12459,7 +12631,10 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params
     [self setCredentialWithParams:params
                    expectedValues:expectedDataValueDictionaries
             expectedValueInterval:expectedValueIntervalMs
-                       completion:completionHandler];
+                       completion:^(MTRDoorLockClusterSetCredentialResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusParams *)params
                        expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -12470,7 +12645,11 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara
     [self getCredentialStatusWithParams:params
                          expectedValues:expectedDataValueDictionaries
                   expectedValueInterval:expectedValueIntervalMs
-                             completion:completionHandler];
+                             completion:^(
+                                 MTRDoorLockClusterGetCredentialStatusResponseParams * _Nullable data, NSError * _Nullable error) {
+                                 // Cast is safe because subclass does not add any selectors.
+                                 completionHandler(static_cast(data), error);
+                             }];
 }
 - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)params
                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -13121,7 +13300,10 @@ - (void)upOrOpenWithExpectedValues:(NSArray *> *)ex
              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                  completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self upOrOpenWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self upOrOpenWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Nullable)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -13137,7 +13319,10 @@ - (void)downOrCloseWithExpectedValues:(NSArray *> *
                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self downOrCloseWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self downOrCloseWithParams:nil
+                 expectedValues:expectedValues
+          expectedValueInterval:expectedValueIntervalMs
+              completionHandler:completionHandler];
 }
 - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullable)params
               expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -13153,7 +13338,10 @@ - (void)stopMotionWithExpectedValues:(NSArray *> *)
                expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self stopMotionWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self stopMotionWithParams:nil
+                expectedValues:expectedValues
+         expectedValueInterval:expectedValueIntervalMs
+             completionHandler:completionHandler];
 }
 - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)params
                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -13589,9 +13777,10 @@ - (void)barrierControlStopWithExpectedValues:(NSArray(data), error);
+                           }];
 }
 - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklyScheduleParams * _Nullable)params
                        expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -15200,9 +15393,10 @@ - (void)clearWeeklyScheduleWithExpectedValues:(NSArray(data), error);
+                       }];
 }
 - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberParams *)params
                          expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -19308,7 +19505,11 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
     [self navigateTargetWithParams:params
                     expectedValues:expectedDataValueDictionaries
              expectedValueInterval:expectedValueIntervalMs
-                        completion:completionHandler];
+                        completion:^(
+                            MTRTargetNavigatorClusterNavigateTargetResponseParams * _Nullable data, NSError * _Nullable error) {
+                            // Cast is safe because subclass does not add any selectors.
+                            completionHandler(static_cast(data), error);
+                        }];
 }
 @end
 
@@ -20004,14 +20205,20 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params
     [self playWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)playWithExpectedValues:(NSArray *> *)expectedValues
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
              completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self playWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self playWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20022,14 +20229,20 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
     [self pauseWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)pauseWithExpectedValues:(NSArray *> *)expectedValues
           expectedValueInterval:(NSNumber *)expectedValueIntervalMs
               completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                     NSError * _Nullable error))completionHandler
 {
-    [self pauseWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self pauseWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20040,14 +20253,20 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul
     [self stopPlaybackWithParams:params
                   expectedValues:expectedDataValueDictionaries
            expectedValueInterval:expectedValueIntervalMs
-                      completion:completionHandler];
+                      completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)stopPlaybackWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                      completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
-    [self stopPlaybackWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self stopPlaybackWithParams:nil
+                  expectedValues:expectedValues
+           expectedValueInterval:expectedValueIntervalMs
+               completionHandler:completionHandler];
 }
 - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20058,14 +20277,20 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)
     [self startOverWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)startOverWithExpectedValues:(NSArray *> *)expectedValues
               expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                   completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                         NSError * _Nullable error))completionHandler
 {
-    [self startOverWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self startOverWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)params
             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20076,14 +20301,20 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa
     [self previousWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)previousWithExpectedValues:(NSArray *> *)expectedValues
              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                  completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
-    [self previousWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self previousWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20094,14 +20325,20 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
     [self nextWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)nextWithExpectedValues:(NSArray *> *)expectedValues
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
              completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
-    [self nextWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self nextWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20112,14 +20349,20 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
     [self rewindWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)rewindWithExpectedValues:(NSArray *> *)expectedValues
            expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                      NSError * _Nullable error))completionHandler
 {
-    [self rewindWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self rewindWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nullable)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20130,14 +20373,20 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla
     [self fastForwardWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)fastForwardWithExpectedValues:(NSArray *> *)expectedValues
                 expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                     completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data,
                                           NSError * _Nullable error))completionHandler
 {
-    [self fastForwardWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self fastForwardWithParams:nil
+                 expectedValues:expectedValues
+          expectedValueInterval:expectedValueIntervalMs
+              completionHandler:completionHandler];
 }
 - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20148,7 +20397,10 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
     [self skipForwardWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20159,7 +20411,10 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para
     [self skipBackwardWithParams:params
                   expectedValues:expectedDataValueDictionaries
            expectedValueInterval:expectedValueIntervalMs
-                      completion:completionHandler];
+                      completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20170,7 +20425,10 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
     [self seekWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRMediaPlaybackClusterPlaybackResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 @end
 
@@ -20491,9 +20749,10 @@ - (void)showInputStatusWithExpectedValues:(NSArray
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self showInputStatusWithExpectedValues:expectedValues
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self showInputStatusWithParams:nil
+                     expectedValues:expectedValues
+              expectedValueInterval:expectedValueIntervalMs
+                  completionHandler:completionHandler];
 }
 - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _Nullable)params
                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20509,9 +20768,10 @@ - (void)hideInputStatusWithExpectedValues:(NSArray
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                         completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self hideInputStatusWithExpectedValues:expectedValues
-                      expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+    [self hideInputStatusWithParams:nil
+                     expectedValues:expectedValues
+              expectedValueInterval:expectedValueIntervalMs
+                  completionHandler:completionHandler];
 }
 - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params
                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -20657,7 +20917,10 @@ - (void)sleepWithExpectedValues:(NSArray *> *)expec
           expectedValueInterval:(NSNumber *)expectedValueIntervalMs
               completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self sleepWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self sleepWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 @end
 
@@ -20780,7 +21043,10 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
     [self sendKeyWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRKeypadInputClusterSendKeyResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 @end
 
@@ -21141,7 +21407,10 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *)
     [self launchContentWithParams:params
                    expectedValues:expectedDataValueDictionaries
             expectedValueInterval:expectedValueIntervalMs
-                       completion:completionHandler];
+                       completion:^(MTRContentLauncherClusterLaunchResponseParams * _Nullable data, NSError * _Nullable error) {
+                           // Cast is safe because subclass does not add any selectors.
+                           completionHandler(static_cast(data), error);
+                       }];
 }
 - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -21152,7 +21421,10 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
     [self launchURLWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRContentLauncherClusterLaunchResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 @end
 
@@ -21610,7 +21882,10 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para
     [self launchAppWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -21621,7 +21896,10 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
     [self stopAppWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -21632,7 +21910,10 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
     [self hideAppWithParams:params
                expectedValues:expectedDataValueDictionaries
         expectedValueInterval:expectedValueIntervalMs
-                   completion:completionHandler];
+                   completion:^(MTRApplicationLauncherClusterLauncherResponseParams * _Nullable data, NSError * _Nullable error) {
+                       // Cast is safe because subclass does not add any selectors.
+                       completionHandler(static_cast(data), error);
+                   }];
 }
 @end
 
@@ -21998,7 +22279,10 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params
     [self getSetupPINWithParams:params
                  expectedValues:expectedDataValueDictionaries
           expectedValueInterval:expectedValueIntervalMs
-                     completion:completionHandler];
+                     completion:^(MTRAccountLoginClusterGetSetupPINResponseParams * _Nullable data, NSError * _Nullable error) {
+                         // Cast is safe because subclass does not add any selectors.
+                         completionHandler(static_cast(data), error);
+                     }];
 }
 - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -22024,7 +22308,10 @@ - (void)logoutWithExpectedValues:(NSArray *> *)expe
            expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self logoutWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self logoutWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
 @end
 
@@ -23402,9 +23689,10 @@ - (void)getProfileInfoCommandWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
@@ -27517,14 +27805,17 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)da
 
 @end
 
-@implementation MTRClusterUnitTesting (Deprecated)
+@implementation MTRClusterTestCluster
+@end
+
+@implementation MTRClusterTestCluster (Deprecated)
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
 {
     return [self initWithDevice:device endpointID:@(endpoint) queue:queue];
 }
 
-- (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params
+- (void)testWithParams:(MTRTestClusterClusterTestParams * _Nullable)params
            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
         completionHandler:(MTRStatusCompletion)completionHandler
@@ -27538,9 +27829,12 @@ - (void)testWithExpectedValues:(NSArray *> *)expect
          expectedValueInterval:(NSNumber *)expectedValueIntervalMs
              completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self testWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self testWithParams:nil
+               expectedValues:expectedValues
+        expectedValueInterval:expectedValueIntervalMs
+            completionHandler:completionHandler];
 }
-- (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _Nullable)params
+- (void)testNotHandledWithParams:(MTRTestClusterClusterTestNotHandledParams * _Nullable)params
                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                completionHandler:(MTRStatusCompletion)completionHandler
@@ -27554,29 +27848,36 @@ - (void)testNotHandledWithExpectedValues:(NSArray *
                    expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                        completionHandler:(MTRStatusCompletion)completionHandler
 {
-    [self testNotHandledWithExpectedValues:expectedValues
-                     expectedValueInterval:expectedValueIntervalMs
-                                completion:completionHandler];
+    [self testNotHandledWithParams:nil
+                    expectedValues:expectedValues
+             expectedValueInterval:expectedValueIntervalMs
+                 completionHandler:completionHandler];
 }
-- (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nullable)params
+- (void)testSpecificWithParams:(MTRTestClusterClusterTestSpecificParams * _Nullable)params
                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-             completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+             completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                    NSError * _Nullable error))completionHandler
 {
     [self testSpecificWithParams:params
                   expectedValues:expectedDataValueDictionaries
            expectedValueInterval:expectedValueIntervalMs
-                      completion:completionHandler];
+                      completion:^(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data, NSError * _Nullable error) {
+                          // Cast is safe because subclass does not add any selectors.
+                          completionHandler(static_cast(data), error);
+                      }];
 }
 - (void)testSpecificWithExpectedValues:(NSArray *> *)expectedValues
                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                     completionHandler:(void (^)(MTRUnitTestingClusterTestSpecificResponseParams * _Nullable data,
+                     completionHandler:(void (^)(MTRTestClusterClusterTestSpecificResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
-    [self testSpecificWithExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completionHandler];
+    [self testSpecificWithParams:nil
+                  expectedValues:expectedValues
+           expectedValueInterval:expectedValueIntervalMs
+               completionHandler:completionHandler];
 }
-- (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandParams * _Nullable)params
+- (void)testUnknownCommandWithParams:(MTRTestClusterClusterTestUnknownCommandParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -27590,171 +27891,240 @@ - (void)testUnknownCommandWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRTestClusterClusterTestAddArgumentsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testAddArgumentsWithParams:params
                       expectedValues:expectedDataValueDictionaries
                expectedValueInterval:expectedValueIntervalMs
-                          completion:completionHandler];
+                          completion:^(
+                              MTRUnitTestingClusterTestAddArgumentsResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
-- (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgumentRequestParams *)params
+- (void)testSimpleArgumentRequestWithParams:(MTRTestClusterClusterTestSimpleArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRTestClusterClusterTestSimpleArgumentResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testSimpleArgumentRequestWithParams:params
                                expectedValues:expectedDataValueDictionaries
                         expectedValueInterval:expectedValueIntervalMs
-                                   completion:completionHandler];
-}
-- (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArrayArgumentRequestParams *)params
+                                   completion:^(MTRUnitTestingClusterTestSimpleArgumentResponseParams * _Nullable data,
+                                       NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(
+                                           static_cast(data), error);
+                                   }];
+}
+- (void)testStructArrayArgumentRequestWithParams:(MTRTestClusterClusterTestStructArrayArgumentRequestParams *)params
                                   expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                            expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                completionHandler:
-                                   (void (^)(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                   (void (^)(MTRTestClusterClusterTestStructArrayArgumentResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testStructArrayArgumentRequestWithParams:params
                                     expectedValues:expectedDataValueDictionaries
                              expectedValueInterval:expectedValueIntervalMs
-                                        completion:completionHandler];
-}
-- (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgumentRequestParams *)params
+                                        completion:^(MTRUnitTestingClusterTestStructArrayArgumentResponseParams * _Nullable data,
+                                            NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(
+                                                static_cast(data),
+                                                error);
+                                        }];
+}
+- (void)testStructArgumentRequestWithParams:(MTRTestClusterClusterTestStructArgumentRequestParams *)params
                              expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                       expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                          completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                          completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                 NSError * _Nullable error))completionHandler
 {
     [self testStructArgumentRequestWithParams:params
                                expectedValues:expectedDataValueDictionaries
                         expectedValueInterval:expectedValueIntervalMs
-                                   completion:completionHandler];
+                                   completion:^(
+                                       MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                       // Cast is safe because subclass does not add any selectors.
+                                       completionHandler(static_cast(data), error);
+                                   }];
 }
-- (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructArgumentRequestParams *)params
+- (void)testNestedStructArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructArgumentRequestParams *)params
                                    expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                       NSError * _Nullable error))completionHandler
 {
     [self testNestedStructArgumentRequestWithParams:params
                                      expectedValues:expectedDataValueDictionaries
                               expectedValueInterval:expectedValueIntervalMs
-                                         completion:completionHandler];
-}
-- (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListStructArgumentRequestParams *)params
+                                         completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                             NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(
+                                                 static_cast(data), error);
+                                         }];
+}
+- (void)testListStructArgumentRequestWithParams:(MTRTestClusterClusterTestListStructArgumentRequestParams *)params
                                  expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                           expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                              completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                              completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                     NSError * _Nullable error))completionHandler
 {
-    [self testListStructArgumentRequestWithParams:params
-                                   expectedValues:expectedDataValueDictionaries
-                            expectedValueInterval:expectedValueIntervalMs
-                                       completion:completionHandler];
+    [self
+        testListStructArgumentRequestWithParams:params
+                                 expectedValues:expectedDataValueDictionaries
+                          expectedValueInterval:expectedValueIntervalMs
+                                     completion:^(
+                                         MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(data), error);
+                                     }];
 }
-- (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt8UArgumentRequestParams *)params
+- (void)testListInt8UArgumentRequestWithParams:(MTRTestClusterClusterTestListInt8UArgumentRequestParams *)params
                                 expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                          expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                             completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                             completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                    NSError * _Nullable error))completionHandler
 {
     [self testListInt8UArgumentRequestWithParams:params
                                   expectedValues:expectedDataValueDictionaries
                            expectedValueInterval:expectedValueIntervalMs
-                                      completion:completionHandler];
+                                      completion:^(
+                                          MTRUnitTestingClusterBooleanResponseParams * _Nullable data, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(data), error);
+                                      }];
 }
-- (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTestNestedStructListArgumentRequestParams *)params
+- (void)testNestedStructListArgumentRequestWithParams:(MTRTestClusterClusterTestNestedStructListArgumentRequestParams *)params
                                        expectedValues:
                                            (NSArray *> * _Nullable)expectedDataValueDictionaries
                                 expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                    completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                    completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                           NSError * _Nullable error))completionHandler
 {
     [self testNestedStructListArgumentRequestWithParams:params
                                          expectedValues:expectedDataValueDictionaries
                                   expectedValueInterval:expectedValueIntervalMs
-                                             completion:completionHandler];
+                                             completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                                 NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(
+                                                     static_cast(data), error);
+                                             }];
 }
 - (void)testListNestedStructListArgumentRequestWithParams:
-            (MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams *)params
+            (MTRTestClusterClusterTestListNestedStructListArgumentRequestParams *)params
                                            expectedValues:
                                                (NSArray *> * _Nullable)expectedDataValueDictionaries
                                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                                        completionHandler:(void (^)(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                        completionHandler:(void (^)(MTRTestClusterClusterBooleanResponseParams * _Nullable data,
                                                               NSError * _Nullable error))completionHandler
 {
     [self testListNestedStructListArgumentRequestWithParams:params
                                              expectedValues:expectedDataValueDictionaries
                                       expectedValueInterval:expectedValueIntervalMs
-                                                 completion:completionHandler];
-}
-- (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8UReverseRequestParams *)params
+                                                 completion:^(MTRUnitTestingClusterBooleanResponseParams * _Nullable data,
+                                                     NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(
+                                                         static_cast(data), error);
+                                                 }];
+}
+- (void)testListInt8UReverseRequestWithParams:(MTRTestClusterClusterTestListInt8UReverseRequestParams *)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRTestClusterClusterTestListInt8UReverseResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testListInt8UReverseRequestWithParams:params
                                  expectedValues:expectedDataValueDictionaries
                           expectedValueInterval:expectedValueIntervalMs
-                                     completion:completionHandler];
-}
-- (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams *)params
+                                     completion:^(MTRUnitTestingClusterTestListInt8UReverseResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(
+                                             static_cast(data), error);
+                                     }];
+}
+- (void)testEnumsRequestWithParams:(MTRTestClusterClusterTestEnumsRequestParams *)params
                     expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
              expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                 completionHandler:(void (^)(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data,
+                 completionHandler:(void (^)(MTRTestClusterClusterTestEnumsResponseParams * _Nullable data,
                                        NSError * _Nullable error))completionHandler
 {
     [self testEnumsRequestWithParams:params
                       expectedValues:expectedDataValueDictionaries
                expectedValueInterval:expectedValueIntervalMs
-                          completion:completionHandler];
+                          completion:^(MTRUnitTestingClusterTestEnumsResponseParams * _Nullable data, NSError * _Nullable error) {
+                              // Cast is safe because subclass does not add any selectors.
+                              completionHandler(static_cast(data), error);
+                          }];
 }
-- (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullableOptionalRequestParams * _Nullable)params
+- (void)testNullableOptionalRequestWithParams:(MTRTestClusterClusterTestNullableOptionalRequestParams * _Nullable)params
                                expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                         expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                            completionHandler:(void (^)(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+                            completionHandler:(void (^)(MTRTestClusterClusterTestNullableOptionalResponseParams * _Nullable data,
                                                   NSError * _Nullable error))completionHandler
 {
     [self testNullableOptionalRequestWithParams:params
                                  expectedValues:expectedDataValueDictionaries
                           expectedValueInterval:expectedValueIntervalMs
-                                     completion:completionHandler];
-}
-- (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestComplexNullableOptionalRequestParams *)params
+                                     completion:^(MTRUnitTestingClusterTestNullableOptionalResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(
+                                             static_cast(data), error);
+                                     }];
+}
+- (void)testComplexNullableOptionalRequestWithParams:(MTRTestClusterClusterTestComplexNullableOptionalRequestParams *)params
                                       expectedValues:
                                           (NSArray *> * _Nullable)expectedDataValueDictionaries
                                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                    completionHandler:
-                                       (void (^)(MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                       (void (^)(MTRTestClusterClusterTestComplexNullableOptionalResponseParams * _Nullable data,
                                            NSError * _Nullable error))completionHandler
 {
     [self testComplexNullableOptionalRequestWithParams:params
                                         expectedValues:expectedDataValueDictionaries
                                  expectedValueInterval:expectedValueIntervalMs
-                                            completion:completionHandler];
-}
-- (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEchoRequestParams *)params
+                                            completion:^(
+                                                MTRUnitTestingClusterTestComplexNullableOptionalResponseParams * _Nullable data,
+                                                NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(
+                                                    static_cast(
+                                                        data),
+                                                    error);
+                                            }];
+}
+- (void)simpleStructEchoRequestWithParams:(MTRTestClusterClusterSimpleStructEchoRequestParams *)params
                            expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                     expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                        completionHandler:(void (^)(MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data,
+                        completionHandler:(void (^)(MTRTestClusterClusterSimpleStructResponseParams * _Nullable data,
                                               NSError * _Nullable error))completionHandler
 {
     [self simpleStructEchoRequestWithParams:params
                              expectedValues:expectedDataValueDictionaries
                       expectedValueInterval:expectedValueIntervalMs
-                                 completion:completionHandler];
+                                 completion:^(
+                                     MTRUnitTestingClusterSimpleStructResponseParams * _Nullable data, NSError * _Nullable error) {
+                                     // Cast is safe because subclass does not add any selectors.
+                                     completionHandler(static_cast(data), error);
+                                 }];
 }
-- (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestParams * _Nullable)params
+- (void)timedInvokeRequestWithParams:(MTRTestClusterClusterTimedInvokeRequestParams * _Nullable)params
                       expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                    completionHandler:(MTRStatusCompletion)completionHandler
@@ -27768,11 +28138,12 @@ - (void)timedInvokeRequestWithExpectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                               expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
@@ -27783,30 +28154,44 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSi
                                 expectedValueInterval:expectedValueIntervalMs
                                            completion:completionHandler];
 }
-- (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEventRequestParams *)params
+- (void)testEmitTestEventRequestWithParams:(MTRTestClusterClusterTestEmitTestEventRequestParams *)params
                             expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries
                      expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
-                         completionHandler:(void (^)(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+                         completionHandler:(void (^)(MTRTestClusterClusterTestEmitTestEventResponseParams * _Nullable data,
                                                NSError * _Nullable error))completionHandler
 {
     [self testEmitTestEventRequestWithParams:params
                               expectedValues:expectedDataValueDictionaries
                        expectedValueInterval:expectedValueIntervalMs
-                                  completion:completionHandler];
-}
-- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams *)params
+                                  completion:^(MTRUnitTestingClusterTestEmitTestEventResponseParams * _Nullable data,
+                                      NSError * _Nullable error) {
+                                      // Cast is safe because subclass does not add any selectors.
+                                      completionHandler(
+                                          static_cast(data), error);
+                                  }];
+}
+- (void)testEmitTestFabricScopedEventRequestWithParams:(MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams *)params
                                         expectedValues:
                                             (NSArray *> * _Nullable)expectedDataValueDictionaries
                                  expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                                      completionHandler:
                                          (void (^)(
-                                             MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                             MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
                                              NSError * _Nullable error))completionHandler
 {
-    [self testEmitTestFabricScopedEventRequestWithParams:params
-                                          expectedValues:expectedDataValueDictionaries
-                                   expectedValueInterval:expectedValueIntervalMs
-                                              completion:completionHandler];
+    [self
+        testEmitTestFabricScopedEventRequestWithParams:params
+                                        expectedValues:expectedDataValueDictionaries
+                                 expectedValueInterval:expectedValueIntervalMs
+                                            completion:^(
+                                                MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams * _Nullable data,
+                                                NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(
+                                                    static_cast(
+                                                        data),
+                                                    error);
+                                            }];
 }
 @end
 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index f9194ac1a56624..6c5241cd905979 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -5196,6 +5196,7 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
@@ -5216,6 +5217,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestParams")
+@interface MTRTestClusterClusterTestParams : MTRUnitTestingClusterTestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestSpecificResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
@@ -5238,6 +5245,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestSpecificResponseParams")
+@interface MTRTestClusterClusterTestSpecificResponseParams : MTRUnitTestingClusterTestSpecificResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestNotHandledParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
@@ -5258,6 +5271,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestNotHandledParams")
+@interface MTRTestClusterClusterTestNotHandledParams : MTRUnitTestingClusterTestNotHandledParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestAddArgumentsResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
@@ -5280,6 +5299,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestAddArgumentsResponseParams")
+@interface MTRTestClusterClusterTestAddArgumentsResponseParams : MTRUnitTestingClusterTestAddArgumentsResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestSpecificParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
@@ -5300,6 +5325,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestSpecificParams")
+@interface MTRTestClusterClusterTestSpecificParams : MTRUnitTestingClusterTestSpecificParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestSimpleArgumentResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull returnValue;
@@ -5322,6 +5353,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestSimpleArgumentResponseParams")
+@interface MTRTestClusterClusterTestSimpleArgumentResponseParams : MTRUnitTestingClusterTestSimpleArgumentResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestUnknownCommandParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
@@ -5342,6 +5379,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestUnknownCommandParams")
+@interface MTRTestClusterClusterTestUnknownCommandParams : MTRUnitTestingClusterTestUnknownCommandParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestStructArrayArgumentResponseParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5374,6 +5417,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestStructArrayArgumentResponseParams")
+@interface MTRTestClusterClusterTestStructArrayArgumentResponseParams : MTRUnitTestingClusterTestStructArrayArgumentResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestAddArgumentsParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -5398,6 +5447,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestAddArgumentsParams")
+@interface MTRTestClusterClusterTestAddArgumentsParams : MTRUnitTestingClusterTestAddArgumentsParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListInt8UReverseResponseParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5420,6 +5475,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListInt8UReverseResponseParams")
+@interface MTRTestClusterClusterTestListInt8UReverseResponseParams : MTRUnitTestingClusterTestListInt8UReverseResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestSimpleArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -5442,6 +5503,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestSimpleArgumentRequestParams")
+@interface MTRTestClusterClusterTestSimpleArgumentRequestParams : MTRUnitTestingClusterTestSimpleArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEnumsResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -5466,6 +5533,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEnumsResponseParams")
+@interface MTRTestClusterClusterTestEnumsResponseParams : MTRUnitTestingClusterTestEnumsResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestStructArrayArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5498,6 +5571,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestStructArrayArgumentRequestParams")
+@interface MTRTestClusterClusterTestStructArrayArgumentRequestParams : MTRUnitTestingClusterTestStructArrayArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestNullableOptionalResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull wasPresent;
@@ -5526,6 +5605,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestNullableOptionalResponseParams")
+@interface MTRTestClusterClusterTestNullableOptionalResponseParams : MTRUnitTestingClusterTestNullableOptionalResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestStructArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
@@ -5548,6 +5633,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestStructArgumentRequestParams")
+@interface MTRTestClusterClusterTestStructArgumentRequestParams : MTRUnitTestingClusterTestStructArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestComplexNullableOptionalResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull nullableIntWasNull;
@@ -5624,6 +5715,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestComplexNullableOptionalResponseParams")
+@interface MTRTestClusterClusterTestComplexNullableOptionalResponseParams
+    : MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestNestedStructArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) MTRUnitTestingClusterNestedStruct * _Nonnull arg1;
@@ -5646,6 +5744,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestNestedStructArgumentRequestParams")
+@interface MTRTestClusterClusterTestNestedStructArgumentRequestParams : MTRUnitTestingClusterTestNestedStructArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterBooleanResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
@@ -5668,6 +5772,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterBooleanResponseParams")
+@interface MTRTestClusterClusterBooleanResponseParams : MTRUnitTestingClusterBooleanResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListStructArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5690,6 +5800,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListStructArgumentRequestParams")
+@interface MTRTestClusterClusterTestListStructArgumentRequestParams : MTRUnitTestingClusterTestListStructArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterSimpleStructResponseParams : NSObject 
 
 @property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
@@ -5712,6 +5828,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterSimpleStructResponseParams")
+@interface MTRTestClusterClusterSimpleStructResponseParams : MTRUnitTestingClusterSimpleStructResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListInt8UArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5734,6 +5856,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListInt8UArgumentRequestParams")
+@interface MTRTestClusterClusterTestListInt8UArgumentRequestParams : MTRUnitTestingClusterTestListInt8UArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEmitTestEventResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
@@ -5756,6 +5884,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEmitTestEventResponseParams")
+@interface MTRTestClusterClusterTestEmitTestEventResponseParams : MTRUnitTestingClusterTestEmitTestEventResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestNestedStructListArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) MTRUnitTestingClusterNestedStructList * _Nonnull arg1;
@@ -5778,6 +5912,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestNestedStructListArgumentRequestParams")
+@interface MTRTestClusterClusterTestNestedStructListArgumentRequestParams
+    : MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull value;
@@ -5800,6 +5941,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams")
+@interface MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
+    : MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5822,6 +5970,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams")
+@interface MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
+    : MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListInt8UReverseRequestParams : NSObject 
 
 @property (nonatomic, copy) NSArray * _Nonnull arg1;
@@ -5844,6 +5999,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListInt8UReverseRequestParams")
+@interface MTRTestClusterClusterTestListInt8UReverseRequestParams : MTRUnitTestingClusterTestListInt8UReverseRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEnumsRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -5868,6 +6029,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEnumsRequestParams")
+@interface MTRTestClusterClusterTestEnumsRequestParams : MTRUnitTestingClusterTestEnumsRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestNullableOptionalRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable arg1;
@@ -5890,6 +6057,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestNullableOptionalRequestParams")
+@interface MTRTestClusterClusterTestNullableOptionalRequestParams : MTRUnitTestingClusterTestNullableOptionalRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestComplexNullableOptionalRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable nullableInt;
@@ -5934,6 +6107,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestComplexNullableOptionalRequestParams")
+@interface MTRTestClusterClusterTestComplexNullableOptionalRequestParams
+    : MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterSimpleStructEchoRequestParams : NSObject 
 
 @property (nonatomic, copy) MTRUnitTestingClusterSimpleStruct * _Nonnull arg1;
@@ -5956,6 +6136,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterSimpleStructEchoRequestParams")
+@interface MTRTestClusterClusterSimpleStructEchoRequestParams : MTRUnitTestingClusterSimpleStructEchoRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTimedInvokeRequestParams : NSObject 
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
@@ -5976,6 +6162,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTimedInvokeRequestParams")
+@interface MTRTestClusterClusterTimedInvokeRequestParams : MTRUnitTestingClusterTimedInvokeRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nullable arg1;
@@ -5998,6 +6190,13 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams")
+@interface MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
+    : MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEmitTestEventRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -6024,6 +6223,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEmitTestEventRequestParams")
+@interface MTRTestClusterClusterTestEmitTestEventRequestParams : MTRUnitTestingClusterTestEmitTestEventRequestParams
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
@@ -6046,6 +6251,12 @@ NS_ASSUME_NONNULL_BEGIN
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
+
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams")
+@interface MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
+    : MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
+@end
+
 @interface MTRFaultInjectionClusterFailAtFaultParams : NSObject 
 
 @property (nonatomic, copy) NSNumber * _Nonnull type;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
index afd0732251777a..1206aaf5efbbda 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
@@ -7002,6 +7002,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestParams
 @end
 @implementation MTRUnitTestingClusterTestSpecificResponseParams
 - (instancetype)init
@@ -7031,6 +7034,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestSpecificResponseParams
 @end
 @implementation MTRUnitTestingClusterTestNotHandledParams
 - (instancetype)init
@@ -7056,6 +7062,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestNotHandledParams
 @end
 @implementation MTRUnitTestingClusterTestAddArgumentsResponseParams
 - (instancetype)init
@@ -7085,6 +7094,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestAddArgumentsResponseParams
 @end
 @implementation MTRUnitTestingClusterTestSpecificParams
 - (instancetype)init
@@ -7110,6 +7122,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestSpecificParams
 @end
 @implementation MTRUnitTestingClusterTestSimpleArgumentResponseParams
 - (instancetype)init
@@ -7139,6 +7154,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestSimpleArgumentResponseParams
 @end
 @implementation MTRUnitTestingClusterTestUnknownCommandParams
 - (instancetype)init
@@ -7164,6 +7182,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestUnknownCommandParams
 @end
 @implementation MTRUnitTestingClusterTestStructArrayArgumentResponseParams
 - (instancetype)init
@@ -7208,6 +7229,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestStructArrayArgumentResponseParams
 @end
 @implementation MTRUnitTestingClusterTestAddArgumentsParams
 - (instancetype)init
@@ -7240,6 +7264,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestAddArgumentsParams
 @end
 @implementation MTRUnitTestingClusterTestListInt8UReverseResponseParams
 - (instancetype)init
@@ -7268,6 +7295,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestListInt8UReverseResponseParams
 @end
 @implementation MTRUnitTestingClusterTestSimpleArgumentRequestParams
 - (instancetype)init
@@ -7296,6 +7326,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestSimpleArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEnumsResponseParams
 - (instancetype)init
@@ -7328,6 +7361,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEnumsResponseParams
 @end
 @implementation MTRUnitTestingClusterTestStructArrayArgumentRequestParams
 - (instancetype)init
@@ -7372,6 +7408,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestStructArrayArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestNullableOptionalResponseParams
 - (instancetype)init
@@ -7410,6 +7449,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestNullableOptionalResponseParams
 @end
 @implementation MTRUnitTestingClusterTestStructArgumentRequestParams
 - (instancetype)init
@@ -7438,6 +7480,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestStructArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestComplexNullableOptionalResponseParams
 - (instancetype)init
@@ -7562,6 +7607,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestComplexNullableOptionalResponseParams
 @end
 @implementation MTRUnitTestingClusterTestNestedStructArgumentRequestParams
 - (instancetype)init
@@ -7590,6 +7638,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestNestedStructArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterBooleanResponseParams
 - (instancetype)init
@@ -7618,6 +7669,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterBooleanResponseParams
 @end
 @implementation MTRUnitTestingClusterTestListStructArgumentRequestParams
 - (instancetype)init
@@ -7646,6 +7700,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestListStructArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterSimpleStructResponseParams
 - (instancetype)init
@@ -7674,6 +7731,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterSimpleStructResponseParams
 @end
 @implementation MTRUnitTestingClusterTestListInt8UArgumentRequestParams
 - (instancetype)init
@@ -7702,6 +7762,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestListInt8UArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEmitTestEventResponseParams
 - (instancetype)init
@@ -7730,6 +7793,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEmitTestEventResponseParams
 @end
 @implementation MTRUnitTestingClusterTestNestedStructListArgumentRequestParams
 - (instancetype)init
@@ -7758,6 +7824,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestNestedStructListArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseParams
 - (instancetype)init
@@ -7786,6 +7855,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEmitTestFabricScopedEventResponseParams
 @end
 @implementation MTRUnitTestingClusterTestListNestedStructListArgumentRequestParams
 - (instancetype)init
@@ -7814,6 +7886,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestListNestedStructListArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestListInt8UReverseRequestParams
 - (instancetype)init
@@ -7842,6 +7917,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestListInt8UReverseRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEnumsRequestParams
 - (instancetype)init
@@ -7874,6 +7952,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEnumsRequestParams
 @end
 @implementation MTRUnitTestingClusterTestNullableOptionalRequestParams
 - (instancetype)init
@@ -7902,6 +7983,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestNullableOptionalRequestParams
 @end
 @implementation MTRUnitTestingClusterTestComplexNullableOptionalRequestParams
 - (instancetype)init
@@ -7969,6 +8053,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestComplexNullableOptionalRequestParams
 @end
 @implementation MTRUnitTestingClusterSimpleStructEchoRequestParams
 - (instancetype)init
@@ -7997,6 +8084,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterSimpleStructEchoRequestParams
 @end
 @implementation MTRUnitTestingClusterTimedInvokeRequestParams
 - (instancetype)init
@@ -8022,6 +8112,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTimedInvokeRequestParams
 @end
 @implementation MTRUnitTestingClusterTestSimpleOptionalArgumentRequestParams
 - (instancetype)init
@@ -8050,6 +8143,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestSimpleOptionalArgumentRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEmitTestEventRequestParams
 - (instancetype)init
@@ -8085,6 +8181,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEmitTestEventRequestParams
 @end
 @implementation MTRUnitTestingClusterTestEmitTestFabricScopedEventRequestParams
 - (instancetype)init
@@ -8113,6 +8212,9 @@ - (NSString *)description
     return descriptionString;
 }
 
+@end
+
+@implementation MTRTestClusterClusterTestEmitTestFabricScopedEventRequestParams
 @end
 @implementation MTRFaultInjectionClusterFailAtFaultParams
 - (instancetype)init
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
index cfcac951339e95..9d1a2aab2e3d41 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
@@ -950,6 +950,7 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterSimpleStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
@@ -964,6 +965,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterSimpleStruct")
+@interface MTRTestClusterClusterSimpleStruct : MTRUnitTestingClusterSimpleStruct
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestFabricScoped : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull fabricSensitiveInt8u;
 @property (nonatomic, copy) NSNumber * _Nullable optionalFabricSensitiveInt8u;
@@ -978,6 +983,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestFabricScoped")
+@interface MTRTestClusterClusterTestFabricScoped : MTRUnitTestingClusterTestFabricScoped
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterNullablesAndOptionalsStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nullable nullableInt;
 @property (nonatomic, copy) NSNumber * _Nullable optionalInt;
@@ -996,6 +1005,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterNullablesAndOptionalsStruct")
+@interface MTRTestClusterClusterNullablesAndOptionalsStruct : MTRUnitTestingClusterNullablesAndOptionalsStruct
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterNestedStruct : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
@@ -1005,6 +1018,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterNestedStruct")
+@interface MTRTestClusterClusterNestedStruct : MTRUnitTestingClusterNestedStruct
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterNestedStructList : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull a;
 @property (nonatomic, copy) NSNumber * _Nonnull b;
@@ -1018,6 +1035,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterNestedStructList")
+@interface MTRTestClusterClusterNestedStructList : MTRUnitTestingClusterNestedStructList
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterDoubleNestedStructList : NSObject 
 @property (nonatomic, copy) NSArray * _Nonnull a;
 
@@ -1025,6 +1046,10 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterDoubleNestedStructList")
+@interface MTRTestClusterClusterDoubleNestedStructList : MTRUnitTestingClusterDoubleNestedStructList
+@end
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestListStructOctet : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull member1;
 @property (nonatomic, copy) NSData * _Nonnull member2;
@@ -1033,6 +1058,11 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestListStructOctet")
+@interface MTRTestClusterClusterTestListStructOctet : MTRUnitTestingClusterTestListStructOctet
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestEventEvent : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull arg1;
 @property (nonatomic, copy) NSNumber * _Nonnull arg2;
@@ -1045,6 +1075,11 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestEventEvent")
+@interface MTRTestClusterClusterTestEventEvent : MTRUnitTestingClusterTestEventEvent
+@end
+
+MTR_NEWLY_AVAILABLE
 @interface MTRUnitTestingClusterTestFabricScopedEventEvent : NSObject 
 @property (nonatomic, copy) NSNumber * _Nonnull fabricIndex;
 
@@ -1052,4 +1087,8 @@ API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 @end
 
+MTR_NEWLY_DEPRECATED("Please use MTRUnitTestingClusterTestFabricScopedEventEvent")
+@interface MTRTestClusterClusterTestFabricScopedEventEvent : MTRUnitTestingClusterTestFabricScopedEventEvent
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
index 2ddfba8c35b722..38f32e60ca16d4 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
@@ -3619,6 +3619,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterSimpleStruct : MTRUnitTestingClusterSimpleStruct
+@end
+
 @implementation MTRUnitTestingClusterTestFabricScoped
 - (instancetype)init
 {
@@ -3673,6 +3676,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterTestFabricScoped : MTRUnitTestingClusterTestFabricScoped
+@end
+
 @implementation MTRUnitTestingClusterNullablesAndOptionalsStruct
 - (instancetype)init
 {
@@ -3739,6 +3745,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterNullablesAndOptionalsStruct : MTRUnitTestingClusterNullablesAndOptionalsStruct
+@end
+
 @implementation MTRUnitTestingClusterNestedStruct
 - (instancetype)init
 {
@@ -3773,6 +3782,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterNestedStruct : MTRUnitTestingClusterNestedStruct
+@end
+
 @implementation MTRUnitTestingClusterNestedStructList
 - (instancetype)init
 {
@@ -3819,6 +3831,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterNestedStructList : MTRUnitTestingClusterNestedStructList
+@end
+
 @implementation MTRUnitTestingClusterDoubleNestedStructList
 - (instancetype)init
 {
@@ -3846,6 +3861,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterDoubleNestedStructList : MTRUnitTestingClusterDoubleNestedStructList
+@end
+
 @implementation MTRUnitTestingClusterTestListStructOctet
 - (instancetype)init
 {
@@ -3877,6 +3895,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterTestListStructOctet : MTRUnitTestingClusterTestListStructOctet
+@end
+
 @implementation MTRUnitTestingClusterTestEventEvent
 - (instancetype)init
 {
@@ -3920,6 +3941,9 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterTestEventEvent : MTRUnitTestingClusterTestEventEvent
+@end
+
 @implementation MTRUnitTestingClusterTestFabricScopedEventEvent
 - (instancetype)init
 {
@@ -3948,4 +3972,7 @@ - (NSString *)description
 
 @end
 
+@implementation MTRTestClusterClusterTestFabricScopedEventEvent : MTRUnitTestingClusterTestFabricScopedEventEvent
+@end
+
 NS_ASSUME_NONNULL_END

From f67c1b7a715939e15018f83ae3ebcd75625e929a Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Wed, 16 Nov 2022 11:03:02 -0500
Subject: [PATCH 06/36] [Darwin] Rename MTRDevicePairingDelegate to
 MTRDeviceControllerDelegate and MTRPairingStatus to MTRCommissioningStatus
 (#23587)

* [Darwin] Rename MTRDevicePairingDelegate to MTRDeviceControllerDelegate and MTRPairingStatus to MTRCommissioningStatus

This is a re-landing of PR #22633 but with changes made for backwards compat.

* [Darwin] Rename MTRDevicePairingDelegate to MTRDeviceControllerDelegate

* [Darwin] Rename MTRPairingStatus to MTRCommissioningStatus

* Add backwards compat shims for the old APIs.

* Address review comments.

Co-authored-by: Vivien Nicolas 
---
 examples/darwin-framework-tool/BUILD.gn       |  2 +-
 ...dge.h => DeviceControllerDelegateBridge.h} |  2 +-
 ...e.mm => DeviceControllerDelegateBridge.mm} | 16 ++--
 .../commands/pairing/PairingCommandBridge.h   |  2 +-
 .../commands/pairing/PairingCommandBridge.mm  | 20 ++---
 .../commands/tests/TestCommandBridge.h        | 22 ++---
 .../Framework/CHIP/MTRDeviceController.h      |  6 +-
 .../Framework/CHIP/MTRDeviceController.mm     | 90 ++++++++++++++++---
 ...legate.h => MTRDeviceControllerDelegate.h} | 36 ++++++--
 ....h => MTRDeviceControllerDelegateBridge.h} | 14 +--
 ...m => MTRDeviceControllerDelegateBridge.mm} | 46 +++++-----
 src/darwin/Framework/CHIP/Matter.h            |  2 +-
 .../Framework/CHIPTests/MTRDeviceTests.m      | 11 +--
 .../CHIPTests/MTRXPCListenerSampleTests.m     | 12 +--
 .../Matter.xcodeproj/project.pbxproj          | 24 ++---
 15 files changed, 199 insertions(+), 106 deletions(-)
 rename examples/darwin-framework-tool/commands/pairing/{PairingDelegateBridge.h => DeviceControllerDelegateBridge.h} (92%)
 rename examples/darwin-framework-tool/commands/pairing/{PairingDelegateBridge.mm => DeviceControllerDelegateBridge.mm} (84%)
 rename src/darwin/Framework/CHIP/{MTRDevicePairingDelegate.h => MTRDeviceControllerDelegate.h} (54%)
 rename src/darwin/Framework/CHIP/{MTRDevicePairingDelegateBridge.h => MTRDeviceControllerDelegateBridge.h} (71%)
 rename src/darwin/Framework/CHIP/{MTRDevicePairingDelegateBridge.mm => MTRDeviceControllerDelegateBridge.mm} (57%)

diff --git a/examples/darwin-framework-tool/BUILD.gn b/examples/darwin-framework-tool/BUILD.gn
index d71e0501e1cf32..5a9fbabfbbe5b2 100644
--- a/examples/darwin-framework-tool/BUILD.gn
+++ b/examples/darwin-framework-tool/BUILD.gn
@@ -128,10 +128,10 @@ executable("darwin-framework-tool") {
     "commands/common/MTRError_Utils.h",
     "commands/common/MTRLogging.h",
     "commands/pairing/Commands.h",
+    "commands/pairing/DeviceControllerDelegateBridge.mm",
     "commands/pairing/OpenCommissioningWindowCommand.h",
     "commands/pairing/OpenCommissioningWindowCommand.mm",
     "commands/pairing/PairingCommandBridge.mm",
-    "commands/pairing/PairingDelegateBridge.mm",
     "commands/payload/SetupPayloadParseCommand.mm",
     "commands/provider/Commands.h",
     "commands/provider/OTAProviderDelegate.mm",
diff --git a/examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.h b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
similarity index 92%
rename from examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.h
rename to examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
index e295e084725701..1c48daba882f0a 100644
--- a/examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.h
+++ b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
@@ -20,7 +20,7 @@
 
 #import 
 
-@interface CHIPToolPairingDelegate : NSObject 
+@interface CHIPToolDeviceControllerDelegate : NSObject 
 @property PairingCommandBridge * commandBridge;
 @property chip::NodeId deviceID;
 @property MTRDeviceController * commissioner;
diff --git a/examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.mm b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
similarity index 84%
rename from examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.mm
rename to examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
index 5ea335271bce9a..e83f81089b45b8 100644
--- a/examples/darwin-framework-tool/commands/pairing/PairingDelegateBridge.mm
+++ b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
@@ -16,29 +16,29 @@
  *
  */
 
-#include "PairingDelegateBridge.h"
+#include "DeviceControllerDelegateBridge.h"
 #import 
 
-@interface CHIPToolPairingDelegate ()
+@interface CHIPToolDeviceControllerDelegate ()
 @end
 
-@implementation CHIPToolPairingDelegate
-- (void)onStatusUpdate:(MTRPairingStatus)status
+@implementation CHIPToolDeviceControllerDelegate
+- (void)onStatusUpdate:(MTRCommissioningStatus)status
 {
     NSLog(@"Pairing Status Update: %tu", status);
     switch (status) {
-    case MTRPairingStatusSuccess:
+    case MTRCommissioningStatusSuccess:
         ChipLogProgress(chipTool, "Secure Pairing Success");
         ChipLogProgress(chipTool, "CASE establishment successful");
         break;
-    case MTRPairingStatusFailed:
+    case MTRCommissioningStatusFailed:
         ChipLogError(chipTool, "Secure Pairing Failed");
         _commandBridge->SetCommandExitStatus(CHIP_ERROR_INCORRECT_STATE);
         break;
-    case MTRPairingStatusDiscoveringMoreDevices:
+    case MTRCommissioningStatusDiscoveringMoreDevices:
         ChipLogProgress(chipTool, "Secure Pairing Discovering More Devices");
         break;
-    case MTRPairingStatusUnknown:
+    case MTRCommissioningStatusUnknown:
         ChipLogError(chipTool, "Uknown Pairing Status");
         break;
     }
diff --git a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.h b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.h
index 4885b328c8ad9a..1b098adba25937 100644
--- a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.h
@@ -78,7 +78,7 @@ class PairingCommandBridge : public CHIPCommandBridge
     void PairWithCode(NSError * __autoreleasing * error);
     void PairWithPayload(NSError * __autoreleasing * error);
     void Unpair();
-    void SetUpPairingDelegate();
+    void SetUpDeviceControllerDelegate();
 
     const PairingMode mPairingMode;
     const PairingNetworkType mNetworkType;
diff --git a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm
index a05e9ab2eddf7e..beb8cfcec08327 100644
--- a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm
+++ b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm
@@ -19,8 +19,8 @@
 #import 
 
 #include "../common/CHIPCommandBridge.h"
+#include "DeviceControllerDelegateBridge.h"
 #include "PairingCommandBridge.h"
-#include "PairingDelegateBridge.h"
 #include 
 
 #import "MTRError_Utils.h"
@@ -28,14 +28,14 @@
 using namespace ::chip;
 using namespace ::chip::Controller;
 
-void PairingCommandBridge::SetUpPairingDelegate()
+void PairingCommandBridge::SetUpDeviceControllerDelegate()
 {
     dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.pairing", DISPATCH_QUEUE_SERIAL);
-    CHIPToolPairingDelegate * pairing = [[CHIPToolPairingDelegate alloc] init];
+    CHIPToolDeviceControllerDelegate * deviceControllerDelegate = [[CHIPToolDeviceControllerDelegate alloc] init];
     MTRCommissioningParameters * params = [[MTRCommissioningParameters alloc] init];
     MTRDeviceController * commissioner = CurrentCommissioner();
 
-    [pairing setDeviceID:mNodeId];
+    [deviceControllerDelegate setDeviceID:mNodeId];
     switch (mNetworkType) {
     case PairingNetworkType::None:
     case PairingNetworkType::Ethernet:
@@ -49,11 +49,11 @@
         break;
     }
 
-    [pairing setCommandBridge:this];
-    [pairing setParams:params];
-    [pairing setCommissioner:commissioner];
+    [deviceControllerDelegate setCommandBridge:this];
+    [deviceControllerDelegate setParams:params];
+    [deviceControllerDelegate setCommissioner:commissioner];
 
-    [commissioner setPairingDelegate:pairing queue:callbackQueue];
+    [commissioner setDeviceControllerDelegate:deviceControllerDelegate queue:callbackQueue];
 }
 
 CHIP_ERROR PairingCommandBridge::RunCommand()
@@ -79,7 +79,7 @@
 
 void PairingCommandBridge::PairWithCode(NSError * __autoreleasing * error)
 {
-    SetUpPairingDelegate();
+    SetUpDeviceControllerDelegate();
     auto * payload = [[MTRSetupPayload alloc] initWithSetupPasscode:@(mSetupPINCode) discriminator:@(mDiscriminator)];
     MTRDeviceController * commissioner = CurrentCommissioner();
     [commissioner setupCommissioningSessionWithPayload:payload newNodeID:@(mNodeId) error:error];
@@ -88,7 +88,7 @@
 void PairingCommandBridge::PairWithPayload(NSError * __autoreleasing * error)
 {
     NSString * onboardingPayload = [NSString stringWithUTF8String:mOnboardingPayload];
-    SetUpPairingDelegate();
+    SetUpDeviceControllerDelegate();
     auto * payload = [MTRSetupPayload setupPayloadWithOnboardingPayload:onboardingPayload error:error];
     if (payload == nil) {
         return;
diff --git a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
index 03f6b70aae719b..8c4fe33d0ea87f 100644
--- a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
@@ -43,12 +43,12 @@ const char * getScriptsFolder() { return basePath; }
 
 constexpr const char * kDefaultKey = "default";
 
-@interface TestPairingDelegate : NSObject 
+@interface TestDeviceControllerDelegate : NSObject 
 @property TestCommandBridge * commandBridge;
 @property chip::NodeId deviceId;
 @property BOOL active; // Whether to pass on notifications to the commandBridge
 
-- (void)onStatusUpdate:(MTRPairingStatus)status;
+- (void)onStatusUpdate:(MTRCommissioningStatus)status;
 - (void)onPairingComplete:(NSError * _Nullable)error;
 - (void)onPairingDeleted:(NSError * _Nullable)error;
 - (void)onCommissioningComplete:(NSError * _Nullable)error;
@@ -70,7 +70,7 @@ class TestCommandBridge : public CHIPCommandBridge,
 public:
     TestCommandBridge(const char * _Nonnull commandName)
         : CHIPCommandBridge(commandName)
-        , mPairingDelegate([[TestPairingDelegate alloc] initWithTestCommandBridge:this])
+        , mDeviceControllerDelegate([[TestDeviceControllerDelegate alloc] initWithTestCommandBridge:this])
     {
         AddArgument("delayInMs", 0, UINT64_MAX, &mDelayInMs);
         AddArgument("PICS", &mPICSFilePath);
@@ -183,9 +183,9 @@ class TestCommandBridge : public CHIPCommandBridge,
 
         SetIdentity(identity);
 
-        [controller setPairingDelegate:mPairingDelegate queue:mCallbackQueue];
-        [mPairingDelegate setDeviceId:value.nodeId];
-        [mPairingDelegate setActive:YES];
+        [controller setDeviceControllerDelegate:mDeviceControllerDelegate queue:mCallbackQueue];
+        [mDeviceControllerDelegate setDeviceId:value.nodeId];
+        [mDeviceControllerDelegate setActive:YES];
 
         NSString * payloadStr = [[NSString alloc] initWithBytes:value.payload.data()
                                                          length:value.payload.size()
@@ -521,7 +521,7 @@ class TestCommandBridge : public CHIPCommandBridge,
     }
 
 private:
-    TestPairingDelegate * _Nonnull mPairingDelegate;
+    TestDeviceControllerDelegate * _Nonnull mDeviceControllerDelegate;
 
     // Set of our connected devices, keyed by identity.
     std::map mConnectedDevices;
@@ -529,13 +529,13 @@ class TestCommandBridge : public CHIPCommandBridge,
 
 NS_ASSUME_NONNULL_BEGIN
 
-@implementation TestPairingDelegate
-- (void)onStatusUpdate:(MTRPairingStatus)status
+@implementation TestDeviceControllerDelegate
+- (void)onStatusUpdate:(MTRCommissioningStatus)status
 {
     if (_active) {
-        if (status == MTRPairingStatusSuccess) {
+        if (status == MTRCommissioningStatusSuccess) {
             NSLog(@"Secure pairing success");
-        } else if (status == MTRPairingStatusFailed) {
+        } else if (status == MTRCommissioningStatusFailed) {
             _active = NO;
             NSLog(@"Secure pairing failed");
             _commandBridge->OnStatusUpdate(chip::app::StatusIB(chip::Protocols::InteractionModel::Status::Failure));
diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.h b/src/darwin/Framework/CHIP/MTRDeviceController.h
index 3ba788bbbfc5f6..4f46861da7de3c 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceController.h
+++ b/src/darwin/Framework/CHIP/MTRDeviceController.h
@@ -29,6 +29,7 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS
 @class MTRCommissioningParameters;
 @class MTRSetupPayload;
 @protocol MTRDevicePairingDelegate;
+@protocol MTRDeviceControllerDelegate;
 
 @interface MTRDeviceController : NSObject
 
@@ -114,7 +115,7 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS
  *
  * @param[in] queue The queue on which the callbacks will be delivered
  */
-- (void)setPairingDelegate:(id)delegate queue:(dispatch_queue_t)queue;
+- (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue MTR_NEWLY_AVAILABLE;
 
 /**
  * Sets this MTRDeviceController to use the given issuer for issuing operational certs. By default, the MTRDeviceController uses an
@@ -217,6 +218,9 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS
                                     salt:(NSData *)salt
     MTR_NEWLY_DEPRECATED("Please use computePASEVerifierForSetupPasscode:iterations:salt:error:");
 
+- (void)setPairingDelegate:(id)delegate
+                     queue:(dispatch_queue_t)queue MTR_NEWLY_DEPRECATED("Please use setDeviceControllerDelegate:");
+
 @end
 
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm
index 33de705b8fc660..9dadeb117ce406 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceController.mm
+++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm
@@ -20,10 +20,10 @@
 
 #import "MTRBaseDevice_Internal.h"
 #import "MTRCommissioningParameters.h"
+#import "MTRDeviceControllerDelegateBridge.h"
 #import "MTRDeviceControllerFactory_Internal.h"
 #import "MTRDeviceControllerStartupParams.h"
 #import "MTRDeviceControllerStartupParams_Internal.h"
-#import "MTRDevicePairingDelegateBridge.h"
 #import "MTRDevice_Internal.h"
 #import "MTRError_Internal.h"
 #import "MTRKeypair.h"
@@ -84,7 +84,7 @@ @interface MTRDeviceController ()
 
 @property (readonly) chip::Controller::DeviceCommissioner * cppCommissioner;
 @property (readonly) chip::Credentials::PartialDACVerifier * partialDACVerifier;
-@property (readonly) MTRDevicePairingDelegateBridge * pairingDelegateBridge;
+@property (readonly) MTRDeviceControllerDelegateBridge * deviceControllerDelegateBridge;
 @property (readonly) MTROperationalCredentialsDelegate * operationalCredentialsDelegate;
 @property (readonly) MTRP256KeypairBridge signingKeypairBridge;
 @property (readonly) MTRP256KeypairBridge operationalKeypairBridge;
@@ -104,8 +104,8 @@ - (instancetype)initWithFactory:(MTRDeviceControllerFactory *)factory queue:(dis
         _deviceMapLock = OS_UNFAIR_LOCK_INIT;
         _nodeIDToDeviceMap = [NSMutableDictionary dictionary];
 
-        _pairingDelegateBridge = new MTRDevicePairingDelegateBridge();
-        if ([self checkForInitError:(_pairingDelegateBridge != nullptr) logMsg:kErrorPairingInit]) {
+        _deviceControllerDelegateBridge = new MTRDeviceControllerDelegateBridge();
+        if ([self checkForInitError:(_deviceControllerDelegateBridge != nullptr) logMsg:kErrorPairingInit]) {
             return nil;
         }
 
@@ -184,9 +184,9 @@ - (void)cleanup
         _partialDACVerifier = nullptr;
     }
 
-    if (_pairingDelegateBridge) {
-        delete _pairingDelegateBridge;
-        _pairingDelegateBridge = nullptr;
+    if (_deviceControllerDelegateBridge) {
+        delete _deviceControllerDelegateBridge;
+        _deviceControllerDelegateBridge = nullptr;
     }
 }
 
@@ -256,7 +256,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams
 
         chip::Controller::SetupParams commissionerParams;
 
-        commissionerParams.pairingDelegate = _pairingDelegateBridge;
+        commissionerParams.pairingDelegate = _deviceControllerDelegateBridge;
 
         _operationalCredentialsDelegate->SetDeviceCommissioner(_cppCommissioner);
 
@@ -535,14 +535,14 @@ - (void)removeDevice:(MTRDevice *)device
     os_unfair_lock_unlock(&_deviceMapLock);
 }
 
-- (void)setPairingDelegate:(id)delegate queue:(dispatch_queue_t)queue
+- (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue
 {
     VerifyOrReturn([self checkIsRunning]);
 
     dispatch_async(_chipWorkQueue, ^{
         VerifyOrReturn([self checkIsRunning]);
 
-        self->_pairingDelegateBridge->setDelegate(delegate, queue);
+        self->_deviceControllerDelegateBridge->setDelegate(delegate, queue);
     });
 }
 
@@ -823,6 +823,70 @@ - (void)invalidateCASESessionForNode:(chip::NodeId)nodeID;
 }
 @end
 
+/**
+ * Shim to allow us to treat an MTRDevicePairingDelegate as an
+ * MTRDeviceControllerDelegate.
+ */
+@interface MTRDevicePairingDelegateShim : NSObject 
+@property (nonatomic, readonly) id delegate;
+- (instancetype)initWithDelegate:(id)delegate;
+@end
+
+@implementation MTRDevicePairingDelegateShim
+- (instancetype)initWithDelegate:(id)delegate
+{
+    if (self = [super init]) {
+        _delegate = delegate;
+    }
+    return self;
+}
+
+- (BOOL)respondsToSelector:(SEL)selector
+{
+    // This logic will need to change a bit when the MTRDeviceControllerDelegate
+    // signatures change.  It's shaped the way it is to make those changes
+    // easier.
+    if (selector == @selector(onStatusUpdate:)) {
+        return [self.delegate respondsToSelector:@selector(onStatusUpdate:)];
+    }
+
+    if (selector == @selector(onPairingComplete:)) {
+        return [self.delegate respondsToSelector:@selector(onPairingComplete:)];
+    }
+
+    if (selector == @selector(onCommissioningComplete:)) {
+        return [self.delegate respondsToSelector:@selector(onCommissioningComplete:)];
+    }
+
+    if (selector == @selector(onPairingDeleted:)) {
+        return [self.delegate respondsToSelector:@selector(onPairingDeleted:)];
+    }
+
+    return [super respondsToSelector:selector];
+}
+
+- (void)onStatusUpdate:(MTRCommissioningStatus)status
+{
+    [self.delegate onStatusUpdate:static_cast(status)];
+}
+
+- (void)onPairingComplete:(NSError * _Nullable)error
+{
+    [self.delegate onPairingComplete:error];
+}
+
+- (void)onCommissioningComplete:(NSError * _Nullable)error
+{
+    [self.delegate onCommissioningComplete:error];
+}
+
+- (void)onPairingDeleted:(NSError * _Nullable)error
+{
+    [self.delegate onPairingDeleted:error];
+}
+
+@end
+
 @implementation MTRDeviceController (Deprecated)
 
 - (NSNumber *)controllerNodeId
@@ -1040,4 +1104,10 @@ - (nullable NSData *)computePaseVerifier:(uint32_t)setupPincode iterations:(uint
     return [MTRDeviceController computePASEVerifierForSetupPasscode:@(setupPincode) iterations:@(iterations) salt:salt error:nil];
 }
 
+- (void)setPairingDelegate:(id)delegate queue:(dispatch_queue_t)queue
+{
+    auto * delegateShim = [[MTRDevicePairingDelegateShim alloc] initWithDelegate:delegate];
+    [self setDeviceControllerDelegate:delegateShim queue:queue];
+}
+
 @end
diff --git a/src/darwin/Framework/CHIP/MTRDevicePairingDelegate.h b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
similarity index 54%
rename from src/darwin/Framework/CHIP/MTRDevicePairingDelegate.h
rename to src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
index 0ecce764b66908..fc0c0d9ec2d008 100644
--- a/src/darwin/Framework/CHIP/MTRDevicePairingDelegate.h
+++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
@@ -19,25 +19,26 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-typedef NS_ENUM(NSUInteger, MTRPairingStatus) {
-    MTRPairingStatusUnknown = 0,
-    MTRPairingStatusSuccess = 1,
-    MTRPairingStatusFailed = 2,
-    MTRPairingStatusDiscoveringMoreDevices = 3
-};
+typedef NS_ENUM(NSInteger, MTRCommissioningStatus) {
+    MTRCommissioningStatusUnknown = 0,
+    MTRCommissioningStatusSuccess = 1,
+    MTRCommissioningStatusFailed = 2,
+    MTRCommissioningStatusDiscoveringMoreDevices = 3
+} MTR_NEWLY_AVAILABLE;
 
 /**
- * The protocol definition for the MTRDevicePairingDelegate
+ * The protocol definition for the MTRDeviceControllerDelegate
  *
  * All delegate methods will be called on the supplied Delegate Queue.
  */
-@protocol MTRDevicePairingDelegate 
+MTR_NEWLY_AVAILABLE
+@protocol MTRDeviceControllerDelegate 
 @optional
 /**
  * Notify the delegate when pairing status gets updated
  *
  */
-- (void)onStatusUpdate:(MTRPairingStatus)status;
+- (void)onStatusUpdate:(MTRCommissioningStatus)status;
 
 /**
  * Notify the delegate when pairing is completed
@@ -59,4 +60,21 @@ typedef NS_ENUM(NSUInteger, MTRPairingStatus) {
 
 @end
 
+typedef NS_ENUM(NSUInteger, MTRPairingStatus) {
+    MTRPairingStatusUnknown MTR_NEWLY_DEPRECATED("Please use MTRCommissioningStatusUnknown") = 0,
+    MTRPairingStatusSuccess MTR_NEWLY_DEPRECATED("Please use MTRCommissioningStatusSuccess") = 1,
+    MTRPairingStatusFailed MTR_NEWLY_DEPRECATED("Please use MTRCommissioningStatusFailed") = 2,
+    MTRPairingStatusDiscoveringMoreDevices MTR_NEWLY_DEPRECATED("Please use MTRCommissioningStatusDiscoveringMoreDevices") = 3
+} MTR_NEWLY_DEPRECATED("Please use MTRCommissioningStatus");
+
+MTR_NEWLY_DEPRECATED("Please use MTRDeviceControllerDelegate")
+@protocol MTRDevicePairingDelegate 
+@optional
+- (void)onStatusUpdate:(MTRPairingStatus)status;
+- (void)onPairingComplete:(NSError * _Nullable)error;
+- (void)onCommissioningComplete:(NSError * _Nullable)error;
+- (void)onPairingDeleted:(NSError * _Nullable)error;
+
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.h b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.h
similarity index 71%
rename from src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.h
rename to src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.h
index a932319aaf4352..299e85b6a3b5ae 100644
--- a/src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.h
+++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.h
@@ -15,20 +15,20 @@
  *    limitations under the License.
  */
 
-#import "MTRDevicePairingDelegate.h"
+#import "MTRDeviceControllerDelegate.h"
 
 #include 
 #include 
 
 NS_ASSUME_NONNULL_BEGIN
 
-class MTRDevicePairingDelegateBridge : public chip::Controller::DevicePairingDelegate
+class MTRDeviceControllerDelegateBridge : public chip::Controller::DevicePairingDelegate
 {
 public:
-    MTRDevicePairingDelegateBridge();
-    ~MTRDevicePairingDelegateBridge();
+    MTRDeviceControllerDelegateBridge();
+    ~MTRDeviceControllerDelegateBridge();
 
-    void setDelegate(id delegate, dispatch_queue_t queue);
+    void setDelegate(id delegate, dispatch_queue_t queue);
 
     void OnStatusUpdate(chip::Controller::DevicePairingDelegate::Status status) override;
 
@@ -39,10 +39,10 @@ class MTRDevicePairingDelegateBridge : public chip::Controller::DevicePairingDel
     void OnCommissioningComplete(chip::NodeId deviceId, CHIP_ERROR error) override;
 
 private:
-    _Nullable id mDelegate;
+    _Nullable id mDelegate;
     _Nullable dispatch_queue_t mQueue;
 
-    MTRPairingStatus MapStatus(chip::Controller::DevicePairingDelegate::Status status);
+    MTRCommissioningStatus MapStatus(chip::Controller::DevicePairingDelegate::Status status);
 };
 
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.mm b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
similarity index 57%
rename from src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.mm
rename to src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
index f0393f562d8262..7ef07f87ce860c 100644
--- a/src/darwin/Framework/CHIP/MTRDevicePairingDelegateBridge.mm
+++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
@@ -15,17 +15,17 @@
  *    limitations under the License.
  */
 
-#import "MTRDevicePairingDelegateBridge.h"
+#import "MTRDeviceControllerDelegateBridge.h"
 #import "MTRError_Internal.h"
 
-MTRDevicePairingDelegateBridge::MTRDevicePairingDelegateBridge(void)
+MTRDeviceControllerDelegateBridge::MTRDeviceControllerDelegateBridge(void)
     : mDelegate(nil)
 {
 }
 
-MTRDevicePairingDelegateBridge::~MTRDevicePairingDelegateBridge(void) {}
+MTRDeviceControllerDelegateBridge::~MTRDeviceControllerDelegateBridge(void) {}
 
-void MTRDevicePairingDelegateBridge::setDelegate(id delegate, dispatch_queue_t queue)
+void MTRDeviceControllerDelegateBridge::setDelegate(id delegate, dispatch_queue_t queue)
 {
     if (delegate && queue) {
         mDelegate = delegate;
@@ -36,43 +36,43 @@
     }
 }
 
-MTRPairingStatus MTRDevicePairingDelegateBridge::MapStatus(chip::Controller::DevicePairingDelegate::Status status)
+MTRCommissioningStatus MTRDeviceControllerDelegateBridge::MapStatus(chip::Controller::DevicePairingDelegate::Status status)
 {
-    MTRPairingStatus rv = MTRPairingStatusUnknown;
+    MTRCommissioningStatus rv = MTRCommissioningStatusUnknown;
     switch (status) {
     case chip::Controller::DevicePairingDelegate::Status::SecurePairingSuccess:
-        rv = MTRPairingStatusSuccess;
+        rv = MTRCommissioningStatusSuccess;
         break;
     case chip::Controller::DevicePairingDelegate::Status::SecurePairingFailed:
-        rv = MTRPairingStatusFailed;
+        rv = MTRCommissioningStatusFailed;
         break;
     case chip::Controller::DevicePairingDelegate::Status::SecurePairingDiscoveringMoreDevices:
-        rv = MTRPairingStatusDiscoveringMoreDevices;
+        rv = MTRCommissioningStatusDiscoveringMoreDevices;
         break;
     }
     return rv;
 }
 
-void MTRDevicePairingDelegateBridge::OnStatusUpdate(chip::Controller::DevicePairingDelegate::Status status)
+void MTRDeviceControllerDelegateBridge::OnStatusUpdate(chip::Controller::DevicePairingDelegate::Status status)
 {
-    NSLog(@"DevicePairingDelegate status updated: %d", status);
+    NSLog(@"DeviceControllerDelegate status updated: %d", status);
 
-    id strongDelegate = mDelegate;
+    id strongDelegate = mDelegate;
     if ([strongDelegate respondsToSelector:@selector(onStatusUpdate:)]) {
         if (strongDelegate && mQueue) {
-            MTRPairingStatus pairingStatus = MapStatus(status);
+            MTRCommissioningStatus commissioningStatus = MapStatus(status);
             dispatch_async(mQueue, ^{
-                [strongDelegate onStatusUpdate:pairingStatus];
+                [strongDelegate onStatusUpdate:commissioningStatus];
             });
         }
     }
 }
 
-void MTRDevicePairingDelegateBridge::OnPairingComplete(CHIP_ERROR error)
+void MTRDeviceControllerDelegateBridge::OnPairingComplete(CHIP_ERROR error)
 {
-    NSLog(@"DevicePairingDelegate Pairing complete. Status %s", chip::ErrorStr(error));
+    NSLog(@"DeviceControllerDelegate Pairing complete. Status %s", chip::ErrorStr(error));
 
-    id strongDelegate = mDelegate;
+    id strongDelegate = mDelegate;
     if ([strongDelegate respondsToSelector:@selector(onPairingComplete:)]) {
         if (strongDelegate && mQueue) {
             dispatch_async(mQueue, ^{
@@ -83,11 +83,11 @@
     }
 }
 
-void MTRDevicePairingDelegateBridge::OnPairingDeleted(CHIP_ERROR error)
+void MTRDeviceControllerDelegateBridge::OnPairingDeleted(CHIP_ERROR error)
 {
-    NSLog(@"DevicePairingDelegate Pairing deleted. Status %s", chip::ErrorStr(error));
+    NSLog(@"DeviceControllerDelegate Pairing deleted. Status %s", chip::ErrorStr(error));
 
-    id strongDelegate = mDelegate;
+    id strongDelegate = mDelegate;
     if ([strongDelegate respondsToSelector:@selector(onPairingDeleted:)]) {
         if (strongDelegate && mQueue) {
             dispatch_async(mQueue, ^{
@@ -98,11 +98,11 @@
     }
 }
 
-void MTRDevicePairingDelegateBridge::OnCommissioningComplete(chip::NodeId nodeId, CHIP_ERROR error)
+void MTRDeviceControllerDelegateBridge::OnCommissioningComplete(chip::NodeId nodeId, CHIP_ERROR error)
 {
-    NSLog(@"DevicePairingDelegate Commissioning complete. NodeId %llu Status %s", nodeId, chip::ErrorStr(error));
+    NSLog(@"DeviceControllerDelegate Commissioning complete. NodeId %llu Status %s", nodeId, chip::ErrorStr(error));
 
-    id strongDelegate = mDelegate;
+    id strongDelegate = mDelegate;
     if ([strongDelegate respondsToSelector:@selector(onCommissioningComplete:)]) {
         if (strongDelegate && mQueue) {
             dispatch_async(mQueue, ^{
diff --git a/src/darwin/Framework/CHIP/Matter.h b/src/darwin/Framework/CHIP/Matter.h
index dc71d1cb998dd5..0961053495f706 100644
--- a/src/darwin/Framework/CHIP/Matter.h
+++ b/src/darwin/Framework/CHIP/Matter.h
@@ -41,9 +41,9 @@
 #import 
 #import 
 #import 
+#import 
 #import 
 #import 
-#import 
 #import 
 #import 
 #import 
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 0c23ae5a017b28..9ad67477413651 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -80,11 +80,11 @@ - (void)failSubscribers:(dispatch_queue_t)queue completion:(void (^)(void))compl
 @end
 #endif
 
-@interface MTRDeviceTestPairingDelegate : NSObject 
+@interface MTRDeviceTestDeviceControllerDelegate : NSObject 
 @property (nonatomic, strong) XCTestExpectation * expectation;
 @end
 
-@implementation MTRDeviceTestPairingDelegate
+@implementation MTRDeviceTestDeviceControllerDelegate
 - (id)initWithExpectation:(XCTestExpectation *)expectation
 {
     self = [super init];
@@ -186,10 +186,11 @@ - (void)initStack
 
     sController = controller;
 
-    MTRDeviceTestPairingDelegate * pairing = [[MTRDeviceTestPairingDelegate alloc] initWithExpectation:expectation];
-    dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.pairing", DISPATCH_QUEUE_SERIAL);
+    MTRDeviceTestDeviceControllerDelegate * deviceControllerDelegate =
+        [[MTRDeviceTestDeviceControllerDelegate alloc] initWithExpectation:expectation];
+    dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.device_controller_delegate", DISPATCH_QUEUE_SERIAL);
 
-    [controller setPairingDelegate:pairing queue:callbackQueue];
+    [controller setDeviceControllerDelegate:deviceControllerDelegate queue:callbackQueue];
 
     NSError * error;
     __auto_type * payload = [MTRSetupPayload setupPayloadWithOnboardingPayload:kOnboardingPayload error:&error];
diff --git a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
index ad82cd9ab742ae..1cb29d3c274cdd 100644
--- a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
@@ -402,11 +402,11 @@ - (void)readAttributeCacheWithController:(id _Nullable)controller
     return mConnectedDevice;
 }
 
-@interface MTRRemoteDeviceSampleTestPairingDelegate : NSObject 
+@interface MTRRemoteDeviceSampleTestDeviceControllerDelegate : NSObject 
 @property (nonatomic, strong) XCTestExpectation * expectation;
 @end
 
-@implementation MTRRemoteDeviceSampleTestPairingDelegate
+@implementation MTRRemoteDeviceSampleTestDeviceControllerDelegate
 - (id)initWithExpectation:(XCTestExpectation *)expectation
 {
     self = [super init];
@@ -485,11 +485,11 @@ - (void)initStack
 
     sController = controller;
 
-    MTRRemoteDeviceSampleTestPairingDelegate * pairing =
-        [[MTRRemoteDeviceSampleTestPairingDelegate alloc] initWithExpectation:expectation];
-    dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.pairing", DISPATCH_QUEUE_SERIAL);
+    MTRRemoteDeviceSampleTestDeviceControllerDelegate * deviceControllerDelegate =
+        [[MTRRemoteDeviceSampleTestDeviceControllerDelegate alloc] initWithExpectation:expectation];
+    dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.device_controller_delegate", DISPATCH_QUEUE_SERIAL);
 
-    [controller setPairingDelegate:pairing queue:callbackQueue];
+    [controller setDeviceControllerDelegate:deviceControllerDelegate queue:callbackQueue];
 
     __auto_type * payload = [MTRSetupPayload setupPayloadWithOnboardingPayload:kOnboardingPayload error:&error];
     XCTAssertNotNil(payload);
diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
index 0cf5642bf40f9b..9ed05837ea22a9 100644
--- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
@@ -29,9 +29,9 @@
 		2C8C8FC0253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8C8FBD253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.h */; };
 		2C8C8FC1253E0C2100797F05 /* MTRStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8C8FBE253E0C2100797F05 /* MTRStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		2C8C8FC2253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C8C8FBF253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.mm */; };
-		2CB7163B252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB71638252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.h */; };
-		2CB7163C252E8A7C0026E2BB /* MTRDevicePairingDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */; };
-		2CB7163F252F731E0026E2BB /* MTRDevicePairingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		2CB7163B252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB71638252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h */; };
+		2CB7163C252E8A7C0026E2BB /* MTRDeviceControllerDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2CB71639252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.mm */; };
+		2CB7163F252F731E0026E2BB /* MTRDeviceControllerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB7163E252F731E0026E2BB /* MTRDeviceControllerDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		2FD775552695557E00FF4B12 /* error-mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FD775542695557E00FF4B12 /* error-mapping.cpp */; };
 		3CF134A7289D8ADA0017A19E /* MTRCSRInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */; };
@@ -170,9 +170,9 @@
 		2C8C8FBD253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRPersistentStorageDelegateBridge.h; sourceTree = ""; };
 		2C8C8FBE253E0C2100797F05 /* MTRStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRStorage.h; sourceTree = ""; };
 		2C8C8FBF253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRPersistentStorageDelegateBridge.mm; sourceTree = ""; };
-		2CB71638252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDevicePairingDelegateBridge.h; sourceTree = ""; };
-		2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDevicePairingDelegateBridge.mm; sourceTree = ""; };
-		2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDevicePairingDelegate.h; sourceTree = ""; };
+		2CB71638252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerDelegateBridge.h; sourceTree = ""; };
+		2CB71639252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDeviceControllerDelegateBridge.mm; sourceTree = ""; };
+		2CB7163E252F731E0026E2BB /* MTRDeviceControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerDelegate.h; sourceTree = ""; };
 		2FD775542695557E00FF4B12 /* error-mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "error-mapping.cpp"; path = "../../../app/util/error-mapping.cpp"; sourceTree = ""; };
 		3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRCSRInfo.h; sourceTree = ""; };
 		3CF134A8289D8D800017A19E /* MTRCSRInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRCSRInfo.m; sourceTree = ""; };
@@ -403,9 +403,9 @@
 				2C8C8FBF253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.mm */,
 				99D466E02798936D0089A18F /* MTRCommissioningParameters.h */,
 				99AECC7F2798A57E00B6355B /* MTRCommissioningParameters.m */,
-				2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */,
-				2CB71638252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.h */,
-				2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */,
+				2CB7163E252F731E0026E2BB /* MTRDeviceControllerDelegate.h */,
+				2CB71638252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h */,
+				2CB71639252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.mm */,
 				AF1CB86D2874B03B00865A96 /* MTROTAProviderDelegate.h */,
 				AF1CB86F2874B04C00865A96 /* MTROTAProviderDelegateBridge.h */,
 				AF5F90FE2878D351005503FA /* MTROTAProviderDelegateBridge.mm */,
@@ -507,7 +507,7 @@
 				5A6FEC9927B5C88900F25F42 /* MTRDeviceOverXPC.h in Headers */,
 				51B22C222740CB1D008D5055 /* MTRCommandPayloadsObjc.h in Headers */,
 				51B22C1E2740CB0A008D5055 /* MTRStructsObjc.h in Headers */,
-				2CB7163B252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.h in Headers */,
+				2CB7163B252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h in Headers */,
 				5ACDDD7A27CD129700EFD68A /* MTRAttributeCacheContainer.h in Headers */,
 				5A6FEC9227B5669C00F25F42 /* MTRDeviceControllerOverXPC.h in Headers */,
 				2C1B027B2641DB4E00780EF1 /* MTROperationalCredentialsDelegate.h in Headers */,
@@ -519,7 +519,7 @@
 				D4772A46285AE98400383630 /* MTRClusterConstants.h in Headers */,
 				B289D4212639C0D300D4E314 /* MTROnboardingPayloadParser.h in Headers */,
 				513DDB862761F69300DAA01A /* MTRAttributeTLVValueDecoder_Internal.h in Headers */,
-				2CB7163F252F731E0026E2BB /* MTRDevicePairingDelegate.h in Headers */,
+				2CB7163F252F731E0026E2BB /* MTRDeviceControllerDelegate.h in Headers */,
 				88EBF8CE27FABDD500686BC1 /* MTRDeviceAttestationDelegate.h in Headers */,
 				2C222AD0255C620600E446B9 /* MTRBaseDevice.h in Headers */,
 				7596A84F2877E6A9004DAE0E /* MTRCluster_internal.h in Headers */,
@@ -689,7 +689,7 @@
 			files = (
 				2C8C8FC2253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.mm in Sources */,
 				99AECC802798A57F00B6355B /* MTRCommissioningParameters.m in Sources */,
-				2CB7163C252E8A7C0026E2BB /* MTRDevicePairingDelegateBridge.mm in Sources */,
+				2CB7163C252E8A7C0026E2BB /* MTRDeviceControllerDelegateBridge.mm in Sources */,
 				997DED162695343400975E97 /* MTRThreadOperationalDataset.mm in Sources */,
 				515C1C6F284F9FFB00A48F0C /* MTRMemory.mm in Sources */,
 				27A53C1827FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm in Sources */,

From 9ba857bc81ff1843a2256ea94dbc1b9bc1f34452 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Wed, 16 Nov 2022 11:03:20 -0500
Subject: [PATCH 07/36] Add a Darwin utility to convert Matter TLV certificates
 to DER. (#23628)

We have one for going DER -> TLV, but nothing for TLV -> DER.
---
 src/darwin/Framework/CHIP/MTRCertificates.h   | 10 ++++++
 src/darwin/Framework/CHIP/MTRCertificates.mm  | 17 +++++++++
 .../Framework/CHIPTests/MTRCertificateTests.m | 36 +++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/src/darwin/Framework/CHIP/MTRCertificates.h b/src/darwin/Framework/CHIP/MTRCertificates.h
index 57eac0239a069d..e18878f8773b57 100644
--- a/src/darwin/Framework/CHIP/MTRCertificates.h
+++ b/src/darwin/Framework/CHIP/MTRCertificates.h
@@ -141,6 +141,16 @@ NS_ASSUME_NONNULL_BEGIN
  */
 + (MTRCertificateTLVBytes _Nullable)convertX509Certificate:(MTRCertificateDERBytes)x509Certificate;
 
+/**
+ * Convert the given Matter TLV encoded certificate to the X.509v3 DER encoded
+ * format.
+ *
+ * Returns nil if the conversion fails (e.g. if the input data cannot be parsed
+ * as a Matter TLV encoded certificate, or if the certificate cannot be
+ * represented in the X.509v3 DER format).
+ */
++ (MTRCertificateDERBytes _Nullable)convertMatterCertificate:(MTRCertificateTLVBytes)matterCertificate MTR_NEWLY_AVAILABLE;
+
 @end
 
 @interface MTRCertificates (Deprecated)
diff --git a/src/darwin/Framework/CHIP/MTRCertificates.mm b/src/darwin/Framework/CHIP/MTRCertificates.mm
index 1996cbd10f1845..39735bd79d3771 100644
--- a/src/darwin/Framework/CHIP/MTRCertificates.mm
+++ b/src/darwin/Framework/CHIP/MTRCertificates.mm
@@ -214,6 +214,23 @@ + (MTRCertificateTLVBytes _Nullable)convertX509Certificate:(MTRCertificateDERByt
     return AsData(chipCertBytes);
 }
 
++ (MTRCertificateDERBytes _Nullable)convertMatterCertificate:(MTRCertificateTLVBytes)matterCertificate
+{
+    chip::ByteSpan tlvCertBytes = AsByteSpan(matterCertificate);
+
+    uint8_t derCertBuffer[chip::Controller::kMaxCHIPDERCertLength];
+    chip::MutableByteSpan derCertBytes(derCertBuffer);
+
+    CHIP_ERROR errorCode = chip::Credentials::ConvertChipCertToX509Cert(tlvCertBytes, derCertBytes);
+
+    if (errorCode != CHIP_NO_ERROR) {
+        MTR_LOG_ERROR("ConvertChipCertToX509Cert: %{public}s", chip::ErrorStr(errorCode));
+        return nil;
+    }
+
+    return AsData(derCertBytes);
+}
+
 @end
 
 @implementation MTRCertificates (Deprecated)
diff --git a/src/darwin/Framework/CHIPTests/MTRCertificateTests.m b/src/darwin/Framework/CHIPTests/MTRCertificateTests.m
index e42ea141a1c987..abb6007231ea60 100644
--- a/src/darwin/Framework/CHIPTests/MTRCertificateTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRCertificateTests.m
@@ -34,6 +34,15 @@ - (void)testGenerateRootCert
 
     __auto_type * rootCert = [MTRCertificates createRootCertificate:testKeys issuerID:nil fabricID:nil error:nil];
     XCTAssertNotNil(rootCert);
+
+    // Test round-trip through TLV format.
+    __auto_type * tlvCert = [MTRCertificates convertX509Certificate:rootCert];
+    XCTAssertNotNil(tlvCert);
+
+    __auto_type * derCert = [MTRCertificates convertMatterCertificate:tlvCert];
+    XCTAssertNotNil(derCert);
+
+    XCTAssertEqualObjects(rootCert, derCert);
 }
 
 - (void)testGenerateIntermediateCert
@@ -54,6 +63,15 @@ - (void)testGenerateIntermediateCert
                                                                            fabricID:nil
                                                                               error:nil];
     XCTAssertNotNil(intermediateCert);
+
+    // Test round-trip through TLV format.
+    __auto_type * tlvCert = [MTRCertificates convertX509Certificate:intermediateCert];
+    XCTAssertNotNil(tlvCert);
+
+    __auto_type * derCert = [MTRCertificates convertMatterCertificate:tlvCert];
+    XCTAssertNotNil(derCert);
+
+    XCTAssertEqualObjects(intermediateCert, derCert);
 }
 
 - (void)testGenerateOperationalCertNoIntermediate
@@ -81,6 +99,15 @@ - (void)testGenerateOperationalCertNoIntermediate
                                                             caseAuthenticatedTags:cats
                                                                             error:nil];
     XCTAssertNotNil(operationalCert);
+
+    // Test round-trip through TLV format.
+    __auto_type * tlvCert = [MTRCertificates convertX509Certificate:operationalCert];
+    XCTAssertNotNil(tlvCert);
+
+    __auto_type * derCert = [MTRCertificates convertMatterCertificate:tlvCert];
+    XCTAssertNotNil(derCert);
+
+    XCTAssertEqualObjects(operationalCert, derCert);
 }
 
 - (void)testGenerateOperationalCertWithIntermediate
@@ -113,6 +140,15 @@ - (void)testGenerateOperationalCertWithIntermediate
                                                             caseAuthenticatedTags:nil
                                                                             error:nil];
     XCTAssertNotNil(operationalCert);
+
+    // Test round-trip through TLV format.
+    __auto_type * tlvCert = [MTRCertificates convertX509Certificate:operationalCert];
+    XCTAssertNotNil(tlvCert);
+
+    __auto_type * derCert = [MTRCertificates convertMatterCertificate:tlvCert];
+    XCTAssertNotNil(derCert);
+
+    XCTAssertEqualObjects(operationalCert, derCert);
 }
 
 - (void)testGenerateOperationalCertErrorCases

From e0021745e8871d985c8a4b461e24412e50617c3b Mon Sep 17 00:00:00 2001
From: Dieter Van der Meulen <87530904+dvdm-qorvo@users.noreply.github.com>
Date: Wed, 16 Nov 2022 17:18:59 +0100
Subject: [PATCH 08/36] Change BLE notifications to indications for QPG
 (#23635)

---
 .gitmodules                         | 2 +-
 src/platform/qpg/BLEManagerImpl.cpp | 6 +++---
 third_party/qpg_sdk/repo            | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/.gitmodules b/.gitmodules
index 5b8d0b466a3b40..0da2aaa3ce495a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -52,7 +52,7 @@
 [submodule "qpg_sdk"]
 	path = third_party/qpg_sdk/repo
 	url = https://github.com/Qorvo/QMatter
-	branch  = v0.9.0.0-libs
+	branch  = vlatest-libs
 	platforms = qpg
 [submodule "zap"]
 	path = third_party/zap/repo
diff --git a/src/platform/qpg/BLEManagerImpl.cpp b/src/platform/qpg/BLEManagerImpl.cpp
index f466491ff724c8..2c7d7a0adfcf4b 100644
--- a/src/platform/qpg/BLEManagerImpl.cpp
+++ b/src/platform/qpg/BLEManagerImpl.cpp
@@ -292,17 +292,17 @@ bool BLEManagerImpl::SendIndication(BLE_CONNECTION_OBJECT conId, const ChipBleUU
     uint16_t dataLen = data->DataLength();
 
     VerifyOrExit(IsSubscribed(conId), err = CHIP_ERROR_INVALID_ARGUMENT);
-    ChipLogDetail(DeviceLayer, "Sending notification for CHIPoBLE Client TX (con %u, len %u)", conId, dataLen);
+    ChipLogDetail(DeviceLayer, "Sending indication for CHIPoBLE Client TX (con %u, len %u)", conId, dataLen);
 
     isRxHandle = UUIDsMatch(&chipUUID_CHIPoBLEChar_RX, charId);
     cId        = qvCHIP_BleGetHandle(isRxHandle);
 
-    qvCHIP_BleSendNotification(conId, cId, dataLen, data->Start());
+    qvCHIP_BleSendIndication(conId, cId, dataLen, data->Start());
 
 exit:
     if (err != CHIP_NO_ERROR)
     {
-        ChipLogError(DeviceLayer, "BLEManagerImpl::SendNotification() failed: %s", ErrorStr(err));
+        ChipLogError(DeviceLayer, "BLEManagerImpl::SendIndication() failed: %s", ErrorStr(err));
         return false;
     }
     return true;
diff --git a/third_party/qpg_sdk/repo b/third_party/qpg_sdk/repo
index 8aadeb12092272..617a0b065592c0 160000
--- a/third_party/qpg_sdk/repo
+++ b/third_party/qpg_sdk/repo
@@ -1 +1 @@
-Subproject commit 8aadeb120922720aba2bf0be8d5230d979856a4e
+Subproject commit 617a0b065592c0bd298d28e4b275c830b91b3d7b

From d2ae082403226e65e199f2d633d2fa5a577d3598 Mon Sep 17 00:00:00 2001
From: lpbeliveau-silabs <112982107+lpbeliveau-silabs@users.noreply.github.com>
Date: Wed, 16 Nov 2022 11:43:39 -0500
Subject: [PATCH 09/36] Feature/common storage class (#23409)

* Moved structures from group data that could be re-used in scenes in a comon location: PersistentData.h

* Refactored the name of Iterator class to CommonIterator

Co-authored-by: Andrei Litvin 
---
 src/credentials/GroupDataProvider.h          |  39 +----
 src/credentials/GroupDataProviderImpl.cpp    | 154 +++----------------
 src/lib/support/CommonIterator.h             |  55 +++++++
 src/lib/support/CommonPersistentData.h       |  92 +++++++++++
 src/lib/support/DefaultStorageKeyAllocator.h |   4 +-
 src/lib/support/PersistentData.h             |  91 +++++++++++
 6 files changed, 268 insertions(+), 167 deletions(-)
 create mode 100644 src/lib/support/CommonIterator.h
 create mode 100644 src/lib/support/CommonPersistentData.h
 create mode 100644 src/lib/support/PersistentData.h

diff --git a/src/credentials/GroupDataProvider.h b/src/credentials/GroupDataProvider.h
index a782805af4d5d3..9b694d82c3a7a6 100644
--- a/src/credentials/GroupDataProvider.h
+++ b/src/credentials/GroupDataProvider.h
@@ -25,6 +25,7 @@
 #include 
 #include 
 #include 
+#include 
 
 namespace chip {
 namespace Credentials {
@@ -186,39 +187,11 @@ class GroupDataProvider
         virtual void OnGroupRemoved(FabricIndex fabric_index, const GroupInfo & old_group) = 0;
     };
 
-    /**
-     * Template used to iterate the stored group data
-     */
-    template 
-    class Iterator
-    {
-    public:
-        virtual ~Iterator() = default;
-        /**
-         *  @retval The number of entries in total that will be iterated.
-         */
-        virtual size_t Count() = 0;
-        /**
-         *   @param[out] item  Value associated with the next element in the iteration.
-         *  @retval true if the next entry is successfully retrieved.
-         *  @retval false if no more entries can be found.
-         */
-        virtual bool Next(T & item) = 0;
-        /**
-         * Release the memory allocated by this iterator.
-         * Must be called before the pointer goes out of scope.
-         */
-        virtual void Release() = 0;
-
-    protected:
-        Iterator() = default;
-    };
-
-    using GroupInfoIterator    = Iterator;
-    using GroupKeyIterator     = Iterator;
-    using EndpointIterator     = Iterator;
-    using KeySetIterator       = Iterator;
-    using GroupSessionIterator = Iterator;
+    using GroupInfoIterator    = CommonIterator;
+    using GroupKeyIterator     = CommonIterator;
+    using EndpointIterator     = CommonIterator;
+    using KeySetIterator       = CommonIterator;
+    using GroupSessionIterator = CommonIterator;
 
     GroupDataProvider(uint16_t maxGroupsPerFabric    = CHIP_CONFIG_MAX_GROUPS_PER_FABRIC,
                       uint16_t maxGroupKeysPerFabric = CHIP_CONFIG_MAX_GROUP_KEYS_PER_FABRIC) :
diff --git a/src/credentials/GroupDataProviderImpl.cpp b/src/credentials/GroupDataProviderImpl.cpp
index 180d5cbf35b742..87eb9d04d6ee4b 100644
--- a/src/credentials/GroupDataProviderImpl.cpp
+++ b/src/credentials/GroupDataProviderImpl.cpp
@@ -18,10 +18,11 @@
 #include 
 #include 
 #include 
+#include 
 #include 
+#include 
 #include 
 #include 
-#include 
 
 namespace chip {
 namespace Credentials {
@@ -32,69 +33,9 @@ using GroupEndpoint = GroupDataProvider::GroupEndpoint;
 using EpochKey      = GroupDataProvider::EpochKey;
 using KeySet        = GroupDataProvider::KeySet;
 using GroupSession  = GroupDataProvider::GroupSession;
+using FabricList    = CommonPersistentData::FabricList;
 
-static constexpr size_t kPersistentBufferMax = 128;
-
-template 
-struct PersistentData
-{
-    virtual ~PersistentData() = default;
-
-    virtual CHIP_ERROR UpdateKey(StorageKeyName & key)          = 0;
-    virtual CHIP_ERROR Serialize(TLV::TLVWriter & writer) const = 0;
-    virtual CHIP_ERROR Deserialize(TLV::TLVReader & reader)     = 0;
-    virtual void Clear()                                        = 0;
-
-    virtual CHIP_ERROR Save(PersistentStorageDelegate * storage)
-    {
-        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
-
-        uint8_t buffer[kMaxSerializedSize] = { 0 };
-        StorageKeyName key                 = StorageKeyName::Uninitialized();
-        ReturnErrorOnFailure(UpdateKey(key));
-
-        // Serialize the data
-        TLV::TLVWriter writer;
-        writer.Init(buffer, sizeof(buffer));
-        ReturnErrorOnFailure(Serialize(writer));
-
-        // Save serialized data
-        return storage->SyncSetKeyValue(key.KeyName(), buffer, static_cast(writer.GetLengthWritten()));
-    }
-
-    CHIP_ERROR Load(PersistentStorageDelegate * storage)
-    {
-        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
-
-        uint8_t buffer[kMaxSerializedSize] = { 0 };
-        StorageKeyName key                 = StorageKeyName::Uninitialized();
-
-        // Set data to defaults
-        Clear();
-        ReturnErrorOnFailure(UpdateKey(key));
-
-        // Load the serialized data
-        uint16_t size  = static_cast(sizeof(buffer));
-        CHIP_ERROR err = storage->SyncGetKeyValue(key.KeyName(), buffer, size);
-        VerifyOrReturnError(CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND != err, CHIP_ERROR_NOT_FOUND);
-        ReturnErrorOnFailure(err);
-
-        // Decode serialized data
-        TLV::TLVReader reader;
-        reader.Init(buffer, size);
-        return Deserialize(reader);
-    }
-
-    virtual CHIP_ERROR Delete(PersistentStorageDelegate * storage)
-    {
-        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
-
-        StorageKeyName key = StorageKeyName::Uninitialized();
-        ReturnErrorOnFailure(UpdateKey(key));
-
-        return storage->SyncDeleteKeyValue(key.KeyName());
-    }
-};
+constexpr size_t kPersistentBufferMax = 128;
 
 struct LinkedData : public PersistentData
 {
@@ -110,59 +51,6 @@ struct LinkedData : public PersistentData
     bool first      = true;
 };
 
-struct FabricList : public PersistentData
-{
-    static constexpr TLV::Tag TagFirstFabric() { return TLV::ContextTag(1); }
-    static constexpr TLV::Tag TagFabricCount() { return TLV::ContextTag(2); }
-
-    chip::FabricIndex first_fabric = kUndefinedFabricIndex;
-    uint8_t fabric_count           = 0;
-
-    FabricList() = default;
-    FabricList(chip::FabricIndex first) : first_fabric(first), fabric_count(1) {}
-
-    CHIP_ERROR UpdateKey(StorageKeyName & key) override
-    {
-        key = DefaultStorageKeyAllocator::GroupFabricList();
-        return CHIP_NO_ERROR;
-    }
-
-    void Clear() override
-    {
-        first_fabric = kUndefinedFabricIndex;
-        fabric_count = 0;
-    }
-
-    CHIP_ERROR Serialize(TLV::TLVWriter & writer) const override
-    {
-        TLV::TLVType container;
-        ReturnErrorOnFailure(writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, container));
-
-        ReturnErrorOnFailure(writer.Put(TagFirstFabric(), static_cast(first_fabric)));
-        ReturnErrorOnFailure(writer.Put(TagFabricCount(), static_cast(fabric_count)));
-
-        return writer.EndContainer(container);
-    }
-
-    CHIP_ERROR Deserialize(TLV::TLVReader & reader) override
-    {
-        ReturnErrorOnFailure(reader.Next(TLV::AnonymousTag()));
-        VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_INTERNAL);
-
-        TLV::TLVType container;
-        ReturnErrorOnFailure(reader.EnterContainer(container));
-
-        // first_fabric
-        ReturnErrorOnFailure(reader.Next(TagFirstFabric()));
-        ReturnErrorOnFailure(reader.Get(first_fabric));
-        // fabric_count
-        ReturnErrorOnFailure(reader.Next(TagFabricCount()));
-        ReturnErrorOnFailure(reader.Get(fabric_count));
-
-        return reader.ExitContainer(container);
-    }
-};
-
 struct FabricData : public PersistentData
 {
     static constexpr TLV::Tag TagFirstGroup() { return TLV::ContextTag(1); }
@@ -257,15 +145,15 @@ struct FabricData : public PersistentData
         if (CHIP_ERROR_NOT_FOUND == err)
         {
             // New fabric list
-            fabric_list.first_fabric = fabric_index;
-            fabric_list.fabric_count = 1;
+            fabric_list.first_entry = fabric_index;
+            fabric_list.entry_count = 1;
             return fabric_list.Save(storage);
         }
         ReturnErrorOnFailure(err);
 
         // Existing fabric list, search for existing entry
-        FabricData fabric(fabric_list.first_fabric);
-        for (size_t i = 0; i < fabric_list.fabric_count; i++)
+        FabricData fabric(fabric_list.first_entry);
+        for (size_t i = 0; i < fabric_list.entry_count; i++)
         {
             err = fabric.Load(storage);
             if (CHIP_NO_ERROR != err)
@@ -280,9 +168,9 @@ struct FabricData : public PersistentData
             fabric.fabric_index = fabric.next;
         }
         // Add this fabric to the fabric list
-        this->next               = fabric_list.first_fabric;
-        fabric_list.first_fabric = this->fabric_index;
-        fabric_list.fabric_count++;
+        this->next              = fabric_list.first_entry;
+        fabric_list.first_entry = this->fabric_index;
+        fabric_list.entry_count++;
         return fabric_list.Save(storage);
     }
 
@@ -294,10 +182,10 @@ struct FabricData : public PersistentData
         VerifyOrReturnError(CHIP_NO_ERROR == err || CHIP_ERROR_NOT_FOUND == err, err);
 
         // Existing fabric list, search for existing entry
-        FabricData fabric(fabric_list.first_fabric);
+        FabricData fabric(fabric_list.first_entry);
         FabricData prev;
 
-        for (size_t i = 0; i < fabric_list.fabric_count; i++)
+        for (size_t i = 0; i < fabric_list.entry_count; i++)
         {
             err = fabric.Load(storage);
             if (CHIP_NO_ERROR != err)
@@ -310,7 +198,7 @@ struct FabricData : public PersistentData
                 if (i == 0)
                 {
                     // Remove first fabric
-                    fabric_list.first_fabric = this->next;
+                    fabric_list.first_entry = this->next;
                 }
                 else
                 {
@@ -318,8 +206,8 @@ struct FabricData : public PersistentData
                     prev.next = this->next;
                     ReturnErrorOnFailure(prev.Save(storage));
                 }
-                VerifyOrReturnError(fabric_list.fabric_count > 0, CHIP_ERROR_INTERNAL);
-                fabric_list.fabric_count--;
+                VerifyOrReturnError(fabric_list.entry_count > 0, CHIP_ERROR_INTERNAL);
+                fabric_list.entry_count--;
                 return fabric_list.Save(storage);
             }
             prev                = fabric;
@@ -336,9 +224,9 @@ struct FabricData : public PersistentData
         ReturnErrorOnFailure(fabric_list.Load(storage));
 
         // Existing fabric list, search for existing entry
-        FabricData fabric(fabric_list.first_fabric);
+        FabricData fabric(fabric_list.first_entry);
 
-        for (size_t i = 0; i < fabric_list.fabric_count; i++)
+        for (size_t i = 0; i < fabric_list.entry_count; i++)
         {
             ReturnErrorOnFailure(fabric.Load(storage));
             if (fabric.fabric_index == this->fabric_index)
@@ -1892,10 +1780,10 @@ GroupDataProviderImpl::GroupSessionIteratorImpl::GroupSessionIteratorImpl(GroupD
 {
     FabricList fabric_list;
     ReturnOnFailure(fabric_list.Load(provider.mStorage));
-    mFirstFabric = fabric_list.first_fabric;
-    mFabric      = fabric_list.first_fabric;
+    mFirstFabric = fabric_list.first_entry;
+    mFabric      = fabric_list.first_entry;
     mFabricCount = 0;
-    mFabricTotal = fabric_list.fabric_count;
+    mFabricTotal = fabric_list.entry_count;
     mMapCount    = 0;
     mFirstMap    = true;
 }
diff --git a/src/lib/support/CommonIterator.h b/src/lib/support/CommonIterator.h
new file mode 100644
index 00000000000000..689625aa292a94
--- /dev/null
+++ b/src/lib/support/CommonIterator.h
@@ -0,0 +1,55 @@
+/*
+ *
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+/**
+ *    @file
+ *          Contains a standard iterator class.
+ */
+
+#pragma once
+
+namespace chip {
+
+/**
+ * Template used to generate a custom iterator
+ */
+template 
+class CommonIterator
+{
+public:
+    virtual ~CommonIterator() = default;
+    /**
+     *  @retval The number of entries in total that will be iterated.
+     */
+    virtual size_t Count() = 0;
+    /**
+     *   @param[out] item  Value associated with the next element in the iteration.
+     *  @retval true if the next entry is successfully retrieved.
+     *  @retval false if no more entries can be found.
+     */
+    virtual bool Next(T & item) = 0;
+    /**
+     * Release the memory allocated by this iterator.
+     * Must be called before the iterator goes out of scope in the iterator was dynamically allocated.
+     */
+    virtual void Release() = 0;
+
+protected:
+    CommonIterator() = default;
+};
+
+} // namespace chip
diff --git a/src/lib/support/CommonPersistentData.h b/src/lib/support/CommonPersistentData.h
new file mode 100644
index 00000000000000..24c3e9a0354ce4
--- /dev/null
+++ b/src/lib/support/CommonPersistentData.h
@@ -0,0 +1,92 @@
+/*
+ *
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+/**
+ *    @file
+ *          Contains a class handling creation of linked list of stored persistent data.
+ */
+
+#include 
+#include 
+
+namespace chip {
+namespace CommonPersistentData {
+
+constexpr uint8_t kdefaultUndefinedEntry = 0;
+
+/// @brief Generic class to implement storage of a list persistently
+/// @tparam EntryType : Type of entry depends on the stored data
+/// @tparam kMaxSerializedSize : inherited from PersistentData class
+template 
+struct StoredDataList : public PersistentData
+{
+    static constexpr TLV::Tag TagFirstEntry() { return TLV::ContextTag(1); }
+    static constexpr TLV::Tag TagEntryCount() { return TLV::ContextTag(2); }
+
+    EntryType first_entry = kdefaultUndefinedEntry;
+    uint16_t entry_count  = 0;
+
+    StoredDataList() = default;
+    StoredDataList(EntryType first) : first_entry(first), entry_count(1) {}
+
+    CHIP_ERROR Serialize(TLV::TLVWriter & writer) const override
+    {
+        TLV::TLVType container;
+        ReturnErrorOnFailure(writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, container));
+
+        ReturnErrorOnFailure(writer.Put(TagFirstEntry(), static_cast(first_entry)));
+        ReturnErrorOnFailure(writer.Put(TagEntryCount(), static_cast(entry_count)));
+
+        return writer.EndContainer(container);
+    }
+
+    CHIP_ERROR Deserialize(TLV::TLVReader & reader) override
+    {
+        ReturnErrorOnFailure(reader.Next(TLV::AnonymousTag()));
+        VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_INTERNAL);
+
+        TLV::TLVType container;
+        ReturnErrorOnFailure(reader.EnterContainer(container));
+
+        // first_entry
+        ReturnErrorOnFailure(reader.Next(TagFirstEntry()));
+        ReturnErrorOnFailure(reader.Get(first_entry));
+        // entry_count
+        ReturnErrorOnFailure(reader.Next(TagEntryCount()));
+        ReturnErrorOnFailure(reader.Get(entry_count));
+
+        return reader.ExitContainer(container);
+    }
+};
+
+constexpr size_t kPersistentFabricBufferMax = 32;
+struct FabricList : StoredDataList
+{
+    CHIP_ERROR UpdateKey(StorageKeyName & key) override
+    {
+        key = DefaultStorageKeyAllocator::FabricList();
+        return CHIP_NO_ERROR;
+    }
+
+    void Clear() override
+    {
+        first_entry = kUndefinedFabricIndex;
+        entry_count = 0;
+    }
+};
+} // namespace CommonPersistentData
+} // namespace chip
diff --git a/src/lib/support/DefaultStorageKeyAllocator.h b/src/lib/support/DefaultStorageKeyAllocator.h
index 6a4b906c2426b8..dd7098ecf607f9 100644
--- a/src/lib/support/DefaultStorageKeyAllocator.h
+++ b/src/lib/support/DefaultStorageKeyAllocator.h
@@ -102,6 +102,9 @@ class DefaultStorageKeyAllocator
     static StorageKeyName FabricMetadata(FabricIndex fabric) { return StorageKeyName::Formatted("f/%x/m", fabric); }
     static StorageKeyName FabricOpKey(FabricIndex fabric) { return StorageKeyName::Formatted("f/%x/o", fabric); }
 
+    // Fabric List
+    static StorageKeyName FabricList() { return StorageKeyName::FromConst("g/fl"); }
+
     // Fail-safe handling
     static StorageKeyName FailSafeCommitMarkerKey() { return StorageKeyName::FromConst("g/fs/c"); }
     static StorageKeyName FailSafeNetworkConfig() { return StorageKeyName::FromConst("g/fs/n"); }
@@ -144,7 +147,6 @@ class DefaultStorageKeyAllocator
     // Group Data Provider
 
     // List of fabric indices that have endpoint-to-group associations defined.
-    static StorageKeyName GroupFabricList() { return StorageKeyName::FromConst("g/gfl"); }
     static StorageKeyName FabricGroups(chip::FabricIndex fabric) { return StorageKeyName::Formatted("f/%x/g", fabric); }
     static StorageKeyName FabricGroup(chip::FabricIndex fabric, chip::GroupId group)
     {
diff --git a/src/lib/support/PersistentData.h b/src/lib/support/PersistentData.h
new file mode 100644
index 00000000000000..b1eceaf6a3bd4d
--- /dev/null
+++ b/src/lib/support/PersistentData.h
@@ -0,0 +1,91 @@
+/*
+ *
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+#pragma once
+
+#include 
+#include 
+#include 
+
+namespace chip {
+
+/// @brief Interface to Persistent Storage Delegate allowing storage of data of variable size such as TLV.
+/// @tparam kMaxSerializedSize size of the buffer necessary to retrieve an entry from the storage. Varies with the type of data
+/// stored. Will be allocated on the stack so the implementation needs to be aware of this when choosing this value.
+template 
+struct PersistentData
+{
+    virtual ~PersistentData() = default;
+
+    virtual CHIP_ERROR UpdateKey(StorageKeyName & key)          = 0;
+    virtual CHIP_ERROR Serialize(TLV::TLVWriter & writer) const = 0;
+    virtual CHIP_ERROR Deserialize(TLV::TLVReader & reader)     = 0;
+    virtual void Clear()                                        = 0;
+
+    virtual CHIP_ERROR Save(PersistentStorageDelegate * storage)
+    {
+        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
+
+        uint8_t buffer[kMaxSerializedSize] = { 0 };
+        StorageKeyName key                 = StorageKeyName::Uninitialized();
+        ReturnErrorOnFailure(UpdateKey(key));
+
+        // Serialize the data
+        TLV::TLVWriter writer;
+        writer.Init(buffer, sizeof(buffer));
+        ReturnErrorOnFailure(Serialize(writer));
+
+        // Save serialized data
+        return storage->SyncSetKeyValue(key.KeyName(), buffer, static_cast(writer.GetLengthWritten()));
+    }
+
+    CHIP_ERROR Load(PersistentStorageDelegate * storage)
+    {
+        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
+
+        uint8_t buffer[kMaxSerializedSize] = { 0 };
+        StorageKeyName key                 = StorageKeyName::Uninitialized();
+
+        // Set data to defaults
+        Clear();
+
+        // Update storage key
+        ReturnErrorOnFailure(UpdateKey(key));
+
+        // Load the serialized data
+        uint16_t size  = static_cast(sizeof(buffer));
+        CHIP_ERROR err = storage->SyncGetKeyValue(key.KeyName(), buffer, size);
+        VerifyOrReturnError(CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND != err, CHIP_ERROR_NOT_FOUND);
+        ReturnErrorOnFailure(err);
+
+        // Decode serialized data
+        TLV::TLVReader reader;
+        reader.Init(buffer, size);
+        return Deserialize(reader);
+    }
+
+    virtual CHIP_ERROR Delete(PersistentStorageDelegate * storage)
+    {
+        VerifyOrReturnError(nullptr != storage, CHIP_ERROR_INVALID_ARGUMENT);
+
+        StorageKeyName key = StorageKeyName::Uninitialized();
+        ReturnErrorOnFailure(UpdateKey(key));
+
+        return storage->SyncDeleteKeyValue(key.KeyName());
+    }
+};
+
+} // namespace chip

From bbf31116add63c2dbae3f9d3a9e9c626115d3281 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Wed, 16 Nov 2022 13:38:31 -0500
Subject: [PATCH 10/36] Stop using ReadInteraction APIs for Darwin framework
 read/subscribe. (#23534)

This reduces Darwin build CI times from ~2 hours 30 mins to ~1 hour 20 mins and
reduces the size of a release unstripped framework from ~430MB to ~300MB.

Also fixes support for setting resubscribeIfLost to false in the Darwin
"subscribe an attribute" APIs.
---
 .../CHIP/MTRBaseClustersCpp_Internal.h        |   263 +
 src/darwin/Framework/CHIP/MTRBaseDevice.mm    |    13 +-
 .../CHIP/MTRCallbackBridgeBase_internal.h     |     1 +
 src/darwin/Framework/CHIP/MTRCluster.mm       |    13 +
 .../Framework/CHIP/MTRCluster_internal.h      |    16 +
 .../CHIP/templates/MTRBaseClusters-src.zapt   |    55 +-
 .../CHIP/templates/MTRBaseClusters.zapt       |     4 -
 .../templates/partials/MTRCallbackBridge.zapt |    13 +-
 .../CHIP/zap-generated/MTRBaseClusters.h      |  4348 --
 .../CHIP/zap-generated/MTRBaseClusters.mm     | 47839 +++-------------
 .../CHIP/zap-generated/MTRCallbackBridge.mm   |  5907 +-
 .../MTRCallbackBridge_internal.h              |  1050 +-
 .../Matter.xcodeproj/project.pbxproj          |     4 +
 13 files changed, 12308 insertions(+), 47218 deletions(-)
 create mode 100644 src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h

diff --git a/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h b/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h
new file mode 100644
index 00000000000000..cdb2ab72a70f70
--- /dev/null
+++ b/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h
@@ -0,0 +1,263 @@
+/*
+ *    Copyright (c) 2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+#import 
+
+#import "MTRBaseDevice.h"
+#import "MTRCluster_internal.h"
+#import "zap-generated/MTRCallbackBridge_internal.h"
+
+#include 
+#include 
+#include 
+#include 
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * Utility functions base clusters use for doing reads and subscribes.
+ */
+template 
+class MTRAttributeReportCallback : public chip::app::ReadClient::Callback {
+public:
+    MTRAttributeReportCallback(BridgeType * _Nonnull bridge, typename BridgeType::SuccessCallbackType _Nonnull onAttributeReport,
+        MTRErrorCallback _Nonnull onError, chip::ClusterId clusterID, chip::AttributeId attributeID)
+        : mBridge(bridge)
+        , mOnAttributeReport(onAttributeReport)
+        , mOnError(onError)
+        , mClusterID(clusterID)
+        , mAttributeID(attributeID)
+        , mBufferedReadAdapter(*this)
+    {
+    }
+
+    ~MTRAttributeReportCallback() {}
+
+    chip::app::BufferedReadCallback & GetBufferedCallback() { return mBufferedReadAdapter; }
+
+    void AdoptReadClient(chip::Platform::UniquePtr readClient) { mReadClient = std::move(readClient); }
+
+protected:
+    void OnAttributeData(
+        const chip::app::ConcreteDataAttributePath & path, chip::TLV::TLVReader * data, const chip::app::StatusIB & status) override
+    {
+        if (mCalledCallback && mReadClient->IsReadType()) {
+            return;
+        }
+        mCalledCallback = true;
+
+        CHIP_ERROR err = CHIP_NO_ERROR;
+        DecodableAttributeType value;
+
+        //
+        // We shouldn't be getting list item operations in the provided path since that should be handled by the buffered read
+        // callback. If we do, that's a bug.
+        //
+        VerifyOrDie(!path.IsListItemOperation());
+
+        VerifyOrExit(status.IsSuccess(), err = status.ToChipError());
+        VerifyOrExit(path.mClusterId == mClusterID && path.mAttributeId == mAttributeID, err = CHIP_ERROR_SCHEMA_MISMATCH);
+        VerifyOrExit(data != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT);
+
+        SuccessOrExit(err = chip::app::DataModel::Decode(*data, value));
+
+        mOnAttributeReport(mBridge, value);
+
+    exit:
+        if (err != CHIP_NO_ERROR) {
+            mOnError(mBridge, err);
+        }
+    }
+
+    void OnError(CHIP_ERROR error) override
+    {
+        if (mCalledCallback && mReadClient->IsReadType()) {
+            return;
+        }
+        mCalledCallback = true;
+
+        mOnError(mBridge, error);
+    }
+
+    void OnDone(chip::app::ReadClient *) override { chip::Platform::Delete(this); }
+
+    BridgeType * _Nonnull mBridge;
+
+    chip::ClusterId mClusterID;
+    chip::AttributeId mAttributeID;
+    typename BridgeType::SuccessCallbackType mOnAttributeReport;
+    MTRErrorCallback mOnError;
+    chip::app::BufferedReadCallback mBufferedReadAdapter;
+    chip::Platform::UniquePtr mReadClient;
+    // For reads, we ensure that we make only one data/error callback to our consumer.
+    bool mCalledCallback = false;
+};
+
+template 
+class MTRAttributeSubscriptionCallback : public MTRAttributeReportCallback {
+public:
+    MTRAttributeSubscriptionCallback(SubscriptionBridgeType * _Nonnull bridge,
+        typename SubscriptionBridgeType::SuccessCallbackType onAttributeReport, MTRErrorCallback onError, chip::ClusterId clusterID,
+        chip::AttributeId attributeID)
+        : MTRAttributeReportCallback(
+            bridge, onAttributeReport, onError, clusterID, attributeID)
+    {
+    }
+
+    ~MTRAttributeSubscriptionCallback()
+    {
+        // Ensure we release the ReadClient before we tear down anything else,
+        // so it can call our OnDeallocatePaths properly.
+        this->mReadClient = nullptr;
+    }
+
+private:
+    // The superclass OnResubscriptionNeeded is fine for our purposes.
+
+    void OnDeallocatePaths(chip::app::ReadPrepareParams && readPrepareParams) override
+    {
+        VerifyOrDie(readPrepareParams.mAttributePathParamsListSize == 1 && readPrepareParams.mpAttributePathParamsList != nullptr);
+        chip::Platform::Delete(readPrepareParams.mpAttributePathParamsList);
+
+        if (readPrepareParams.mDataVersionFilterListSize == 1 && readPrepareParams.mpDataVersionFilterList != nullptr) {
+            chip::Platform::Delete(readPrepareParams.mpDataVersionFilterList);
+        }
+    }
+
+    void OnSubscriptionEstablished(chip::SubscriptionId subscriptionId) override { this->mBridge->OnSubscriptionEstablished(); }
+
+    void OnDone(chip::app::ReadClient * readClient) override
+    {
+        this->mBridge->OnDone();
+        MTRAttributeReportCallback::OnDone(readClient);
+    }
+};
+
+template 
+CHIP_ERROR MTRStartReadInteraction(BridgeType * _Nonnull bridge, MTRReadParams * params,
+    chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session,
+    typename BridgeType::SuccessCallbackType successCb, MTRErrorCallback failureCb, chip::EndpointId endpoint,
+    chip::ClusterId clusterID, chip::AttributeId attributeID)
+{
+    auto readPaths = chip::Platform::MakeUnique(endpoint, clusterID, attributeID);
+    VerifyOrReturnError(readPaths != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    chip::app::ReadPrepareParams readPrepareParams(session);
+    [params toReadPrepareParams:readPrepareParams];
+    readPrepareParams.mpAttributePathParamsList = readPaths.get();
+    readPrepareParams.mAttributePathParamsListSize = 1;
+
+    auto callback = chip::Platform::MakeUnique>(
+        bridge, successCb, failureCb, clusterID, attributeID);
+    VerifyOrReturnError(callback != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    auto readClient = chip::Platform::MakeUnique(chip::app::InteractionModelEngine::GetInstance(),
+        &exchangeManager, callback->GetBufferedCallback(), chip::app::ReadClient::InteractionType::Read);
+    VerifyOrReturnError(readClient != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    CHIP_ERROR err = readClient->SendRequest(readPrepareParams);
+    ReturnErrorOnFailure(err);
+
+    callback->AdoptReadClient(std::move(readClient));
+    callback.release();
+
+    return CHIP_NO_ERROR;
+}
+
+template 
+CHIP_ERROR MTRStartSubscribeInteraction(BridgeType * _Nonnull bridge, MTRSubscribeParams * params,
+    chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session,
+    typename BridgeType::SuccessCallbackType successCb, MTRErrorCallback failureCb, chip::EndpointId endpoint,
+    chip::ClusterId clusterID, chip::AttributeId attributeID)
+{
+    auto readPaths = chip::Platform::MakeUnique(endpoint, clusterID, attributeID);
+    VerifyOrReturnError(readPaths != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    chip::app::ReadPrepareParams readPrepareParams(session);
+    [params toReadPrepareParams:readPrepareParams];
+    readPrepareParams.mpAttributePathParamsList = readPaths.get();
+    readPrepareParams.mAttributePathParamsListSize = 1;
+
+    auto callback = chip::Platform::MakeUnique>(
+        bridge, successCb, failureCb, clusterID, attributeID);
+    VerifyOrReturnError(callback != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    auto readClient = chip::Platform::MakeUnique(chip::app::InteractionModelEngine::GetInstance(),
+        &exchangeManager, callback->GetBufferedCallback(), chip::app::ReadClient::InteractionType::Subscribe);
+    VerifyOrReturnError(readClient != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    CHIP_ERROR err;
+    if (params.resubscribeIfLost) {
+        readPaths.release();
+
+        err = readClient->SendAutoResubscribeRequest(std::move(readPrepareParams));
+    } else {
+        err = readClient->SendRequest(readPrepareParams);
+    }
+    ReturnErrorOnFailure(err);
+
+    bridge->KeepAliveOnCallback();
+
+    callback->AdoptReadClient(std::move(readClient));
+    callback.release();
+
+    return CHIP_NO_ERROR;
+}
+
+template 
+void MTRSubscribeAttribute(MTRSubscribeParams * _Nonnull params,
+    MTRSubscriptionEstablishedHandler _Nullable subscriptionEstablished,
+    void (^reportHandler)(AttributeObjCType * _Nullable value, NSError * _Nullable error), dispatch_queue_t callbackQueue,
+    MTRBaseDevice * device, chip::EndpointId endpoint, chip::ClusterId clusterID, chip::AttributeId attributeID)
+{
+    // Make a copy of params before we go async.
+    params = [params copy];
+    auto * callbackBridge = new SubscriptionBridgeType(
+        callbackQueue,
+        // This treats reportHandler as taking an id for the data.  This is
+        // not great from a type-safety perspective, of course.
+        reportHandler,
+        ^(chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session,
+            typename SubscriptionBridgeType::SuccessCallbackType successCb, MTRErrorCallback failureCb,
+            MTRCallbackBridgeBase * bridge) {
+            auto * subscriptionBridge = static_cast(bridge);
+            return MTRStartSubscribeInteraction(
+                subscriptionBridge, params, exchangeManager, session, successCb, failureCb, endpoint, clusterID, attributeID);
+        },
+        subscriptionEstablished);
+    std::move(*callbackBridge).DispatchAction(device);
+}
+
+template 
+void MTRReadAttribute(MTRReadParams * _Nonnull params,
+    void (^reportHandler)(AttributeObjCType * _Nullable value, NSError * _Nullable error), dispatch_queue_t callbackQueue,
+    MTRBaseDevice * device, chip::EndpointId endpoint, chip::ClusterId clusterID, chip::AttributeId attributeID)
+{
+    // Make a copy of params before we go async.
+    params = [params copy];
+    auto * callbackBridge = new ReadBridgeType(callbackQueue,
+        // This treats reportHandler as taking an id for the data.  This is
+        // not great from a type-safety perspective, of course.
+        reportHandler,
+        ^(chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session,
+            typename ReadBridgeType::SuccessCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * readBridge = static_cast(bridge);
+            return MTRStartReadInteraction(
+                readBridge, params, exchangeManager, session, successCb, failureCb, endpoint, clusterID, attributeID);
+        });
+    std::move(*callbackBridge).DispatchAction(device);
+}
+
+NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.mm b/src/darwin/Framework/CHIP/MTRBaseDevice.mm
index d4b9f1187f1915..366e396c5ffede 100644
--- a/src/darwin/Framework/CHIP/MTRBaseDevice.mm
+++ b/src/darwin/Framework/CHIP/MTRBaseDevice.mm
@@ -21,6 +21,7 @@
 #import "MTRBaseSubscriptionCallback.h"
 #import "MTRCallbackBridgeBase_internal.h"
 #import "MTRCluster.h"
+#import "MTRCluster_internal.h"
 #import "MTRError_Internal.h"
 #import "MTREventTLVValueDecoder_Internal.h"
 #import "MTRLogging.h"
@@ -302,14 +303,11 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
                                       // We want to get event reports at the minInterval, not the maxInterval.
                                       eventPath->mIsUrgentEvent = true;
                                       ReadPrepareParams readParams(session.Value());
-                                      readParams.mMinIntervalFloorSeconds = [params.minInterval unsignedShortValue];
-                                      readParams.mMaxIntervalCeilingSeconds = [params.maxInterval unsignedShortValue];
+                                      [params toReadPrepareParams:readParams];
                                       readParams.mpAttributePathParamsList = attributePath.get();
                                       readParams.mAttributePathParamsListSize = 1;
                                       readParams.mpEventPathParamsList = eventPath.get();
                                       readParams.mEventPathParamsListSize = 1;
-                                      readParams.mIsFabricFiltered = params.filterByFabric;
-                                      readParams.mKeepSubscriptions = !params.replaceExistingSubscriptions;
 
                                       std::unique_ptr attributeCache;
                                       ReadClient::Callback * callbackForReadClient = nullptr;
@@ -831,9 +829,9 @@ - (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID
             CHIP_ERROR err = CHIP_NO_ERROR;
 
             chip::app::ReadPrepareParams readParams(session);
+            [params toReadPrepareParams:readParams];
             readParams.mpAttributePathParamsList = &attributePath;
             readParams.mAttributePathParamsListSize = 1;
-            readParams.mIsFabricFiltered = params.filterByFabric;
 
             auto onDone = [resultArray, resultSuccess, resultFailure, bridge, successCb, failureCb](
                               BufferedReadAttributeCallback * callback) {
@@ -1200,12 +1198,9 @@ - (void)subscribeToAttributesWithEndpointID:(NSNumber * _Nullable)endpointID
                    CHIP_ERROR err = CHIP_NO_ERROR;
 
                    chip::app::ReadPrepareParams readParams(session.Value());
+                   [params toReadPrepareParams:readParams];
                    readParams.mpAttributePathParamsList = container.pathParams;
                    readParams.mAttributePathParamsListSize = 1;
-                   readParams.mMinIntervalFloorSeconds = static_cast([params.minInterval unsignedShortValue]);
-                   readParams.mMaxIntervalCeilingSeconds = static_cast([params.maxInterval unsignedShortValue]);
-                   readParams.mIsFabricFiltered = params.filterByFabric;
-                   readParams.mKeepSubscriptions = !params.replaceExistingSubscriptions;
 
                    auto onDone = [container](BufferedReadAttributeCallback * callback) {
                        [container onDone];
diff --git a/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h b/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h
index 5e4913a7a05880..31ac86e348f8bc 100644
--- a/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h
+++ b/src/darwin/Framework/CHIP/MTRCallbackBridgeBase_internal.h
@@ -67,6 +67,7 @@ template  class MTRCallbackBridge : public MTRCallbackBridgeBase {
 public:
     using MTRActionBlock = MTRActionBlockT;
     using MTRLocalActionBlock = MTRLocalActionBlockT;
+    using SuccessCallbackType = T;
 
     /**
      * Construct a callback bridge, which can then have DispatcLocalAction() called
diff --git a/src/darwin/Framework/CHIP/MTRCluster.mm b/src/darwin/Framework/CHIP/MTRCluster.mm
index da59dfa1683ec5..0aee96929278ae 100644
--- a/src/darwin/Framework/CHIP/MTRCluster.mm
+++ b/src/darwin/Framework/CHIP/MTRCluster.mm
@@ -77,6 +77,11 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
     return other;
 }
 
+- (void)toReadPrepareParams:(chip::app::ReadPrepareParams &)readPrepareParams
+{
+    readPrepareParams.mIsFabricFiltered = self.filterByFabric;
+}
+
 @end
 
 @implementation MTRSubscribeParams
@@ -100,6 +105,14 @@ - (id)copyWithZone:(NSZone * _Nullable)zone
     return other;
 }
 
+- (void)toReadPrepareParams:(chip::app::ReadPrepareParams &)readPrepareParams
+{
+    [super toReadPrepareParams:readPrepareParams];
+    readPrepareParams.mMinIntervalFloorSeconds = self.minInterval.unsignedShortValue;
+    readPrepareParams.mMaxIntervalCeilingSeconds = self.maxInterval.unsignedShortValue;
+    readPrepareParams.mKeepSubscriptions = !self.replaceExistingSubscriptions;
+}
+
 @end
 
 @implementation MTRReadParams (Deprecated)
diff --git a/src/darwin/Framework/CHIP/MTRCluster_internal.h b/src/darwin/Framework/CHIP/MTRCluster_internal.h
index 1ea8e80b01237c..5683ca717fea57 100644
--- a/src/darwin/Framework/CHIP/MTRCluster_internal.h
+++ b/src/darwin/Framework/CHIP/MTRCluster_internal.h
@@ -24,6 +24,8 @@
 #import "zap-generated/CHIPClusters.h"
 #import "zap-generated/MTRBaseClusters.h"
 
+#include 
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface MTRCluster ()
@@ -33,4 +35,18 @@ NS_ASSUME_NONNULL_BEGIN
 - (chip::CharSpan)asCharSpan:(NSString *)value;
 @end
 
+@interface MTRReadParams ()
+/**
+ * Copy state from this MTRReadParams to the ReadPreparaParams.
+ */
+- (void)toReadPrepareParams:(chip::app::ReadPrepareParams &)readPrepareParams;
+@end
+
+@interface MTRSubscribeParams ()
+/**
+ * Copy state from this MTRReadParams to the ReadPreparaParams.
+ */
+- (void)toReadPrepareParams:(chip::app::ReadPrepareParams &)readPrepareParams;
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
index a8a4c9deee6540..bc06e3058ffb39 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
@@ -10,11 +10,11 @@
 #import "MTRCluster_internal.h"
 #import "MTRStructsObjc.h"
 #import "MTRCommandPayloadsObjc.h"
+#import "MTRBaseClustersCpp_Internal.h"
 
 #include 
 #include 
 #include 
-#include 
 
 using chip::Callback::Callback;
 using chip::Callback::Cancelable;
@@ -114,21 +114,13 @@ using chip::SessionHandle;
     {{~#if_is_fabric_scoped_struct type}}
     // Make a copy of params before we go async.
     params = [params copy];
+    {{else}}
+    MTRReadParams * params = [[MTRReadParams alloc] init];
     {{/if_is_fabric_scoped_struct~}}
-    auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackBridge(self.callbackQueue,
-      {{! This treats completion as taking an id for the data.  This is
-          not great from a type-safety perspective, of course. }}
-      completion,
-      ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-          using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo;
-          chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint);
-          return cppCluster.ReadAttribute(bridge, successCb, failureCb
-          {{~#if_is_fabric_scoped_struct type~}}
-          , params.filterByFabric
-          {{~/if_is_fabric_scoped_struct~}}
-          );
-      });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo;
+    return MTRReadAttributeattribute_data_callback_name}}CallbackBridge,
+                         {{asObjectiveCClass type parent.name}},
+                         TypeInfo::DecodableType>(params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 {{#if isWritableAttribute}}
@@ -177,38 +169,11 @@ using chip::SessionHandle;
 {{/if}}
 {{#if isReportableAttribute}}
 - (void) subscribe{{>attribute}}WithParams:(MTRSubscribeParams * _Nonnull)params
-subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished 
+subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
 reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge(self.callbackQueue,
-      {{! This treats reportHandler as taking an id for the data.  This is
-          not great from a type-safety perspective, of course. }}
-      reportHandler,
-      ^(ExchangeManager & exchangeManager, const SessionHandle & session,  {{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-          auto * typedBridge = static_castattribute_data_callback_name}}CallbackSubscriptionBridge *>(bridge);
-          if (!params.resubscribeIfLost) {
-              // We don't support disabling auto-resubscribe.
-              return CHIP_ERROR_INVALID_ARGUMENT;
-          }
-          using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo;
-
-          chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint);
-          CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb, [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue], MTR{{>attribute_data_callback_name}}CallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-              params.filterByFabric,
-              !params.replaceExistingSubscriptions,
-              chip::NullOptional,
-              [typedBridge](void) { typedBridge->OnDone(); }
-          );
-          if (err == CHIP_NO_ERROR) {
-              // Now that we kicked off the subscribe, flag our callback bridge
-              // to stay alive until we get an OnDone.
-              typedBridge->KeepAliveOnCallback();
-          }
-          return err;
-      }, subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo;
+    MTRSubscribeAttributeattribute_data_callback_name}}CallbackSubscriptionBridge, {{asObjectiveCClass type parent.name}}, TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint  queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
index 2ee582ea1f3598..3aa04311e72417 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
@@ -46,10 +46,6 @@ MTR_NEWLY_AVAILABLE
 - (void)write{{>attribute}}WithValue:({{asObjectiveCType type parent.name}})value params:(MTRWriteParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 {{/if}}
 {{#if isReportableAttribute}}
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void) subscribe{{>attribute}}WithParams:(MTRSubscribeParams *)params
 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
 + (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
diff --git a/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt b/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt
index 433a069db99d5b..91e913926505de 100644
--- a/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt
+++ b/src/darwin/Framework/CHIP/templates/partials/MTRCallbackBridge.zapt
@@ -47,7 +47,7 @@ public:
         mEstablishedHandler(establishedHandler)
       {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTR{{> @partial-block}}Bridge::OnDone;
     using MTR{{> @partial-block}}Bridge::KeepAliveOnCallback;
 
@@ -97,19 +97,18 @@ void MTR{{> @partial-block}}Bridge::OnSuccessFn(void * context
 };
 
 {{#unless partial-type}}
-void MTR{{> @partial-block}}SubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTR{{> @partial-block}}SubscriptionBridge::OnSubscriptionEstablished()
 {
-     auto * self = static_cast @partial-block}}SubscriptionBridge *>(context);
-     if (!self->mQueue) {
+     if (!mQueue) {
          return;
      }
 
-     if (self->mEstablishedHandler != nil) {
-         dispatch_async(self->mQueue, self->mEstablishedHandler);
+     if (mEstablishedHandler != nil) {
+         dispatch_async(mQueue, mEstablishedHandler);
          // On failure, mEstablishedHandler will be cleaned up by our destructor,
          // but we can clean it up earlier on successful subscription
          // establishment.
-         self->mEstablishedHandler = nil;
+         mEstablishedHandler = nil;
      }
 }
 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 71cb04f61e78ac..ad5833dc541cb3 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -46,10 +46,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeIdentifyTimeWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeIdentifyTimeWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -62,10 +58,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeIdentifyTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeIdentifyTypeWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -78,10 +70,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -94,10 +82,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -110,10 +94,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -126,10 +106,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -142,10 +118,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -191,10 +163,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -207,10 +175,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -223,10 +187,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -239,10 +199,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -255,10 +211,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -271,10 +223,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -332,10 +280,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSceneCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSceneCountWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -348,10 +292,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentSceneWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentSceneWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -364,10 +304,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentGroupWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentGroupWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -380,10 +316,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSceneValidWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSceneValidWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -396,10 +328,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -412,10 +340,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLastConfiguredByWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLastConfiguredByWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -428,10 +352,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -444,10 +364,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -460,10 +376,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -476,10 +388,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -492,10 +400,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -538,10 +442,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnOffWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -554,10 +454,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGlobalSceneControlWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -574,10 +470,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOnTimeWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnTimeWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -595,10 +487,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOffWaitTimeWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOffWaitTimeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -616,10 +504,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeStartUpOnOffWithValue:(NSNumber * _Nullable)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartUpOnOffWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -632,10 +516,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -648,10 +528,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -664,10 +540,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -680,10 +552,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -696,10 +564,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -727,10 +591,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSwitchTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSwitchTypeWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -748,10 +608,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeSwitchActionsWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSwitchActionsWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -764,10 +620,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -780,10 +632,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -796,10 +644,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -812,10 +656,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -828,10 +668,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -875,10 +711,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentLevelWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -891,10 +723,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -907,10 +735,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -923,10 +747,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -939,10 +759,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentFrequencyWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -955,10 +771,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMinFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinFrequencyWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -971,10 +783,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMaxFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxFrequencyWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -991,10 +799,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1012,10 +816,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOnOffTransitionTimeWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnOffTransitionTimeWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -1032,10 +832,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOnLevelWithValue:(NSNumber * _Nullable)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnLevelWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1053,10 +849,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnTransitionTimeWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1074,10 +866,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOffTransitionTimeWithValue:(NSNumber * _Nullable)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOffTransitionTimeWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1095,10 +883,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeDefaultMoveRateWithValue:(NSNumber * _Nullable)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDefaultMoveRateWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1116,10 +900,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeStartUpCurrentLevelWithValue:(NSNumber * _Nullable)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartUpCurrentLevelWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -1132,10 +912,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1148,10 +924,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1164,10 +936,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1180,10 +948,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1196,10 +960,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1231,10 +991,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeActiveTextWithValue:(NSString * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveTextWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1252,10 +1008,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeDescriptionWithValue:(NSString * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1273,10 +1025,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeInactiveTextWithValue:(NSString * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInactiveTextWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1294,10 +1042,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeOutOfServiceWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOutOfServiceWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1310,10 +1054,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePolarityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePolarityWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1331,10 +1071,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributePresentValueWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePresentValueWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1352,10 +1088,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeReliabilityWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReliabilityWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1368,10 +1100,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeStatusFlagsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStatusFlagsWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1384,10 +1112,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeApplicationTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApplicationTypeWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1400,10 +1124,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1416,10 +1136,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1432,10 +1148,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1448,10 +1160,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1464,10 +1172,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1496,10 +1200,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDeviceTypeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDeviceTypeListWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1512,10 +1212,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeServerListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeServerListWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1528,10 +1224,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClientListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClientListWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1544,10 +1236,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePartsListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePartsListWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1560,10 +1248,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1576,10 +1260,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1592,10 +1272,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1608,10 +1284,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1624,10 +1296,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1660,10 +1328,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeBindingWithValue:(NSArray * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBindingWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1676,10 +1340,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1692,10 +1352,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1708,10 +1364,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1724,10 +1376,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1740,10 +1388,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1778,10 +1422,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeAclWithValue:(NSArray * _Nonnull)value
                             params:(MTRWriteParams * _Nullable)params
                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAclWithParams:(MTRSubscribeParams *)params
                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                           reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1799,10 +1439,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeExtensionWithValue:(NSArray * _Nonnull)value
                                   params:(MTRWriteParams * _Nullable)params
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeExtensionWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1815,10 +1451,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSubjectsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -1832,10 +1464,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTargetsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -1849,10 +1477,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAccessControlEntriesPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -1866,10 +1490,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1882,10 +1502,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -1898,10 +1514,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1914,10 +1526,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1930,10 +1538,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -1986,10 +1590,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActionListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActionListWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2002,10 +1602,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeEndpointListsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEndpointListsWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2018,10 +1614,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSetupURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSetupURLWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2034,10 +1626,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2050,10 +1638,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2066,10 +1650,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2082,10 +1662,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2098,10 +1674,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2135,10 +1707,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDataModelRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDataModelRevisionWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2151,10 +1719,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2167,10 +1731,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2183,10 +1743,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2199,10 +1755,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2219,10 +1771,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value
                                   params:(MTRWriteParams * _Nullable)params
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2239,10 +1787,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeLocationWithValue:(NSString * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocationWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2255,10 +1799,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2271,10 +1811,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
@@ -2287,10 +1823,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2303,10 +1835,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
@@ -2319,10 +1847,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2335,10 +1859,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2351,10 +1871,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2367,10 +1883,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2383,10 +1895,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2404,10 +1912,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeLocalConfigDisabledWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocalConfigDisabledWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -2420,10 +1924,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2436,10 +1936,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2452,10 +1948,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
@@ -2468,10 +1960,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2484,10 +1972,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2500,10 +1984,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2516,10 +1996,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2532,10 +2008,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2572,10 +2044,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2588,10 +2056,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2604,10 +2068,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2620,10 +2080,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2636,10 +2092,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2676,10 +2128,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeDefaultOtaProvidersWithValue:(NSArray * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDefaultOtaProvidersWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2692,10 +2140,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUpdatePossibleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUpdatePossibleWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2708,10 +2152,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUpdateStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUpdateStateWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2724,10 +2164,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUpdateStateProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -2740,10 +2176,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2756,10 +2188,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2772,10 +2200,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2788,10 +2212,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2804,10 +2224,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2843,10 +2259,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeActiveLocaleWithValue:(NSString * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveLocaleWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2859,10 +2271,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSupportedLocalesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedLocalesWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2875,10 +2283,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2891,10 +2295,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -2907,10 +2307,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2923,10 +2319,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2939,10 +2331,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2977,10 +2365,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeHourFormatWithValue:(NSNumber * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHourFormatWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -2998,10 +2382,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeActiveCalendarTypeWithValue:(NSNumber * _Nonnull)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveCalendarTypeWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3014,10 +2394,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSupportedCalendarTypesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3030,10 +2406,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3046,10 +2418,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3062,10 +2430,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3078,10 +2442,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3094,10 +2454,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3133,10 +2489,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeTemperatureUnitWithValue:(NSNumber * _Nonnull)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTemperatureUnitWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3149,10 +2501,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3165,10 +2513,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3181,10 +2525,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3197,10 +2537,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3213,10 +2549,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3244,10 +2576,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSourcesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSourcesWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3260,10 +2588,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3276,10 +2600,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3292,10 +2612,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3308,10 +2624,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3324,10 +2636,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3356,10 +2664,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3372,10 +2676,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeOrderWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOrderWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3388,10 +2688,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3404,10 +2700,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredAssessedInputVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3420,10 +2712,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredAssessedInputFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3436,10 +2724,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredCurrentTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredCurrentTypeWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3452,10 +2736,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredAssessedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3468,10 +2748,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredNominalVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3484,10 +2760,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredMaximumCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3500,10 +2772,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiredPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiredPresentWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3516,10 +2784,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveWiredFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveWiredFaultsWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3532,10 +2796,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatVoltageWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3548,10 +2808,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatPercentRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3564,10 +2820,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatTimeRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatTimeRemainingWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3580,10 +2832,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatChargeLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatChargeLevelWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3596,10 +2844,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatReplacementNeededWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3612,10 +2856,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatReplaceabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatReplaceabilityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3628,10 +2868,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatPresentWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3644,10 +2880,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveBatFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveBatFaultsWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3660,10 +2892,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatReplacementDescriptionWithCompletion:(void (^)(NSString * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSString * _Nullable value,
@@ -3676,10 +2904,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatCommonDesignationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3692,10 +2916,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatANSIDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
@@ -3708,10 +2928,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatIECDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatIECDesignationWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3724,10 +2940,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatApprovedChemistryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3740,10 +2952,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatCapacityWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3756,10 +2964,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatQuantityWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3772,10 +2976,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatChargeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatChargeStateWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3788,10 +2988,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatTimeToFullChargeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3804,10 +3000,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatFunctionalWhileChargingWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3820,10 +3012,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBatChargingCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -3836,10 +3024,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveBatChargeFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3852,10 +3036,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3868,10 +3048,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -3884,10 +3060,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3900,10 +3072,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3916,10 +3084,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3965,10 +3129,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeBreadcrumbWithValue:(NSNumber * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBreadcrumbWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -3982,10 +3142,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)readAttributeBasicCommissioningInfoWithCompletion:
     (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:
@@ -4001,10 +3157,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRegulatoryConfigWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRegulatoryConfigWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4017,10 +3169,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLocationCapabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4033,10 +3181,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSupportsConcurrentConnectionWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -4050,10 +3194,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4066,10 +3206,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4082,10 +3218,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4098,10 +3230,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4114,10 +3242,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4164,10 +3288,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMaxNetworksWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxNetworksWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4180,10 +3300,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNetworksWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNetworksWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4196,10 +3312,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeScanMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4212,10 +3324,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeConnectMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4233,10 +3341,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInterfaceEnabledWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4249,10 +3353,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLastNetworkingStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4265,10 +3365,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLastNetworkIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLastNetworkIDWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4281,10 +3377,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLastConnectErrorValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4297,10 +3389,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4313,10 +3401,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4329,10 +3413,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4345,10 +3425,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4361,10 +3437,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4396,10 +3468,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4412,10 +3480,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4428,10 +3492,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4444,10 +3504,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4460,10 +3516,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4495,10 +3547,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNetworkInterfacesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNetworkInterfacesWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4511,10 +3559,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRebootCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRebootCountWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4527,10 +3571,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUpTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUpTimeWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4543,10 +3583,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTotalOperationalHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4559,10 +3595,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBootReasonsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBootReasonsWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4575,10 +3607,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveHardwareFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4591,10 +3619,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveRadioFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveRadioFaultsWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4607,10 +3631,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveNetworkFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4623,10 +3643,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTestEventTriggersEnabledWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4639,10 +3655,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4655,10 +3667,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4671,10 +3679,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4687,10 +3691,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4703,10 +3703,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4739,10 +3735,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeThreadMetricsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeThreadMetricsWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4755,10 +3747,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentHeapFreeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentHeapFreeWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4771,10 +3759,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentHeapUsedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentHeapUsedWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4787,10 +3771,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentHeapHighWatermarkWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -4803,10 +3783,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4819,10 +3795,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -4835,10 +3807,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4851,10 +3819,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4867,10 +3831,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4903,10 +3863,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeChannelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeChannelWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4919,10 +3875,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRoutingRoleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRoutingRoleWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4935,10 +3887,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNetworkNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNetworkNameWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4951,10 +3899,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePanIdWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4967,10 +3911,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeExtendedPanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeExtendedPanIdWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4983,10 +3923,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeMeshLocalPrefixWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeshLocalPrefixWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -4999,10 +3935,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5015,10 +3947,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5031,10 +3959,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5047,10 +3971,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePartitionIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePartitionIdWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5063,10 +3983,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWeightingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWeightingWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5079,10 +3995,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDataVersionWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5095,10 +4007,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeStableDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStableDataVersionWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5111,10 +4019,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLeaderRouterIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLeaderRouterIdWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5127,10 +4031,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDetachedRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDetachedRoleCountWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5143,10 +4043,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeChildRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeChildRoleCountWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5159,10 +4055,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRouterRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRouterRoleCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5175,10 +4067,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeLeaderRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLeaderRoleCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5191,10 +4079,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5207,10 +4091,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePartitionIdChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5223,10 +4103,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscribeParams *)params
                                               subscriptionEstablished:
                                                   (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -5242,10 +4118,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeParentChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeParentChangeCountWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5258,10 +4130,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxTotalCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5274,10 +4142,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxUnicastCountWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5290,10 +4154,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxBroadcastCountWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5306,10 +4166,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5322,10 +4178,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxAckedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxAckedCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5338,10 +4190,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxNoAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5354,10 +4202,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxDataCountWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5370,10 +4214,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxDataPollCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5386,10 +4226,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxBeaconCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5402,10 +4238,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5418,10 +4250,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5434,10 +4262,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxRetryCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxRetryCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5450,10 +4274,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5466,10 +4286,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -5483,10 +4299,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxErrCcaCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxErrCcaCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5499,10 +4311,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxErrAbortCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxErrAbortCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5515,10 +4323,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxErrBusyChannelCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5531,10 +4335,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxTotalCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5547,10 +4347,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxUnicastCountWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5563,10 +4359,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxBroadcastCountWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5579,10 +4371,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxDataCountWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5595,10 +4383,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxDataPollCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5611,10 +4395,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxBeaconCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5627,10 +4407,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5643,10 +4419,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxOtherCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5659,10 +4431,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxAddressFilteredCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5675,10 +4443,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxDestAddrFilteredCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5691,10 +4455,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxDuplicatedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxDuplicatedCountWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5707,10 +4467,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrNoFrameCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrNoFrameCountWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5723,10 +4479,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrUnknownNeighborCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5739,10 +4491,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -5755,10 +4503,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrSecCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrSecCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5771,10 +4515,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrFcsCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrFcsCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5787,10 +4527,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRxErrOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRxErrOtherCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5803,10 +4539,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveTimestampWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5819,10 +4551,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePendingTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePendingTimestampWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5835,10 +4563,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDelayWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5851,10 +4575,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSecurityPolicyWithCompletion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
@@ -5867,10 +4587,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeChannelPage0MaskWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeChannelPage0MaskWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5884,10 +4600,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)readAttributeOperationalDatasetComponentsWithCompletion:
     (void (^)(MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)
     subscribeAttributeOperationalDatasetComponentsWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -5906,10 +4618,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeActiveNetworkFaultsListWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSArray * _Nullable value,
@@ -5922,10 +4630,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -5938,10 +4642,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -5954,10 +4654,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5970,10 +4666,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -5986,10 +4678,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6022,10 +4710,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6038,10 +4722,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSecurityTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSecurityTypeWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6054,10 +4734,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeWiFiVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWiFiVersionWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6070,10 +4746,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeChannelNumberWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeChannelNumberWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6086,10 +4758,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams *)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6102,10 +4770,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBeaconLostCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBeaconLostCountWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6118,10 +4782,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeBeaconRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBeaconRxCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6134,10 +4794,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketMulticastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -6150,10 +4806,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketMulticastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -6166,10 +4818,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketUnicastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -6182,10 +4830,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketUnicastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -6198,10 +4842,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCurrentMaxRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentMaxRateWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6214,10 +4854,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6230,10 +4866,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6246,10 +4878,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6262,10 +4890,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6278,10 +4902,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6294,10 +4914,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6330,10 +4946,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePHYRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePHYRateWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6346,10 +4958,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFullDuplexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFullDuplexWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6362,10 +4970,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketRxCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6378,10 +4982,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePacketTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePacketTxCountWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6394,10 +4994,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTxErrCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTxErrCountWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6410,10 +5006,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCollisionCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCollisionCountWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6426,10 +5018,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6442,10 +5030,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeCarrierDetectWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCarrierDetectWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6458,10 +5042,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeTimeSinceResetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTimeSinceResetWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6474,10 +5054,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6490,10 +5066,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6506,10 +5078,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6522,10 +5090,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6538,10 +5102,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6572,10 +5132,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6588,10 +5144,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6604,10 +5156,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6624,10 +5172,6 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value
                                   params:(MTRWriteParams * _Nullable)params
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6640,10 +5184,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6656,10 +5196,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
@@ -6672,10 +5208,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6688,10 +5220,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
@@ -6704,10 +5232,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6720,10 +5244,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6736,10 +5256,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6752,10 +5268,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6768,10 +5280,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6784,10 +5292,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6800,10 +5304,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6816,10 +5316,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6832,10 +5328,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6848,10 +5340,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6864,10 +5352,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6880,10 +5364,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6916,10 +5396,6 @@ light or a window shade.
 
 - (void)readAttributeNumberOfPositionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfPositionsWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6932,10 +5408,6 @@ light or a window shade.
 
 - (void)readAttributeCurrentPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6948,10 +5420,6 @@ light or a window shade.
 
 - (void)readAttributeMultiPressMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMultiPressMaxWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -6964,10 +5432,6 @@ light or a window shade.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6980,10 +5444,6 @@ light or a window shade.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -6996,10 +5456,6 @@ light or a window shade.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7012,10 +5468,6 @@ light or a window shade.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7028,10 +5480,6 @@ light or a window shade.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7067,10 +5515,6 @@ light or a window shade.
 
 - (void)readAttributeWindowStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWindowStatusWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7083,10 +5527,6 @@ light or a window shade.
 
 - (void)readAttributeAdminFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAdminFabricIndexWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7099,10 +5539,6 @@ light or a window shade.
 
 - (void)readAttributeAdminVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAdminVendorIdWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7115,10 +5551,6 @@ light or a window shade.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7131,10 +5563,6 @@ light or a window shade.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7147,10 +5575,6 @@ light or a window shade.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7163,10 +5587,6 @@ light or a window shade.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7179,10 +5599,6 @@ light or a window shade.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7235,10 +5651,6 @@ light or a window shade.
 
 - (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params
                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams *)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7252,10 +5664,6 @@ light or a window shade.
 - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFabricsWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7268,10 +5676,6 @@ light or a window shade.
 
 - (void)readAttributeSupportedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedFabricsWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7284,10 +5688,6 @@ light or a window shade.
 
 - (void)readAttributeCommissionedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -7300,10 +5700,6 @@ light or a window shade.
 
 - (void)readAttributeTrustedRootCertificatesWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7316,10 +5712,6 @@ light or a window shade.
 
 - (void)readAttributeCurrentFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -7332,10 +5724,6 @@ light or a window shade.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7348,10 +5736,6 @@ light or a window shade.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7364,10 +5748,6 @@ light or a window shade.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7380,10 +5760,6 @@ light or a window shade.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7396,10 +5772,6 @@ light or a window shade.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7443,10 +5815,6 @@ light or a window shade.
 - (void)writeAttributeGroupKeyMapWithValue:(NSArray * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGroupKeyMapWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7460,10 +5828,6 @@ light or a window shade.
 - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
                                completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGroupTableWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7476,10 +5840,6 @@ light or a window shade.
 
 - (void)readAttributeMaxGroupsPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -7492,10 +5852,6 @@ light or a window shade.
 
 - (void)readAttributeMaxGroupKeysPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -7508,10 +5864,6 @@ light or a window shade.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7524,10 +5876,6 @@ light or a window shade.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7540,10 +5888,6 @@ light or a window shade.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7556,10 +5900,6 @@ light or a window shade.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7572,10 +5912,6 @@ light or a window shade.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7604,10 +5940,6 @@ labels.
 
 - (void)readAttributeLabelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7620,10 +5952,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7636,10 +5964,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7652,10 +5976,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7668,10 +5988,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7684,10 +6000,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7719,10 +6031,6 @@ labels.
 - (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value
                                   params:(MTRWriteParams * _Nullable)params
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7735,10 +6043,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7751,10 +6055,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7767,10 +6067,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7783,10 +6079,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7799,10 +6091,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7830,10 +6118,6 @@ labels.
 
 - (void)readAttributeStateValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStateValueWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7846,10 +6130,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7862,10 +6142,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -7878,10 +6154,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7894,10 +6166,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7910,10 +6178,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7944,10 +6208,6 @@ labels.
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7960,10 +6220,6 @@ labels.
 
 - (void)readAttributeStandardNamespaceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStandardNamespaceWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7976,10 +6232,6 @@ labels.
 
 - (void)readAttributeSupportedModesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedModesWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -7992,10 +6244,6 @@ labels.
 
 - (void)readAttributeCurrentModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentModeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8013,10 +6261,6 @@ labels.
 - (void)writeAttributeStartUpModeWithValue:(NSNumber * _Nullable)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartUpModeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8033,10 +6277,6 @@ labels.
 - (void)writeAttributeOnModeWithValue:(NSNumber * _Nullable)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOnModeWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8049,10 +6289,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -8065,10 +6301,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -8081,10 +6313,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8097,10 +6325,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8113,10 +6337,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8186,10 +6406,6 @@ labels.
 
 - (void)readAttributeLockStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLockStateWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8202,10 +6418,6 @@ labels.
 
 - (void)readAttributeLockTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLockTypeWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8218,10 +6430,6 @@ labels.
 
 - (void)readAttributeActuatorEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActuatorEnabledWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8234,10 +6442,6 @@ labels.
 
 - (void)readAttributeDoorStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDoorStateWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8255,10 +6459,6 @@ labels.
 - (void)writeAttributeDoorOpenEventsWithValue:(NSNumber * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDoorOpenEventsWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8276,10 +6476,6 @@ labels.
 - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDoorClosedEventsWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8296,10 +6492,6 @@ labels.
 - (void)writeAttributeOpenPeriodWithValue:(NSNumber * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOpenPeriodWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8312,10 +6504,6 @@ labels.
 
 - (void)readAttributeNumberOfTotalUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8328,10 +6516,6 @@ labels.
 
 - (void)readAttributeNumberOfPINUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8344,10 +6528,6 @@ labels.
 
 - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8360,10 +6540,6 @@ labels.
 
 - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8380,10 +6556,6 @@ labels.
 
 - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8400,10 +6572,6 @@ labels.
 
 - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscribeParams *)params
                                               subscriptionEstablished:
                                                   (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8419,10 +6587,6 @@ labels.
 
 - (void)readAttributeMaxPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxPINCodeLengthWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8435,10 +6599,6 @@ labels.
 
 - (void)readAttributeMinPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinPINCodeLengthWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8451,10 +6611,6 @@ labels.
 
 - (void)readAttributeMaxRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxRFIDCodeLengthWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8467,10 +6623,6 @@ labels.
 
 - (void)readAttributeMinRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinRFIDCodeLengthWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8483,10 +6635,6 @@ labels.
 
 - (void)readAttributeCredentialRulesSupportWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8499,10 +6647,6 @@ labels.
 
 - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubscribeParams *)params
                                                 subscriptionEstablished:
                                                     (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8522,10 +6666,6 @@ labels.
 - (void)writeAttributeLanguageWithValue:(NSString * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLanguageWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8543,10 +6683,6 @@ labels.
 - (void)writeAttributeLEDSettingsWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLEDSettingsWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8564,10 +6700,6 @@ labels.
 - (void)writeAttributeAutoRelockTimeWithValue:(NSNumber * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAutoRelockTimeWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8585,10 +6717,6 @@ labels.
 - (void)writeAttributeSoundVolumeWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSoundVolumeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8606,10 +6734,6 @@ labels.
 - (void)writeAttributeOperatingModeWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOperatingModeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8622,10 +6746,6 @@ labels.
 
 - (void)readAttributeSupportedOperatingModesWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8638,10 +6758,6 @@ labels.
 
 - (void)readAttributeDefaultConfigurationRegisterWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8660,10 +6776,6 @@ labels.
 - (void)writeAttributeEnableLocalProgrammingWithValue:(NSNumber * _Nonnull)value
                                                params:(MTRWriteParams * _Nullable)params
                                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnableLocalProgrammingWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8681,10 +6793,6 @@ labels.
 - (void)writeAttributeEnableOneTouchLockingWithValue:(NSNumber * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnableOneTouchLockingWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8702,10 +6810,6 @@ labels.
 - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSNumber * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnableInsideStatusLEDWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8723,10 +6827,6 @@ labels.
 - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSNumber * _Nonnull)value
                                                 params:(MTRWriteParams * _Nullable)params
                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnablePrivacyModeButtonWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8744,10 +6844,6 @@ labels.
 - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSNumber * _Nonnull)value
                                                  params:(MTRWriteParams * _Nullable)params
                                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocalProgrammingFeaturesWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8765,10 +6861,6 @@ labels.
 - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWrongCodeEntryLimitWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8786,10 +6878,6 @@ labels.
 - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSNumber * _Nonnull)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8808,10 +6896,6 @@ labels.
 - (void)writeAttributeSendPINOverTheAirWithValue:(NSNumber * _Nonnull)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSendPINOverTheAirWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8829,10 +6913,6 @@ labels.
 - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSNumber * _Nonnull)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRequirePINforRemoteOperationWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -8851,10 +6931,6 @@ labels.
 - (void)writeAttributeExpiringUserTimeoutWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeExpiringUserTimeoutWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -8867,10 +6943,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -8883,10 +6955,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -8899,10 +6967,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8915,10 +6979,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8931,10 +6991,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8980,10 +7036,6 @@ labels.
 
 - (void)readAttributeTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTypeWithParams:(MTRSubscribeParams *)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -8996,10 +7048,6 @@ labels.
 
 - (void)readAttributePhysicalClosedLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9012,10 +7060,6 @@ labels.
 
 - (void)readAttributePhysicalClosedLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9028,10 +7072,6 @@ labels.
 
 - (void)readAttributeCurrentPositionLiftWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9044,10 +7084,6 @@ labels.
 
 - (void)readAttributeCurrentPositionTiltWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9060,10 +7096,6 @@ labels.
 
 - (void)readAttributeNumberOfActuationsLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9076,10 +7108,6 @@ labels.
 
 - (void)readAttributeNumberOfActuationsTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9092,10 +7120,6 @@ labels.
 
 - (void)readAttributeConfigStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeConfigStatusWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9108,10 +7132,6 @@ labels.
 
 - (void)readAttributeCurrentPositionLiftPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9125,10 +7145,6 @@ labels.
 
 - (void)readAttributeCurrentPositionTiltPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9142,10 +7158,6 @@ labels.
 
 - (void)readAttributeOperationalStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOperationalStatusWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9158,10 +7170,6 @@ labels.
 
 - (void)readAttributeTargetPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9177,10 +7185,6 @@ labels.
 
 - (void)readAttributeTargetPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9196,10 +7200,6 @@ labels.
 
 - (void)readAttributeEndProductTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEndProductTypeWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9212,10 +7212,6 @@ labels.
 
 - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscribeParams *)params
                                              subscriptionEstablished:
                                                  (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9231,10 +7227,6 @@ labels.
 
 - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscribeParams *)params
                                              subscriptionEstablished:
                                                  (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -9250,10 +7242,6 @@ labels.
 
 - (void)readAttributeInstalledOpenLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9266,10 +7254,6 @@ labels.
 
 - (void)readAttributeInstalledClosedLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9282,10 +7266,6 @@ labels.
 
 - (void)readAttributeInstalledOpenLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9298,10 +7278,6 @@ labels.
 
 - (void)readAttributeInstalledClosedLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9318,10 +7294,6 @@ labels.
 - (void)writeAttributeModeWithValue:(NSNumber * _Nonnull)value
                              params:(MTRWriteParams * _Nullable)params
                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeModeWithParams:(MTRSubscribeParams *)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9334,10 +7306,6 @@ labels.
 
 - (void)readAttributeSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSafetyStatusWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9350,10 +7318,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -9366,10 +7330,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -9382,10 +7342,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9398,10 +7354,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9414,10 +7366,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9451,10 +7399,6 @@ labels.
 
 - (void)readAttributeBarrierMovingStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9467,10 +7411,6 @@ labels.
 
 - (void)readAttributeBarrierSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9483,10 +7423,6 @@ labels.
 
 - (void)readAttributeBarrierCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9504,10 +7440,6 @@ labels.
 - (void)writeAttributeBarrierOpenEventsWithValue:(NSNumber * _Nonnull)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierOpenEventsWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9525,10 +7457,6 @@ labels.
 - (void)writeAttributeBarrierCloseEventsWithValue:(NSNumber * _Nonnull)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierCloseEventsWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9546,10 +7474,6 @@ labels.
 - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSNumber * _Nonnull)value
                                                  params:(MTRWriteParams * _Nullable)params
                                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierCommandOpenEventsWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9567,10 +7491,6 @@ labels.
 - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSNumber * _Nonnull)value
                                                   params:(MTRWriteParams * _Nullable)params
                                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierCommandCloseEventsWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9588,10 +7508,6 @@ labels.
 - (void)writeAttributeBarrierOpenPeriodWithValue:(NSNumber * _Nonnull)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierOpenPeriodWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9609,10 +7525,6 @@ labels.
 - (void)writeAttributeBarrierClosePeriodWithValue:(NSNumber * _Nonnull)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierClosePeriodWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9625,10 +7537,6 @@ labels.
 
 - (void)readAttributeBarrierPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBarrierPositionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9641,10 +7549,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -9657,10 +7561,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -9673,10 +7573,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9689,10 +7585,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9705,10 +7597,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9736,10 +7624,6 @@ labels.
 
 - (void)readAttributeMaxPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxPressureWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9752,10 +7636,6 @@ labels.
 
 - (void)readAttributeMaxSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxSpeedWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9768,10 +7648,6 @@ labels.
 
 - (void)readAttributeMaxFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxFlowWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9784,10 +7660,6 @@ labels.
 
 - (void)readAttributeMinConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinConstPressureWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9800,10 +7672,6 @@ labels.
 
 - (void)readAttributeMaxConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxConstPressureWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9816,10 +7684,6 @@ labels.
 
 - (void)readAttributeMinCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinCompPressureWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9832,10 +7696,6 @@ labels.
 
 - (void)readAttributeMaxCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxCompPressureWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9848,10 +7708,6 @@ labels.
 
 - (void)readAttributeMinConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinConstSpeedWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9864,10 +7720,6 @@ labels.
 
 - (void)readAttributeMaxConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxConstSpeedWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9880,10 +7732,6 @@ labels.
 
 - (void)readAttributeMinConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinConstFlowWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9896,10 +7744,6 @@ labels.
 
 - (void)readAttributeMaxConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxConstFlowWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9912,10 +7756,6 @@ labels.
 
 - (void)readAttributeMinConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinConstTempWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9928,10 +7768,6 @@ labels.
 
 - (void)readAttributeMaxConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxConstTempWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9944,10 +7780,6 @@ labels.
 
 - (void)readAttributePumpStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePumpStatusWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -9960,10 +7792,6 @@ labels.
 
 - (void)readAttributeEffectiveOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9976,10 +7804,6 @@ labels.
 
 - (void)readAttributeEffectiveControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -9992,10 +7816,6 @@ labels.
 
 - (void)readAttributeCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCapacityWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10008,10 +7828,6 @@ labels.
 
 - (void)readAttributeSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSpeedWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10029,10 +7845,6 @@ labels.
 - (void)writeAttributeLifetimeRunningHoursWithValue:(NSNumber * _Nullable)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLifetimeRunningHoursWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10045,10 +7857,6 @@ labels.
 
 - (void)readAttributePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10066,10 +7874,6 @@ labels.
 - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSNumber * _Nullable)value
                                                params:(MTRWriteParams * _Nullable)params
                                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLifetimeEnergyConsumedWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10087,10 +7891,6 @@ labels.
 - (void)writeAttributeOperationModeWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOperationModeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10108,10 +7908,6 @@ labels.
 - (void)writeAttributeControlModeWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeControlModeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10124,10 +7920,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -10140,10 +7932,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -10156,10 +7944,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10172,10 +7956,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10188,10 +7968,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10230,10 +8006,6 @@ labels.
 
 - (void)readAttributeLocalTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10246,10 +8018,6 @@ labels.
 
 - (void)readAttributeOutdoorTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10262,10 +8030,6 @@ labels.
 
 - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10278,10 +8042,6 @@ labels.
 
 - (void)readAttributeAbsMinHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10294,10 +8054,6 @@ labels.
 
 - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10310,10 +8066,6 @@ labels.
 
 - (void)readAttributeAbsMinCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10326,10 +8078,6 @@ labels.
 
 - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10342,10 +8090,6 @@ labels.
 
 - (void)readAttributePICoolingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePICoolingDemandWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10358,10 +8102,6 @@ labels.
 
 - (void)readAttributePIHeatingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePIHeatingDemandWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10379,10 +8119,6 @@ labels.
 - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull)value
                                                     params:(MTRWriteParams * _Nullable)params
                                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHVACSystemTypeConfigurationWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10400,10 +8136,6 @@ labels.
 - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSNumber * _Nonnull)value
                                                     params:(MTRWriteParams * _Nullable)params
                                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLocalTemperatureCalibrationWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10421,10 +8153,6 @@ labels.
 - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value
                                                 params:(MTRWriteParams * _Nullable)params
                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupiedCoolingSetpointWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10442,10 +8170,6 @@ labels.
 - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value
                                                 params:(MTRWriteParams * _Nullable)params
                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupiedHeatingSetpointWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10463,10 +8187,6 @@ labels.
 - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value
                                                   params:(MTRWriteParams * _Nullable)params
                                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnoccupiedCoolingSetpointWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10484,10 +8204,6 @@ labels.
 - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value
                                                   params:(MTRWriteParams * _Nullable)params
                                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnoccupiedHeatingSetpointWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10505,10 +8221,6 @@ labels.
 - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinHeatSetpointLimitWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10526,10 +8238,6 @@ labels.
 - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxHeatSetpointLimitWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10547,10 +8255,6 @@ labels.
 - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinCoolSetpointLimitWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10568,10 +8272,6 @@ labels.
 - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxCoolSetpointLimitWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10589,10 +8289,6 @@ labels.
 - (void)writeAttributeMinSetpointDeadBandWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinSetpointDeadBandWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10610,10 +8306,6 @@ labels.
 - (void)writeAttributeRemoteSensingWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRemoteSensingWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10631,10 +8323,6 @@ labels.
 - (void)writeAttributeControlSequenceOfOperationWithValue:(NSNumber * _Nonnull)value
                                                    params:(MTRWriteParams * _Nullable)params
                                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeControlSequenceOfOperationWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10651,10 +8339,6 @@ labels.
 - (void)writeAttributeSystemModeWithValue:(NSNumber * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSystemModeWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10667,10 +8351,6 @@ labels.
 
 - (void)readAttributeThermostatRunningModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10683,10 +8363,6 @@ labels.
 
 - (void)readAttributeStartOfWeekWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartOfWeekWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10699,10 +8375,6 @@ labels.
 
 - (void)readAttributeNumberOfWeeklyTransitionsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10715,10 +8387,6 @@ labels.
 
 - (void)readAttributeNumberOfDailyTransitionsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10736,10 +8404,6 @@ labels.
 - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSNumber * _Nonnull)value
                                                 params:(MTRWriteParams * _Nullable)params
                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTemperatureSetpointHoldWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10757,10 +8421,6 @@ labels.
 - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSNumber * _Nullable)value
                                                         params:(MTRWriteParams * _Nullable)params
                                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTemperatureSetpointHoldDurationWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -10781,10 +8441,6 @@ labels.
 - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSNumber * _Nonnull)value
                                                            params:(MTRWriteParams * _Nullable)params
                                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeThermostatProgrammingOperationModeWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -10800,10 +8456,6 @@ labels.
 
 - (void)readAttributeThermostatRunningStateWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10816,10 +8468,6 @@ labels.
 
 - (void)readAttributeSetpointChangeSourceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10832,10 +8480,6 @@ labels.
 
 - (void)readAttributeSetpointChangeAmountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10848,10 +8492,6 @@ labels.
 
 - (void)readAttributeSetpointChangeSourceTimestampWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -10870,10 +8510,6 @@ labels.
 - (void)writeAttributeOccupiedSetbackWithValue:(NSNumber * _Nullable)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupiedSetbackWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10886,10 +8522,6 @@ labels.
 
 - (void)readAttributeOccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10902,10 +8534,6 @@ labels.
 
 - (void)readAttributeOccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10923,10 +8551,6 @@ labels.
 - (void)writeAttributeUnoccupiedSetbackWithValue:(NSNumber * _Nullable)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnoccupiedSetbackWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -10939,10 +8563,6 @@ labels.
 
 - (void)readAttributeUnoccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10955,10 +8575,6 @@ labels.
 
 - (void)readAttributeUnoccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10976,10 +8592,6 @@ labels.
 - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSNumber * _Nonnull)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEmergencyHeatDeltaWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -10996,10 +8608,6 @@ labels.
 - (void)writeAttributeACTypeWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACTypeWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11016,10 +8624,6 @@ labels.
 - (void)writeAttributeACCapacityWithValue:(NSNumber * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACCapacityWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11037,10 +8641,6 @@ labels.
 - (void)writeAttributeACRefrigerantTypeWithValue:(NSNumber * _Nonnull)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACRefrigerantTypeWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11058,10 +8658,6 @@ labels.
 - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACCompressorTypeWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11079,10 +8675,6 @@ labels.
 - (void)writeAttributeACErrorCodeWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACErrorCodeWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11100,10 +8692,6 @@ labels.
 - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACLouverPositionWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11116,10 +8704,6 @@ labels.
 
 - (void)readAttributeACCoilTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACCoilTemperatureWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11137,10 +8721,6 @@ labels.
 - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeACCapacityformatWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11153,10 +8733,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11169,10 +8745,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11185,10 +8757,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11201,10 +8769,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11217,10 +8781,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11252,10 +8812,6 @@ labels.
 - (void)writeAttributeFanModeWithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFanModeWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11273,10 +8829,6 @@ labels.
 - (void)writeAttributeFanModeSequenceWithValue:(NSNumber * _Nonnull)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFanModeSequenceWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11294,10 +8846,6 @@ labels.
 - (void)writeAttributePercentSettingWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePercentSettingWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11310,10 +8858,6 @@ labels.
 
 - (void)readAttributePercentCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePercentCurrentWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11326,10 +8870,6 @@ labels.
 
 - (void)readAttributeSpeedMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSpeedMaxWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11347,10 +8887,6 @@ labels.
 - (void)writeAttributeSpeedSettingWithValue:(NSNumber * _Nullable)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSpeedSettingWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11363,10 +8899,6 @@ labels.
 
 - (void)readAttributeSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSpeedCurrentWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11379,10 +8911,6 @@ labels.
 
 - (void)readAttributeRockSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRockSupportWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11400,10 +8928,6 @@ labels.
 - (void)writeAttributeRockSettingWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRockSettingWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11416,10 +8940,6 @@ labels.
 
 - (void)readAttributeWindSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWindSupportWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11437,10 +8957,6 @@ labels.
 - (void)writeAttributeWindSettingWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWindSettingWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11453,10 +8969,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11469,10 +8981,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11485,10 +8993,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11501,10 +9005,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11517,10 +9017,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11553,10 +9049,6 @@ labels.
 - (void)writeAttributeTemperatureDisplayModeWithValue:(NSNumber * _Nonnull)value
                                                params:(MTRWriteParams * _Nullable)params
                                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTemperatureDisplayModeWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -11574,10 +9066,6 @@ labels.
 - (void)writeAttributeKeypadLockoutWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeKeypadLockoutWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11595,10 +9083,6 @@ labels.
 - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSNumber * _Nonnull)value
                                                       params:(MTRWriteParams * _Nullable)params
                                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeScheduleProgrammingVisibilityWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -11612,10 +9096,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11628,10 +9108,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -11644,10 +9120,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11660,10 +9132,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11676,10 +9144,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11746,10 +9210,6 @@ labels.
 
 - (void)readAttributeCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentHueWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11762,10 +9222,6 @@ labels.
 
 - (void)readAttributeCurrentSaturationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentSaturationWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11778,10 +9234,6 @@ labels.
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11794,10 +9246,6 @@ labels.
 
 - (void)readAttributeCurrentXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentXWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11810,10 +9258,6 @@ labels.
 
 - (void)readAttributeCurrentYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentYWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11826,10 +9270,6 @@ labels.
 
 - (void)readAttributeDriftCompensationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDriftCompensationWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11842,10 +9282,6 @@ labels.
 
 - (void)readAttributeCompensationTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCompensationTextWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11858,10 +9294,6 @@ labels.
 
 - (void)readAttributeColorTemperatureMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -11874,10 +9306,6 @@ labels.
 
 - (void)readAttributeColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorModeWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11894,10 +9322,6 @@ labels.
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11910,10 +9334,6 @@ labels.
 
 - (void)readAttributeNumberOfPrimariesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNumberOfPrimariesWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11926,10 +9346,6 @@ labels.
 
 - (void)readAttributePrimary1XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary1XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11942,10 +9358,6 @@ labels.
 
 - (void)readAttributePrimary1YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary1YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11958,10 +9370,6 @@ labels.
 
 - (void)readAttributePrimary1IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary1IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11974,10 +9382,6 @@ labels.
 
 - (void)readAttributePrimary2XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary2XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -11990,10 +9394,6 @@ labels.
 
 - (void)readAttributePrimary2YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary2YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12006,10 +9406,6 @@ labels.
 
 - (void)readAttributePrimary2IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary2IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12022,10 +9418,6 @@ labels.
 
 - (void)readAttributePrimary3XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary3XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12038,10 +9430,6 @@ labels.
 
 - (void)readAttributePrimary3YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary3YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12054,10 +9442,6 @@ labels.
 
 - (void)readAttributePrimary3IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary3IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12070,10 +9454,6 @@ labels.
 
 - (void)readAttributePrimary4XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary4XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12086,10 +9466,6 @@ labels.
 
 - (void)readAttributePrimary4YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary4YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12102,10 +9478,6 @@ labels.
 
 - (void)readAttributePrimary4IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary4IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12118,10 +9490,6 @@ labels.
 
 - (void)readAttributePrimary5XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary5XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12134,10 +9502,6 @@ labels.
 
 - (void)readAttributePrimary5YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary5YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12150,10 +9514,6 @@ labels.
 
 - (void)readAttributePrimary5IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary5IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12166,10 +9526,6 @@ labels.
 
 - (void)readAttributePrimary6XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary6XWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12182,10 +9538,6 @@ labels.
 
 - (void)readAttributePrimary6YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary6YWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12198,10 +9550,6 @@ labels.
 
 - (void)readAttributePrimary6IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePrimary6IntensityWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12219,10 +9567,6 @@ labels.
 - (void)writeAttributeWhitePointXWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWhitePointXWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12240,10 +9584,6 @@ labels.
 - (void)writeAttributeWhitePointYWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWhitePointYWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12261,10 +9601,6 @@ labels.
 - (void)writeAttributeColorPointRXWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointRXWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12282,10 +9618,6 @@ labels.
 - (void)writeAttributeColorPointRYWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointRYWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12303,10 +9635,6 @@ labels.
 - (void)writeAttributeColorPointRIntensityWithValue:(NSNumber * _Nullable)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointRIntensityWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12324,10 +9652,6 @@ labels.
 - (void)writeAttributeColorPointGXWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointGXWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12345,10 +9669,6 @@ labels.
 - (void)writeAttributeColorPointGYWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointGYWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12366,10 +9686,6 @@ labels.
 - (void)writeAttributeColorPointGIntensityWithValue:(NSNumber * _Nullable)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointGIntensityWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12387,10 +9703,6 @@ labels.
 - (void)writeAttributeColorPointBXWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointBXWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12408,10 +9720,6 @@ labels.
 - (void)writeAttributeColorPointBYWithValue:(NSNumber * _Nonnull)value
                                      params:(MTRWriteParams * _Nullable)params
                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointBYWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12429,10 +9737,6 @@ labels.
 - (void)writeAttributeColorPointBIntensityWithValue:(NSNumber * _Nullable)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorPointBIntensityWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12445,10 +9749,6 @@ labels.
 
 - (void)readAttributeEnhancedCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12461,10 +9761,6 @@ labels.
 
 - (void)readAttributeEnhancedColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnhancedColorModeWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12477,10 +9773,6 @@ labels.
 
 - (void)readAttributeColorLoopActiveWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorLoopActiveWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12493,10 +9785,6 @@ labels.
 
 - (void)readAttributeColorLoopDirectionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12509,10 +9797,6 @@ labels.
 
 - (void)readAttributeColorLoopTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorLoopTimeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12525,10 +9809,6 @@ labels.
 
 - (void)readAttributeColorLoopStartEnhancedHueWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12541,10 +9821,6 @@ labels.
 
 - (void)readAttributeColorLoopStoredEnhancedHueWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12557,10 +9833,6 @@ labels.
 
 - (void)readAttributeColorCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorCapabilitiesWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12573,10 +9845,6 @@ labels.
 
 - (void)readAttributeColorTempPhysicalMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12589,10 +9857,6 @@ labels.
 
 - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12605,10 +9869,6 @@ labels.
 
 - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -12629,10 +9889,6 @@ labels.
 - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value
                                                       params:(MTRWriteParams * _Nullable)params
                                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartUpColorTemperatureMiredsWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -12646,10 +9902,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -12662,10 +9914,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -12678,10 +9926,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12694,10 +9938,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12710,10 +9950,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12741,10 +9977,6 @@ labels.
 
 - (void)readAttributePhysicalMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalMinLevelWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12757,10 +9989,6 @@ labels.
 
 - (void)readAttributePhysicalMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalMaxLevelWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12773,10 +10001,6 @@ labels.
 
 - (void)readAttributeBallastStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBallastStatusWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12793,10 +10017,6 @@ labels.
 - (void)writeAttributeMinLevelWithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12813,10 +10033,6 @@ labels.
 - (void)writeAttributeMaxLevelWithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12834,10 +10050,6 @@ labels.
 - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSNumber * _Nullable)value
                                                params:(MTRWriteParams * _Nullable)params
                                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeIntrinsicBalanceFactorWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12855,10 +10067,6 @@ labels.
 - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSNumber * _Nullable)value
                                                 params:(MTRWriteParams * _Nullable)params
                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBallastFactorAdjustmentWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -12871,10 +10079,6 @@ labels.
 
 - (void)readAttributeLampQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampQuantityWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12891,10 +10095,6 @@ labels.
 - (void)writeAttributeLampTypeWithValue:(NSString * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampTypeWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12912,10 +10112,6 @@ labels.
 - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampManufacturerWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12933,10 +10129,6 @@ labels.
 - (void)writeAttributeLampRatedHoursWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampRatedHoursWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12954,10 +10146,6 @@ labels.
 - (void)writeAttributeLampBurnHoursWithValue:(NSNumber * _Nullable)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampBurnHoursWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12975,10 +10163,6 @@ labels.
 - (void)writeAttributeLampAlarmModeWithValue:(NSNumber * _Nonnull)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampAlarmModeWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -12996,10 +10180,6 @@ labels.
 - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSNumber * _Nullable)value
                                                params:(MTRWriteParams * _Nullable)params
                                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLampBurnHoursTripPointWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -13012,10 +10192,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13028,10 +10204,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13044,10 +10216,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13060,10 +10228,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13076,10 +10240,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13107,10 +10267,6 @@ labels.
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13123,10 +10279,6 @@ labels.
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13139,10 +10291,6 @@ labels.
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13155,10 +10303,6 @@ labels.
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13171,10 +10315,6 @@ labels.
 
 - (void)readAttributeLightSensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLightSensorTypeWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13187,10 +10327,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13203,10 +10339,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13219,10 +10351,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13235,10 +10363,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13251,10 +10375,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13282,10 +10402,6 @@ labels.
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13298,10 +10414,6 @@ labels.
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13314,10 +10426,6 @@ labels.
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13330,10 +10438,6 @@ labels.
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13346,10 +10450,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13362,10 +10462,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13378,10 +10474,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13394,10 +10486,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13410,10 +10498,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13441,10 +10525,6 @@ labels.
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13457,10 +10537,6 @@ labels.
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13473,10 +10549,6 @@ labels.
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13489,10 +10561,6 @@ labels.
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13505,10 +10573,6 @@ labels.
 
 - (void)readAttributeScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeScaledValueWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13521,10 +10585,6 @@ labels.
 
 - (void)readAttributeMinScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinScaledValueWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13537,10 +10597,6 @@ labels.
 
 - (void)readAttributeMaxScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxScaledValueWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13553,10 +10609,6 @@ labels.
 
 - (void)readAttributeScaledToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeScaledToleranceWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13569,10 +10621,6 @@ labels.
 
 - (void)readAttributeScaleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeScaleWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13585,10 +10633,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13601,10 +10645,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13617,10 +10657,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13633,10 +10669,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13649,10 +10681,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13680,10 +10708,6 @@ labels.
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13696,10 +10720,6 @@ labels.
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13712,10 +10732,6 @@ labels.
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13728,10 +10744,6 @@ labels.
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13744,10 +10756,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13760,10 +10768,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13776,10 +10780,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13792,10 +10792,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13808,10 +10804,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13839,10 +10831,6 @@ labels.
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13855,10 +10843,6 @@ labels.
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13871,10 +10855,6 @@ labels.
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13887,10 +10867,6 @@ labels.
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13903,10 +10879,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13919,10 +10891,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -13935,10 +10903,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13951,10 +10915,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13967,10 +10927,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -13998,10 +10954,6 @@ labels.
 
 - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14014,10 +10966,6 @@ labels.
 
 - (void)readAttributeOccupancySensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -14030,10 +10978,6 @@ labels.
 
 - (void)readAttributeOccupancySensorTypeBitmapWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -14051,10 +10995,6 @@ labels.
 - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14073,10 +11013,6 @@ labels.
 - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14095,10 +11031,6 @@ labels.
 - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                                          params:(MTRWriteParams * _Nullable)params
                                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams *)params
                                              subscriptionEstablished:
                                                  (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14119,10 +11051,6 @@ labels.
 - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                             params:(MTRWriteParams * _Nullable)params
                                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams *)params
                                                 subscriptionEstablished:
                                                     (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14143,10 +11071,6 @@ labels.
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                             params:(MTRWriteParams * _Nullable)params
                                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams *)params
                                                 subscriptionEstablished:
                                                     (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14167,10 +11091,6 @@ labels.
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                                                 params:(MTRWriteParams * _Nullable)params
                                                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams *)params
                                                     subscriptionEstablished:
                                                         (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14191,10 +11111,6 @@ labels.
 - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                                  params:(MTRWriteParams * _Nullable)params
                                                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14216,10 +11132,6 @@ labels.
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
                                                                  params:(MTRWriteParams * _Nullable)params
                                                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14241,10 +11153,6 @@ labels.
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
                                                                      params:(MTRWriteParams * _Nullable)params
                                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams:(MTRSubscribeParams *)params
                                                          subscriptionEstablished:
                                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -14261,10 +11169,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14277,10 +11181,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14293,10 +11193,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14309,10 +11205,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14325,10 +11217,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14356,10 +11244,6 @@ labels.
 
 - (void)readAttributeMACAddressWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMACAddressWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14372,10 +11256,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14388,10 +11268,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14404,10 +11280,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14420,10 +11292,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14436,10 +11304,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14475,10 +11339,6 @@ labels.
 
 - (void)readAttributeChannelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeChannelListWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14491,10 +11351,6 @@ labels.
 
 - (void)readAttributeLineupWithCompletion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
@@ -14507,10 +11363,6 @@ labels.
 
 - (void)readAttributeCurrentChannelWithCompletion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
@@ -14523,10 +11375,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14539,10 +11387,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14555,10 +11399,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14571,10 +11411,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14587,10 +11423,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14622,10 +11454,6 @@ labels.
 
 - (void)readAttributeTargetListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTargetListWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14638,10 +11466,6 @@ labels.
 
 - (void)readAttributeCurrentTargetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentTargetWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14654,10 +11478,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14670,10 +11490,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14686,10 +11502,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14702,10 +11514,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14718,10 +11526,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14800,10 +11604,6 @@ labels.
 
 - (void)readAttributeCurrentStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentStateWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14816,10 +11616,6 @@ labels.
 
 - (void)readAttributeStartTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStartTimeWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14832,10 +11628,6 @@ labels.
 
 - (void)readAttributeDurationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDurationWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14848,10 +11640,6 @@ labels.
 
 - (void)readAttributeSampledPositionWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
@@ -14864,10 +11652,6 @@ labels.
 
 - (void)readAttributePlaybackSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePlaybackSpeedWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14880,10 +11664,6 @@ labels.
 
 - (void)readAttributeSeekRangeEndWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSeekRangeEndWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14896,10 +11676,6 @@ labels.
 
 - (void)readAttributeSeekRangeStartWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSeekRangeStartWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14912,10 +11688,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14928,10 +11700,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -14944,10 +11712,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14960,10 +11724,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -14976,10 +11736,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15018,10 +11774,6 @@ labels.
 
 - (void)readAttributeInputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInputListWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15034,10 +11786,6 @@ labels.
 
 - (void)readAttributeCurrentInputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentInputWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15050,10 +11798,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15066,10 +11810,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15082,10 +11822,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15098,10 +11834,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15114,10 +11846,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15149,10 +11877,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15165,10 +11889,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15181,10 +11901,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15197,10 +11913,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15213,10 +11925,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15248,10 +11956,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15264,10 +11968,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15280,10 +11980,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15296,10 +11992,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15312,10 +12004,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15350,10 +12038,6 @@ labels.
 
 - (void)readAttributeAcceptHeaderWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptHeaderWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15371,10 +12055,6 @@ labels.
 - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSNumber * _Nonnull)value
                                                     params:(MTRWriteParams * _Nullable)params
                                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeSupportedStreamingProtocolsWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -15387,10 +12067,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15403,10 +12079,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15419,10 +12091,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15435,10 +12103,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15451,10 +12115,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15487,10 +12147,6 @@ labels.
 
 - (void)readAttributeOutputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOutputListWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15503,10 +12159,6 @@ labels.
 
 - (void)readAttributeCurrentOutputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentOutputWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15519,10 +12171,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15535,10 +12183,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15551,10 +12195,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15567,10 +12207,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15583,10 +12219,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15624,10 +12256,6 @@ labels.
 
 - (void)readAttributeCatalogListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCatalogListWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15645,10 +12273,6 @@ labels.
 - (void)writeAttributeCurrentAppWithValue:(MTRApplicationLauncherClusterApplicationEP * _Nullable)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentAppWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
@@ -15661,10 +12285,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15677,10 +12297,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15693,10 +12309,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15709,10 +12321,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15725,10 +12333,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15757,10 +12361,6 @@ labels.
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15773,10 +12373,6 @@ labels.
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15789,10 +12385,6 @@ labels.
 
 - (void)readAttributeApplicationNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApplicationNameWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15805,10 +12397,6 @@ labels.
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15821,10 +12409,6 @@ labels.
 
 - (void)readAttributeApplicationWithCompletion:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
@@ -15838,10 +12422,6 @@ labels.
 
 - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15854,10 +12434,6 @@ labels.
 
 - (void)readAttributeApplicationVersionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
@@ -15870,10 +12446,6 @@ labels.
 
 - (void)readAttributeAllowedVendorListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAllowedVendorListWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15886,10 +12458,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15902,10 +12470,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -15918,10 +12482,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15934,10 +12494,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15950,10 +12506,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -15991,10 +12543,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -16007,10 +12555,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -16023,10 +12567,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16039,10 +12579,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16055,10 +12591,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16093,10 +12625,6 @@ labels.
 
 - (void)readAttributeMeasurementTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasurementTypeWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16109,10 +12637,6 @@ labels.
 
 - (void)readAttributeDcVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcVoltageWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16125,10 +12649,6 @@ labels.
 
 - (void)readAttributeDcVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcVoltageMinWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16141,10 +12661,6 @@ labels.
 
 - (void)readAttributeDcVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcVoltageMaxWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16157,10 +12673,6 @@ labels.
 
 - (void)readAttributeDcCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcCurrentWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16173,10 +12685,6 @@ labels.
 
 - (void)readAttributeDcCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcCurrentMinWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16189,10 +12697,6 @@ labels.
 
 - (void)readAttributeDcCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcCurrentMaxWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16205,10 +12709,6 @@ labels.
 
 - (void)readAttributeDcPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcPowerWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16221,10 +12721,6 @@ labels.
 
 - (void)readAttributeDcPowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcPowerMinWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16237,10 +12733,6 @@ labels.
 
 - (void)readAttributeDcPowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcPowerMaxWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16253,10 +12745,6 @@ labels.
 
 - (void)readAttributeDcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16269,10 +12757,6 @@ labels.
 
 - (void)readAttributeDcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcVoltageDivisorWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16285,10 +12769,6 @@ labels.
 
 - (void)readAttributeDcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16301,10 +12781,6 @@ labels.
 
 - (void)readAttributeDcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcCurrentDivisorWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16317,10 +12793,6 @@ labels.
 
 - (void)readAttributeDcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcPowerMultiplierWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16333,10 +12805,6 @@ labels.
 
 - (void)readAttributeDcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeDcPowerDivisorWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16349,10 +12817,6 @@ labels.
 
 - (void)readAttributeAcFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcFrequencyWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16365,10 +12829,6 @@ labels.
 
 - (void)readAttributeAcFrequencyMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcFrequencyMinWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16381,10 +12841,6 @@ labels.
 
 - (void)readAttributeAcFrequencyMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcFrequencyMaxWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16397,10 +12853,6 @@ labels.
 
 - (void)readAttributeNeutralCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNeutralCurrentWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16413,10 +12865,6 @@ labels.
 
 - (void)readAttributeTotalActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTotalActivePowerWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16429,10 +12877,6 @@ labels.
 
 - (void)readAttributeTotalReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16445,10 +12889,6 @@ labels.
 
 - (void)readAttributeTotalApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16461,10 +12901,6 @@ labels.
 
 - (void)readAttributeMeasured1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16477,10 +12913,6 @@ labels.
 
 - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16493,10 +12925,6 @@ labels.
 
 - (void)readAttributeMeasured5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16509,10 +12937,6 @@ labels.
 
 - (void)readAttributeMeasured7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16525,10 +12949,6 @@ labels.
 
 - (void)readAttributeMeasured9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16541,10 +12961,6 @@ labels.
 
 - (void)readAttributeMeasured11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16557,10 +12973,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16576,10 +12988,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16595,10 +13003,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16614,10 +13018,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16633,10 +13033,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16652,10 +13048,6 @@ labels.
 
 - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscribeParams *)params
                                              subscriptionEstablished:
                                                  (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16671,10 +13063,6 @@ labels.
 
 - (void)readAttributeAcFrequencyMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16687,10 +13075,6 @@ labels.
 
 - (void)readAttributeAcFrequencyDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16703,10 +13087,6 @@ labels.
 
 - (void)readAttributePowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerMultiplierWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16719,10 +13099,6 @@ labels.
 
 - (void)readAttributePowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerDivisorWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16735,10 +13111,6 @@ labels.
 
 - (void)readAttributeHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16751,10 +13123,6 @@ labels.
 
 - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams *)params
                                            subscriptionEstablished:
                                                (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16768,10 +13136,6 @@ labels.
 
 - (void)readAttributeInstantaneousVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16784,10 +13148,6 @@ labels.
 
 - (void)readAttributeInstantaneousLineCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams *)params
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16800,10 +13160,6 @@ labels.
 
 - (void)readAttributeInstantaneousActiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribeParams *)params
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16816,10 +13172,6 @@ labels.
 
 - (void)readAttributeInstantaneousReactiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -16833,10 +13185,6 @@ labels.
 
 - (void)readAttributeInstantaneousPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -16849,10 +13197,6 @@ labels.
 
 - (void)readAttributeRmsVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16865,10 +13209,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMinWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16881,10 +13221,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMaxWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16897,10 +13233,6 @@ labels.
 
 - (void)readAttributeRmsCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16913,10 +13245,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMinWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16929,10 +13257,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMaxWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16945,10 +13269,6 @@ labels.
 
 - (void)readAttributeActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16961,10 +13281,6 @@ labels.
 
 - (void)readAttributeActivePowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMinWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16977,10 +13293,6 @@ labels.
 
 - (void)readAttributeActivePowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMaxWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -16993,10 +13305,6 @@ labels.
 
 - (void)readAttributeReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReactivePowerWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17009,10 +13317,6 @@ labels.
 
 - (void)readAttributeApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApparentPowerWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17025,10 +13329,6 @@ labels.
 
 - (void)readAttributePowerFactorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerFactorWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17046,10 +13346,6 @@ labels.
 - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSNumber * _Nonnull)value
                                                            params:(MTRWriteParams * _Nullable)params
                                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17070,10 +13366,6 @@ labels.
 - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSNumber * _Nonnull)value
                                                       params:(MTRWriteParams * _Nullable)params
                                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17092,10 +13384,6 @@ labels.
 - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSNumber * _Nonnull)value
                                                     params:(MTRWriteParams * _Nullable)params
                                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17113,10 +13401,6 @@ labels.
 - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSNumber * _Nonnull)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17135,10 +13419,6 @@ labels.
 - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSagPeriodWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17156,10 +13436,6 @@ labels.
 - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSNumber * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSwellPeriodWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17172,10 +13448,6 @@ labels.
 
 - (void)readAttributeAcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17188,10 +13460,6 @@ labels.
 
 - (void)readAttributeAcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17204,10 +13472,6 @@ labels.
 
 - (void)readAttributeAcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17220,10 +13484,6 @@ labels.
 
 - (void)readAttributeAcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcCurrentDivisorWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17236,10 +13496,6 @@ labels.
 
 - (void)readAttributeAcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcPowerMultiplierWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17252,10 +13508,6 @@ labels.
 
 - (void)readAttributeAcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcPowerDivisorWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17273,10 +13525,6 @@ labels.
 - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOverloadAlarmsMaskWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17289,10 +13537,6 @@ labels.
 
 - (void)readAttributeVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVoltageOverloadWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17305,10 +13549,6 @@ labels.
 
 - (void)readAttributeCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCurrentOverloadWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17326,10 +13566,6 @@ labels.
 - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcOverloadAlarmsMaskWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17342,10 +13578,6 @@ labels.
 
 - (void)readAttributeAcVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcVoltageOverloadWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17358,10 +13590,6 @@ labels.
 
 - (void)readAttributeAcCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcCurrentOverloadWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17374,10 +13602,6 @@ labels.
 
 - (void)readAttributeAcActivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17390,10 +13614,6 @@ labels.
 
 - (void)readAttributeAcReactivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams *)params
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17406,10 +13626,6 @@ labels.
 
 - (void)readAttributeAverageRmsOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17422,10 +13638,6 @@ labels.
 
 - (void)readAttributeAverageRmsUnderVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17438,10 +13650,6 @@ labels.
 
 - (void)readAttributeRmsExtremeOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17454,10 +13662,6 @@ labels.
 
 - (void)readAttributeRmsExtremeUnderVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams *)params
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17470,10 +13674,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSagWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSagWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17486,10 +13686,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSwellWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSwellWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17502,10 +13698,6 @@ labels.
 
 - (void)readAttributeLineCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLineCurrentPhaseBWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17518,10 +13710,6 @@ labels.
 
 - (void)readAttributeActiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17534,10 +13722,6 @@ labels.
 
 - (void)readAttributeReactiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17550,10 +13734,6 @@ labels.
 
 - (void)readAttributeRmsVoltagePhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltagePhaseBWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17566,10 +13746,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17582,10 +13758,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17598,10 +13770,6 @@ labels.
 
 - (void)readAttributeRmsCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentPhaseBWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17614,10 +13782,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17630,10 +13794,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17646,10 +13806,6 @@ labels.
 
 - (void)readAttributeActivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerPhaseBWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17662,10 +13818,6 @@ labels.
 
 - (void)readAttributeActivePowerMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17678,10 +13830,6 @@ labels.
 
 - (void)readAttributeActivePowerMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17694,10 +13842,6 @@ labels.
 
 - (void)readAttributeReactivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17710,10 +13854,6 @@ labels.
 
 - (void)readAttributeApparentPowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17726,10 +13866,6 @@ labels.
 
 - (void)readAttributePowerFactorPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerFactorPhaseBWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17742,10 +13878,6 @@ labels.
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17762,10 +13894,6 @@ labels.
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17781,10 +13909,6 @@ labels.
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubscribeParams *)params
                                                 subscriptionEstablished:
                                                     (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17800,10 +13924,6 @@ labels.
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscribeParams *)params
                                               subscriptionEstablished:
                                                   (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17819,10 +13939,6 @@ labels.
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -17838,10 +13954,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17854,10 +13966,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17870,10 +13978,6 @@ labels.
 
 - (void)readAttributeLineCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLineCurrentPhaseCWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17886,10 +13990,6 @@ labels.
 
 - (void)readAttributeActiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17902,10 +14002,6 @@ labels.
 
 - (void)readAttributeReactiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17918,10 +14014,6 @@ labels.
 
 - (void)readAttributeRmsVoltagePhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltagePhaseCWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17934,10 +14026,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17950,10 +14038,6 @@ labels.
 
 - (void)readAttributeRmsVoltageMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17966,10 +14050,6 @@ labels.
 
 - (void)readAttributeRmsCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentPhaseCWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -17982,10 +14062,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -17998,10 +14074,6 @@ labels.
 
 - (void)readAttributeRmsCurrentMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18014,10 +14086,6 @@ labels.
 
 - (void)readAttributeActivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerPhaseCWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18030,10 +14098,6 @@ labels.
 
 - (void)readAttributeActivePowerMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18046,10 +14110,6 @@ labels.
 
 - (void)readAttributeActivePowerMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18062,10 +14122,6 @@ labels.
 
 - (void)readAttributeReactivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18078,10 +14134,6 @@ labels.
 
 - (void)readAttributeApparentPowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18094,10 +14146,6 @@ labels.
 
 - (void)readAttributePowerFactorPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributePowerFactorPhaseCWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18110,10 +14158,6 @@ labels.
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MTRSubscribeParams *)params
                                                      subscriptionEstablished:
                                                          (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18130,10 +14174,6 @@ labels.
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18149,10 +14189,6 @@ labels.
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubscribeParams *)params
                                                 subscriptionEstablished:
                                                     (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18168,10 +14204,6 @@ labels.
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscribeParams *)params
                                               subscriptionEstablished:
                                                   (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18187,10 +14219,6 @@ labels.
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubscribeParams *)params
                                                subscriptionEstablished:
                                                    (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18206,10 +14234,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParams *)params
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18222,10 +14246,6 @@ labels.
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribeParams *)params
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -18238,10 +14258,6 @@ labels.
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -18254,10 +14270,6 @@ labels.
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -18270,10 +14282,6 @@ labels.
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18286,10 +14294,6 @@ labels.
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18302,10 +14306,6 @@ labels.
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18413,10 +14413,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18433,10 +14429,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18453,10 +14445,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18473,10 +14461,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18493,10 +14477,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18513,10 +14493,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value
                               params:(MTRWriteParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18533,10 +14509,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18553,10 +14525,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18573,10 +14541,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18593,10 +14557,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18613,10 +14573,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18633,10 +14589,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18653,10 +14605,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18673,10 +14621,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value
                               params:(MTRWriteParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18693,10 +14637,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18713,10 +14653,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18733,10 +14669,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18753,10 +14685,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18773,10 +14701,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18793,10 +14717,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18813,10 +14733,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18833,10 +14749,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value
                               params:(MTRWriteParams * _Nullable)params
                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams *)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18853,10 +14765,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18874,10 +14782,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18895,10 +14799,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18915,10 +14815,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18935,10 +14831,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value
                                   params:(MTRWriteParams * _Nullable)params
                               completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams *)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18956,10 +14848,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -18977,10 +14865,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSArray * _Nullable value,
@@ -18998,10 +14882,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19018,10 +14898,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19039,10 +14915,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19059,10 +14931,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value
                                 params:(MTRWriteParams * _Nullable)params
                             completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams *)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19079,10 +14947,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value
                                params:(MTRWriteParams * _Nullable)params
                            completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams *)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19099,10 +14963,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19120,10 +14980,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnull)value
                                                         params:(MTRWriteParams * _Nullable)params
                                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscribeParams *)params
                                             subscriptionEstablished:
                                                 (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -19143,10 +14999,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value
                                  params:(MTRWriteParams * _Nullable)params
                              completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams *)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19164,10 +15016,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
                                    params:(MTRWriteParams * _Nullable)params
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
@@ -19185,10 +15033,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19206,10 +15050,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value
                                              params:(MTRWriteParams * _Nullable)params
                                          completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19227,10 +15067,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19248,10 +15084,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value
                                               params:(MTRWriteParams * _Nullable)params
                                           completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams *)params
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19269,10 +15101,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -19291,10 +15119,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19312,10 +15136,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value
                                           params:(MTRWriteParams * _Nullable)params
                                       completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams *)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19333,10 +15153,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19354,10 +15170,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19375,10 +15187,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value
                                     params:(MTRWriteParams * _Nullable)params
                                 completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams *)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19396,10 +15204,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19417,10 +15221,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value
                                         params:(MTRWriteParams * _Nullable)params
                                     completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19438,10 +15238,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19459,10 +15255,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19480,10 +15272,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19501,10 +15289,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19522,10 +15306,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19543,10 +15323,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19564,10 +15340,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19585,10 +15357,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19606,10 +15374,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19627,10 +15391,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19648,10 +15408,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19669,10 +15425,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19690,10 +15442,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19711,10 +15459,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19732,10 +15476,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19753,10 +15493,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19774,10 +15510,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19795,10 +15527,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19816,10 +15544,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19837,10 +15561,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value
                                       params:(MTRWriteParams * _Nullable)params
                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19858,10 +15578,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19879,10 +15595,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19900,10 +15612,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
@@ -19921,10 +15629,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value
                                             params:(MTRWriteParams * _Nullable)params
                                         completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19942,10 +15646,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value
                                            params:(MTRWriteParams * _Nullable)params
                                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams *)params
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
@@ -19963,10 +15663,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value
                                          params:(MTRWriteParams * _Nullable)params
                                      completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -19984,10 +15680,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
@@ -20005,10 +15697,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullable)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -20027,10 +15715,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullable)value
                                                      params:(MTRWriteParams * _Nullable)params
                                                  completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribeParams *)params
                                          subscriptionEstablished:
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -20049,10 +15733,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullable)value
                                                       params:(MTRWriteParams * _Nullable)params
                                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -20071,10 +15751,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullable)value
                                                       params:(MTRWriteParams * _Nullable)params
                                                   completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeParams *)params
                                           subscriptionEstablished:
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -20093,10 +15769,6 @@ MTR_NEWLY_AVAILABLE
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value
                                        params:(MTRWriteParams * _Nullable)params
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -20109,10 +15781,6 @@ MTR_NEWLY_AVAILABLE
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
@@ -20125,10 +15793,6 @@ MTR_NEWLY_AVAILABLE
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
@@ -20141,10 +15805,6 @@ MTR_NEWLY_AVAILABLE
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
@@ -20157,10 +15817,6 @@ MTR_NEWLY_AVAILABLE
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
@@ -20173,10 +15829,6 @@ MTR_NEWLY_AVAILABLE
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
-/**
- * This API does not support setting resubscribeIfLost to NO in the
- * MTRSubscribeParams.
- */
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 72df3810579762..ae1b56fe6c2e1d 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -18,6 +18,7 @@
 #import 
 
 #import "MTRAttributeCacheContainer_Internal.h"
+#import "MTRBaseClustersCpp_Internal.h"
 #import "MTRBaseClusters_internal.h"
 #import "MTRBaseDevice.h"
 #import "MTRBaseDevice_Internal.h"
@@ -26,7 +27,6 @@
 #import "MTRCommandPayloadsObjc.h"
 #import "MTRStructsObjc.h"
 
-#include 
 #include 
 #include 
 #include 
@@ -112,14 +112,10 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params
 
 - (void)readAttributeIdentifyTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeIdentifyTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -163,33 +159,10 @@ - (void)subscribeAttributeIdentifyTimeWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -218,47 +191,20 @@ + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeIdentifyTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeIdentifyTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -287,15 +233,10 @@ + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -303,35 +244,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -362,15 +278,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -378,35 +289,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -437,48 +323,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, IdentifyAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::AttributeList::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, IdentifyAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -507,47 +365,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -576,47 +407,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1178,47 +982,20 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa
 
 - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::NameSupport::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::NameSupport::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::NameSupport::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::NameSupport::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1247,14 +1024,10 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -1262,34 +1035,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1320,14 +1069,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -1335,34 +1080,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1392,48 +1113,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::AttributeList::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1462,47 +1155,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -1531,47 +1197,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2369,47 +2008,20 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
 
 - (void)readAttributeSceneCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSceneCountWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2438,47 +2050,20 @@ + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeCurrentSceneWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentSceneWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2507,47 +2092,20 @@ + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeCurrentGroupWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentGroupWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2576,47 +2134,20 @@ + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSceneValidWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSceneValidWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2645,47 +2176,20 @@ + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2714,47 +2218,20 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeLastConfiguredByWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLastConfiguredByWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2783,14 +2260,10 @@ + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -2798,34 +2271,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2856,14 +2305,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -2871,34 +2316,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2928,48 +2349,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRScenesAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRScenesAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRScenesAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -2998,47 +2391,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -3067,47 +2433,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -3915,47 +3254,20 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params c
 
 - (void)readAttributeOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::OnOff::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::OnOff::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOnOffWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::OnOff::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::OnOff::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -3984,14 +3296,10 @@ + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeGlobalSceneControlWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -3999,33 +3307,10 @@ - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4055,14 +3340,10 @@ + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeOnTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::OnTime::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::OnTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOnTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -4106,33 +3387,10 @@ - (void)subscribeAttributeOnTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::OnTime::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::OnTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4161,14 +3419,10 @@ + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeOffWaitTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOffWaitTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -4212,33 +3466,10 @@ - (void)subscribeAttributeOffWaitTimeWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4267,15 +3498,10 @@ + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStartUpOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeStartUpOnOffWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -4324,35 +3550,10 @@ - (void)subscribeAttributeStartUpOnOffWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4382,14 +3583,10 @@ + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -4397,34 +3594,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4454,14 +3627,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAcceptedCommandListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -4469,34 +3638,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAcceptedCommandListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4526,47 +3671,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OnOffAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4595,47 +3713,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -4664,47 +3755,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5265,47 +4329,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeSwitchTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSwitchTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5334,14 +4371,10 @@ + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeSwitchActionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSwitchActionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -5385,33 +4418,10 @@ - (void)subscribeAttributeSwitchActionsWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5440,15 +4450,11 @@ + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -5456,36 +4462,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5516,15 +4496,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -5532,36 +4508,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5592,51 +4542,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5666,47 +4585,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -5735,47 +4627,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OnOffSwitchConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6442,47 +5307,20 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre
 
 - (void)readAttributeCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6511,47 +5349,20 @@ + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6580,47 +5391,20 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6649,47 +5433,20 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6718,47 +5475,20 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeCurrentFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6787,47 +5517,20 @@ + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMinFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6856,47 +5559,20 @@ + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMaxFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -6925,14 +5601,10 @@ + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::Options::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::Options::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -6976,33 +5648,10 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::Options::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::Options::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7031,14 +5680,10 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeOnOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOnOffTransitionTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -7083,33 +5728,10 @@ - (void)subscribeAttributeOnOffTransitionTimeWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7139,14 +5761,10 @@ + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeOnLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOnLevelWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -7195,33 +5813,10 @@ - (void)subscribeAttributeOnLevelWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7250,14 +5845,10 @@ + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeOnTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOnTransitionTimeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -7306,33 +5897,10 @@ - (void)subscribeAttributeOnTransitionTimeWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7361,14 +5929,10 @@ + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOffTransitionTimeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -7417,33 +5981,10 @@ - (void)subscribeAttributeOffTransitionTimeWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7472,14 +6013,10 @@ + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeDefaultMoveRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeDefaultMoveRateWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -7528,33 +6065,10 @@ - (void)subscribeAttributeDefaultMoveRateWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7583,14 +6097,10 @@ + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeStartUpCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeStartUpCurrentLevelWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -7640,33 +6150,10 @@ - (void)subscribeAttributeStartUpCurrentLevelWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7696,15 +6183,10 @@ + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -7712,35 +6194,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7771,15 +6228,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -7787,35 +6239,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7846,48 +6273,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7916,47 +6315,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -7985,47 +6357,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9021,14 +7366,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeActiveTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeActiveTextWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9072,33 +7413,10 @@ - (void)subscribeAttributeActiveTextWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9127,14 +7445,10 @@ + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeDescriptionWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9178,33 +7492,10 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9233,14 +7524,10 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeInactiveTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInactiveTextWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9284,33 +7571,10 @@ - (void)subscribeAttributeInactiveTextWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9339,14 +7603,10 @@ + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeOutOfServiceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOutOfServiceWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9390,33 +7650,10 @@ - (void)subscribeAttributeOutOfServiceWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9445,47 +7682,20 @@ + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributePolarityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePolarityWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9514,14 +7724,10 @@ + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributePresentValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePresentValueWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9565,33 +7771,10 @@ - (void)subscribeAttributePresentValueWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9620,14 +7803,10 @@ + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeReliabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeReliabilityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -9671,33 +7850,10 @@ - (void)subscribeAttributeReliabilityWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9726,47 +7882,20 @@ + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStatusFlagsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStatusFlagsWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9795,47 +7924,20 @@ + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeApplicationTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApplicationTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9864,15 +7966,10 @@ + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -9880,36 +7977,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -9940,15 +8011,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -9956,36 +8022,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -10016,50 +8056,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -10089,47 +8099,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -10158,47 +8141,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BinaryInputBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -10918,48 +8874,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeDeviceTypeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorDeviceTypeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDeviceTypeListWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorDeviceTypeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -10988,48 +8916,20 @@ + (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeServerListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorServerListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorServerListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeServerListWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorServerListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorServerListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorServerListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11058,48 +8958,20 @@ + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClientListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorClientListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorClientListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClientListWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorClientListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorClientListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorClientListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11128,48 +9000,20 @@ + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributePartsListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorPartsListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorPartsListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePartsListWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorPartsListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11198,15 +9042,10 @@ + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -11214,35 +9053,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11273,15 +9087,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -11289,35 +9098,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11348,48 +9132,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DescriptorAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11418,47 +9174,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11487,47 +9216,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::DescriptorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -11971,14 +9673,9 @@ - (void)readAttributeBindingWithParams:(MTRReadParams * _Nullable)params
                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRBindingBindingListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingBindingListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::Binding::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::Binding::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBindingWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -12059,33 +9756,10 @@ - (void)subscribeAttributeBindingWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBindingBindingListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingBindingListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::Binding::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBindingBindingListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::Binding::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12114,15 +9788,10 @@ + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -12130,35 +9799,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12189,14 +9833,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -12204,34 +9844,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12262,48 +9878,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBindingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Binding::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBindingAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BindingAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBindingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12332,47 +9920,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12401,47 +9962,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BindingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12770,14 +10304,9 @@ - (void)readAttributeAclWithParams:(MTRReadParams * _Nullable)params
                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRAccessControlAclListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlAclListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::Acl::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::Acl::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeAclWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -12919,33 +10448,10 @@ - (void)subscribeAttributeAclWithParams:(MTRSubscribeParams * _Nonnull)params
                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                           reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccessControlAclListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlAclListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::Acl::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccessControlAclListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::Acl::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -12976,14 +10482,9 @@ - (void)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params
                               completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRAccessControlExtensionListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlExtensionListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::Extension::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::Extension::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeExtensionWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -13049,34 +10550,10 @@ - (void)subscribeAttributeExtensionWithParams:(MTRSubscribeParams * _Nonnull)par
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AccessControlExtensionListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::Extension::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::Extension::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13106,14 +10583,10 @@ + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)a
 - (void)readAttributeSubjectsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -13122,33 +10595,10 @@ - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13179,14 +10629,10 @@ + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttribu
 - (void)readAttributeTargetsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -13195,33 +10641,10 @@ - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13252,14 +10675,10 @@ + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttribut
 - (void)readAttributeAccessControlEntriesPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -13268,33 +10687,10 @@ - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13324,15 +10720,10 @@ + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -13340,35 +10731,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13399,15 +10765,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -13415,35 +10776,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13474,48 +10810,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13545,47 +10853,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -13614,47 +10895,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::AccessControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14551,47 +11805,20 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD
 
 - (void)readAttributeActionListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRActionsActionListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsActionListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::ActionList::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::ActionList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActionListWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRActionsActionListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsActionListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::ActionList::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRActionsActionListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::ActionList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14620,48 +11847,20 @@ + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeEndpointListsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRActionsEndpointListsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsEndpointListsListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEndpointListsWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsEndpointListsListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14690,47 +11889,20 @@ + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSetupURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::SetupURL::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::SetupURL::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSetupURLWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::SetupURL::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::SetupURL::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14759,15 +11931,10 @@ + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -14775,35 +11942,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14834,14 +11976,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -14849,34 +11987,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14907,48 +12021,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRActionsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRActionsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ActionsAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRActionsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -14977,47 +12063,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15046,47 +12105,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15576,47 +12608,20 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla
 
 - (void)readAttributeDataModelRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDataModelRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15645,47 +12650,20 @@ + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15714,47 +12692,20 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15783,47 +12734,20 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15852,47 +12776,20 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -15921,14 +12818,10 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -15972,33 +12865,10 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16027,14 +12897,10 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeLocationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::Location::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::Location::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLocationWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -16078,33 +12944,10 @@ - (void)subscribeAttributeLocationWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::Location::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::Location::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16133,47 +12976,20 @@ + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16202,14 +13018,10 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -16217,33 +13029,10 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16273,47 +13062,20 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16342,14 +13104,10 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -16357,33 +13115,10 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16413,47 +13148,20 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16482,47 +13190,20 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16551,47 +13232,20 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16620,47 +13274,20 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16689,47 +13316,20 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16758,14 +13358,10 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeLocalConfigDisabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLocalConfigDisabledWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -16810,33 +13406,10 @@ - (void)subscribeAttributeLocalConfigDisabledWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16866,47 +13439,20 @@ + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -16935,47 +13481,20 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17005,14 +13524,11 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                         NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicCapabilityMinimaStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -17020,34 +13536,10 @@ - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonn
                                        reportHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                          NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicCapabilityMinimaStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17077,14 +13569,10 @@ + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -17092,34 +13580,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17149,14 +13613,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAcceptedCommandListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -17164,34 +13624,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAcceptedCommandListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17221,47 +13657,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBasicAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BasicAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17290,47 +13699,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -17359,47 +13741,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -18706,15 +15061,11 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -18722,36 +15073,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -18782,15 +15107,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -18798,36 +15119,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -18858,51 +15153,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -18932,47 +15196,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19001,47 +15238,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19382,15 +15592,10 @@ - (void)readAttributeDefaultOtaProvidersWithParams:(MTRReadParams * _Nullable)pa
                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeDefaultOtaProvidersWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -19458,36 +15663,10 @@ - (void)subscribeAttributeDefaultOtaProvidersWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19518,47 +15697,20 @@ + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeUpdatePossibleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUpdatePossibleWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19587,53 +15739,21 @@ + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeUpdateStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo;
-                chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUpdateStateWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19663,14 +15783,10 @@ + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeUpdateStateProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -19678,33 +15794,10 @@ - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19734,15 +15827,11 @@ + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -19750,36 +15839,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19810,15 +15873,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -19826,36 +15885,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19886,51 +15919,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -19960,47 +15963,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20029,47 +16005,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20538,14 +16487,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeActiveLocaleWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeActiveLocaleWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -20589,33 +16534,10 @@ - (void)subscribeAttributeActiveLocaleWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20644,51 +16566,21 @@ + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSupportedLocalesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportedLocalesWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20718,15 +16610,11 @@ + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -20734,36 +16622,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20794,15 +16656,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -20810,36 +16668,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20870,51 +16702,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -20944,47 +16745,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21013,47 +16787,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::LocalizationConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21424,15 +17171,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeHourFormatWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeHourFormatWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -21476,36 +17218,10 @@ - (void)subscribeAttributeHourFormatWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21535,15 +17251,10 @@ + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeActiveCalendarTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeActiveCalendarTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -21588,36 +17299,10 @@ - (void)subscribeAttributeActiveCalendarTypeWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21648,15 +17333,11 @@ + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeSupportedCalendarTypesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -21664,36 +17345,10 @@ - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21724,15 +17379,11 @@ + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -21740,36 +17391,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21800,15 +17425,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -21816,36 +17437,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21876,51 +17471,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -21950,47 +17514,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22019,47 +17556,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::TimeFormatLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22486,15 +17996,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeTemperatureUnitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeTemperatureUnitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -22538,35 +18043,10 @@ - (void)subscribeAttributeTemperatureUnitWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22596,15 +18076,10 @@ + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -22612,36 +18087,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22672,15 +18121,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -22688,36 +18132,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22748,50 +18166,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22821,47 +18209,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -22890,47 +18251,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::UnitLocalizationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23258,50 +18592,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeSourcesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSourcesWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23331,15 +18635,11 @@ + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -23347,36 +18647,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23407,15 +18681,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -23423,36 +18693,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23483,51 +18727,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23557,47 +18770,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23626,47 +18812,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::PowerSourceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -23981,50 +19140,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::Status::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::Status::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::Status::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::Status::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24054,47 +19183,20 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeOrderWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::Order::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::Order::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOrderWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::Order::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::Order::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24123,47 +19225,20 @@ + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::Description::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::Description::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::Description::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::Description::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24193,14 +19268,10 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
 - (void)readAttributeWiredAssessedInputVoltageWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24208,33 +19279,10 @@ - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24265,14 +19313,10 @@ + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeWiredAssessedInputFrequencyWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24280,33 +19324,10 @@ - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24336,50 +19357,20 @@ + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttribute
 
 - (void)readAttributeWiredCurrentTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredCurrentTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24409,14 +19400,10 @@ + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeWiredAssessedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24424,33 +19411,10 @@ - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24480,14 +19444,10 @@ + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeWiredNominalVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24495,33 +19455,10 @@ - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24551,14 +19488,10 @@ + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeWiredMaximumCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24566,33 +19499,10 @@ - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24622,47 +19532,20 @@ + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeWiredPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiredPresentWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24691,50 +19574,20 @@ + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeActiveWiredFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveWiredFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24764,47 +19617,20 @@ + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeBatVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24833,14 +19659,10 @@ + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeBatPercentRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -24848,33 +19670,10 @@ - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24904,47 +19703,20 @@ + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeBatTimeRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatTimeRemainingWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -24973,50 +19745,20 @@ + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeBatChargeLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatChargeLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25046,14 +19788,10 @@ + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeBatReplacementNeededWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25061,33 +19799,10 @@ - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25117,50 +19832,20 @@ + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeBatReplaceabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatReplaceabilityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25190,47 +19875,20 @@ + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeBatPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatPresentWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25259,48 +19917,20 @@ + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeActiveBatFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveBatFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25331,14 +19961,10 @@ + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContain
 - (void)readAttributeBatReplacementDescriptionWithCompletion:(void (^)(
                                                                  NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25346,33 +19972,10 @@ - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25402,14 +20005,10 @@ + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCa
 
 - (void)readAttributeBatCommonDesignationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25417,33 +20016,10 @@ - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25473,14 +20049,10 @@ + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeBatANSIDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25488,33 +20060,10 @@ - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25544,47 +20093,20 @@ + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeBatIECDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatIECDesignationWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25613,14 +20135,10 @@ + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeBatApprovedChemistryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25628,33 +20146,10 @@ - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25684,47 +20179,20 @@ + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeBatCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatCapacityWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25753,47 +20221,20 @@ + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeBatQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatQuantityWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25822,50 +20263,20 @@ + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeBatChargeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatChargeStateWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25895,14 +20306,10 @@ + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeBatTimeToFullChargeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25910,33 +20317,10 @@ - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -25967,14 +20351,10 @@ + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeBatFunctionalWhileChargingWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -25982,33 +20362,10 @@ - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26038,14 +20395,10 @@ + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeC
 
 - (void)readAttributeBatChargingCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -26053,33 +20406,10 @@ - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26109,15 +20439,10 @@ + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeActiveBatChargeFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -26125,35 +20450,10 @@ - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26184,15 +20484,10 @@ + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -26200,35 +20495,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26259,15 +20529,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -26275,35 +20540,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26334,48 +20574,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, PowerSourceAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, PowerSourceAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26404,47 +20616,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -26473,47 +20658,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::PowerSourceCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28242,14 +22400,10 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
 
 - (void)readAttributeBreadcrumbWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBreadcrumbWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -28293,33 +22447,10 @@ - (void)subscribeAttributeBreadcrumbWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28349,15 +22480,11 @@ + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)
 - (void)readAttributeBasicCommissioningInfoWithCompletion:
     (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -28366,36 +22493,10 @@ - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams *
                                                  (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished,
+        reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28428,51 +22529,21 @@ + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeRegulatoryConfigWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRegulatoryConfigWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28502,15 +22573,11 @@ + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeLocationCapabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -28518,36 +22585,10 @@ - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28579,14 +22620,10 @@ + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheCont
 - (void)readAttributeSupportsConcurrentConnectionWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -28595,33 +22632,10 @@ - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28651,15 +22665,11 @@ + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttribut
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -28667,36 +22677,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28727,15 +22711,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -28743,36 +22723,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28803,50 +22757,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28876,47 +22800,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -28945,47 +22842,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -29739,47 +23609,20 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
 
 - (void)readAttributeMaxNetworksWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxNetworksWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -29808,50 +23651,20 @@ + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeNetworksWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNetworksWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -29881,14 +23694,10 @@ + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeScanMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -29896,33 +23705,10 @@ - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -29952,14 +23738,10 @@ + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeConnectMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -29967,33 +23749,10 @@ - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30023,14 +23782,10 @@ + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeInterfaceEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInterfaceEnabledWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -30074,33 +23829,10 @@ - (void)subscribeAttributeInterfaceEnabledWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30129,16 +23861,11 @@ + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeLastNetworkingStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(self.callbackQueue,
-        completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -30146,37 +23873,10 @@ - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast<
-                MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge *>(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device,
+        self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30207,47 +23907,20 @@ + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeLastNetworkIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLastNetworkIDWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30276,14 +23949,10 @@ + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeLastConnectErrorValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -30291,33 +23960,10 @@ - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30347,15 +23993,11 @@ + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -30363,36 +24005,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30423,15 +24039,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -30439,36 +24051,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30499,50 +24085,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30572,47 +24128,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -30641,47 +24170,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -31416,15 +24918,10 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -31432,36 +24929,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -31492,15 +24963,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -31508,35 +24974,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -31567,50 +25008,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo;
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -31640,47 +25051,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -31709,47 +25093,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32064,51 +25421,20 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger
 
 - (void)readAttributeNetworkInterfacesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNetworkInterfacesWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32138,47 +25464,20 @@ + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeRebootCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRebootCountWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32207,47 +25506,20 @@ + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeUpTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUpTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32276,14 +25548,10 @@ + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeTotalOperationalHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32291,33 +25559,10 @@ - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32347,47 +25592,20 @@ + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeBootReasonsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBootReasonsWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32416,15 +25634,10 @@ + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeActiveHardwareFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32432,36 +25645,10 @@ - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32492,51 +25679,20 @@ + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeActiveRadioFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveRadioFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32566,15 +25722,10 @@ + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeActiveNetworkFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32582,36 +25733,10 @@ - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32643,14 +25768,10 @@ + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeTestEventTriggersEnabledWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32658,33 +25779,10 @@ - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32714,15 +25812,10 @@ + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCac
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32730,36 +25823,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32790,15 +25857,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -32806,36 +25868,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32866,50 +25902,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -32939,47 +25945,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -33008,47 +25987,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -33754,50 +26706,20 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP
 
 - (void)readAttributeThreadMetricsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeThreadMetricsWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -33827,47 +26749,20 @@ + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeCurrentHeapFreeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentHeapFreeWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -33896,47 +26791,20 @@ + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeCurrentHeapUsedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentHeapUsedWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -33966,14 +26834,10 @@ + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContain
 - (void)readAttributeCurrentHeapHighWatermarkWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -33981,33 +26845,10 @@ - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34037,15 +26878,11 @@ + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCac
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -34053,36 +26890,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34113,15 +26924,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -34129,36 +26935,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34189,50 +26969,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34262,47 +27012,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34331,47 +27054,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34862,47 +27558,20 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara
 
 - (void)readAttributeChannelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeChannelWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -34931,51 +27600,21 @@ + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeRoutingRoleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRoutingRoleWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35005,47 +27644,20 @@ + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeNetworkNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNetworkNameWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35074,47 +27686,20 @@ + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributePanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePanIdWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35143,47 +27728,20 @@ + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeExtendedPanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeExtendedPanIdWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35212,47 +27770,20 @@ + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMeshLocalPrefixWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeshLocalPrefixWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35281,47 +27812,20 @@ + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35350,51 +27854,21 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35424,51 +27898,20 @@ + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35498,47 +27941,20 @@ + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributePartitionIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePartitionIdWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35567,47 +27983,20 @@ + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeWeightingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWeightingWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35636,47 +28025,20 @@ + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDataVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35705,47 +28067,20 @@ + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStableDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStableDataVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35774,47 +28109,20 @@ + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeLeaderRouterIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLeaderRouterIdWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35843,47 +28151,20 @@ + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeDetachedRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDetachedRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35912,47 +28193,20 @@ + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeChildRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeChildRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -35981,47 +28235,20 @@ + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeRouterRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRouterRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36050,47 +28277,20 @@ + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeLeaderRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLeaderRoleCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36119,14 +28319,10 @@ + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -36134,33 +28330,10 @@ - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36191,14 +28364,10 @@ + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheCont
 - (void)readAttributePartitionIdChangeCountWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -36206,33 +28375,10 @@ - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36263,14 +28409,10 @@ + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -36279,33 +28421,10 @@ - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscr
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36335,47 +28454,20 @@ + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAtt
 
 - (void)readAttributeParentChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeParentChangeCountWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36404,47 +28496,20 @@ + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeTxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36473,47 +28538,20 @@ + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxUnicastCountWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36542,47 +28580,20 @@ + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeTxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxBroadcastCountWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36611,14 +28622,10 @@ + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeTxAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -36626,33 +28633,10 @@ - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36682,47 +28666,20 @@ + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeTxAckedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxAckedCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36751,14 +28708,10 @@ + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxNoAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -36766,33 +28719,10 @@ - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36822,47 +28752,20 @@ + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeTxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxDataCountWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36891,47 +28794,20 @@ + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeTxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxDataPollCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -36960,47 +28836,20 @@ + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeTxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37029,14 +28878,10 @@ + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -37044,33 +28889,10 @@ - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37100,47 +28922,20 @@ + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeTxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37169,47 +28964,20 @@ + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxRetryCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxRetryCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37239,14 +29007,10 @@ + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -37254,33 +29018,10 @@ - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37311,14 +29052,10 @@ + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribute
 - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -37327,33 +29064,10 @@ - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37383,47 +29097,20 @@ + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeTxErrCcaCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxErrCcaCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37452,47 +29139,20 @@ + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxErrAbortCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxErrAbortCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37521,14 +29181,10 @@ + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeTxErrBusyChannelCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -37536,33 +29192,10 @@ - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37592,47 +29225,20 @@ + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeRxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37661,47 +29267,20 @@ + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxUnicastCountWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37730,47 +29309,20 @@ + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeRxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxBroadcastCountWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37799,47 +29351,20 @@ + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeRxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxDataCountWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37868,47 +29393,20 @@ + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeRxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxDataPollCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -37937,47 +29435,20 @@ + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeRxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38006,14 +29477,10 @@ + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -38021,33 +29488,10 @@ - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38077,47 +29521,20 @@ + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeRxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38147,14 +29564,10 @@ + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeRxAddressFilteredCountWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -38162,33 +29575,10 @@ - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38219,14 +29609,10 @@ + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeRxDestAddrFilteredCountWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -38234,33 +29620,10 @@ - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38290,47 +29653,20 @@ + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeRxDuplicatedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxDuplicatedCountWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38359,47 +29695,20 @@ + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeRxErrNoFrameCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrNoFrameCountWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38429,14 +29738,10 @@ + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeRxErrUnknownNeighborCountWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -38444,33 +29749,10 @@ - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38501,14 +29783,10 @@ + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -38516,33 +29794,10 @@ - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38572,47 +29827,20 @@ + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCac
 
 - (void)readAttributeRxErrSecCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrSecCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38641,47 +29869,20 @@ + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRxErrFcsCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrFcsCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38710,47 +29911,20 @@ + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRxErrOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRxErrOtherCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38779,47 +29953,20 @@ + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeActiveTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveTimestampWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38848,47 +29995,20 @@ + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributePendingTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePendingTimestampWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38917,47 +30037,20 @@ + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDelayWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -38987,15 +30080,11 @@ + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attri
 - (void)readAttributeSecurityPolicyWithCompletion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -39003,36 +30092,10 @@ - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams * _Nonnul
                                      reportHandler:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
                                                        NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler,
+        self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39063,47 +30126,20 @@ + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeChannelPage0MaskWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeChannelPage0MaskWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39134,16 +30170,11 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletion:
     (void (^)(
         MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo;
-                chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)
@@ -39154,38 +30185,10 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletion:
                                                        MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
                                                        NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(
-                    bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished,
+        reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)
@@ -39220,16 +30223,11 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletion:
 - (void)readAttributeActiveNetworkFaultsListWithCompletion:(void (^)(
                                                                NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo;
-                chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -39237,37 +30235,10 @@ - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39298,15 +30269,11 @@ + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -39314,36 +30281,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39374,15 +30315,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -39390,36 +30327,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39450,51 +30361,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39524,47 +30404,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -39593,47 +30446,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -42746,47 +33572,20 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams
 
 - (void)readAttributeBssidWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -42815,51 +33614,21 @@ + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeSecurityTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSecurityTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -42889,53 +33658,21 @@ + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeWiFiVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo;
-                chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWiFiVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -42965,47 +33702,20 @@ + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeChannelNumberWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeChannelNumberWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43034,47 +33744,20 @@ + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43103,47 +33786,20 @@ + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attrib
 
 - (void)readAttributeBeaconLostCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBeaconLostCountWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43172,47 +33828,20 @@ + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeBeaconRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBeaconRxCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43242,14 +33871,10 @@ + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributePacketMulticastRxCountWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43257,33 +33882,10 @@ - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43314,14 +33916,10 @@ + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCache
 - (void)readAttributePacketMulticastTxCountWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43329,33 +33927,10 @@ - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43385,14 +33960,10 @@ + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributePacketUnicastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43400,33 +33971,10 @@ - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43456,14 +34004,10 @@ + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributePacketUnicastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43471,33 +34015,10 @@ - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43527,47 +34048,20 @@ + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeCurrentMaxRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentMaxRateWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43596,47 +34090,20 @@ + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43665,15 +34132,11 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43681,36 +34144,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43741,15 +34178,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -43757,36 +34190,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43817,51 +34224,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43891,47 +34267,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -43960,47 +34309,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -44882,53 +35204,21 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa
 
 - (void)readAttributePHYRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo;
-                chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePHYRateWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -44958,47 +35248,20 @@ + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeFullDuplexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFullDuplexWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45027,47 +35290,20 @@ + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributePacketRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketRxCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45096,47 +35332,20 @@ + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributePacketTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePacketTxCountWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45165,47 +35374,20 @@ + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTxErrCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTxErrCountWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45234,47 +35416,20 @@ + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeCollisionCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCollisionCountWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45303,47 +35458,20 @@ + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45372,47 +35500,20 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeCarrierDetectWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCarrierDetectWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45441,47 +35542,20 @@ + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeTimeSinceResetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTimeSinceResetWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45510,15 +35584,11 @@ + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -45526,36 +35596,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45586,15 +35630,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -45602,36 +35642,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45662,51 +35676,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45736,47 +35720,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -45805,47 +35762,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46517,47 +36447,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46586,47 +36489,20 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46655,47 +36531,20 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46724,14 +36573,10 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNodeLabelWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -46775,33 +36620,10 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46830,47 +36652,20 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46899,14 +36694,10 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -46914,33 +36705,10 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -46970,47 +36738,20 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47039,14 +36780,10 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -47054,33 +36791,10 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47110,47 +36824,20 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47179,47 +36866,20 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47248,47 +36908,20 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47317,47 +36950,20 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47386,47 +36992,20 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47455,47 +37034,20 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47524,47 +37076,20 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47593,15 +37118,10 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -47609,36 +37129,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47669,15 +37163,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -47685,36 +37174,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47745,50 +37208,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47818,47 +37251,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -47887,47 +37293,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BridgedDeviceBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -48857,47 +38236,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeNumberOfPositionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfPositionsWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -48926,47 +38278,20 @@ + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeCurrentPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -48995,47 +38320,20 @@ + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeMultiPressMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMultiPressMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49064,14 +38362,10 @@ + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -49079,34 +38373,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49137,14 +38407,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -49152,34 +38418,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49209,48 +38451,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRSwitchAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, SwitchAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::AttributeList::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, SwitchAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49279,47 +38493,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49348,47 +38535,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::SwitchCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49895,54 +39055,21 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok
 
 - (void)readAttributeWindowStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo;
-                chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWindowStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(
-                    bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device,
+        self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -49972,47 +39099,20 @@ + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeAdminFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAdminFabricIndexWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50041,47 +39141,20 @@ + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeAdminVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAdminVendorIdWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50110,15 +39183,11 @@ + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -50126,36 +39195,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50186,15 +39229,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -50202,36 +39241,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50262,51 +39275,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50336,47 +39319,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -50405,47 +39361,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51098,48 +40027,19 @@ - (void)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params
                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams * _Nonnull)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51171,50 +40071,19 @@ - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFabricsWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51244,47 +40113,20 @@ + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeSupportedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportedFabricsWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51313,14 +40155,10 @@ + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeCommissionedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -51328,33 +40166,10 @@ - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51385,15 +40200,11 @@ + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeTrustedRootCertificatesWithCompletion:(void (^)(
                                                                NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -51401,36 +40212,10 @@ - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51461,14 +40246,10 @@ + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeCurrentFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -51476,33 +40257,10 @@ - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51532,15 +40290,11 @@ + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -51548,36 +40302,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51608,15 +40336,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -51624,36 +40348,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51684,51 +40382,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51758,47 +40425,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -51827,47 +40467,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -52656,15 +41269,9 @@ - (void)readAttributeGroupKeyMapWithParams:(MTRReadParams * _Nullable)params
                                 completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeGroupKeyMapWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -52731,35 +41338,10 @@ - (void)subscribeAttributeGroupKeyMapWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -52791,50 +41373,19 @@ - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
                                completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGroupTableWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -52864,14 +41415,10 @@ + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeMaxGroupsPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -52879,33 +41426,10 @@ - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -52935,14 +41459,10 @@ + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeMaxGroupKeysPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -52950,33 +41470,10 @@ - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53006,15 +41503,10 @@ + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -53022,36 +41514,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53082,15 +41548,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -53098,36 +41559,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53158,50 +41593,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53231,47 +41636,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53300,47 +41678,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53833,48 +42184,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeLabelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelLabelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelLabelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53903,15 +42226,10 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -53919,35 +42237,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -53978,15 +42271,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -53994,35 +42282,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54053,48 +42316,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FixedLabelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54123,47 +42358,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54192,47 +42400,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::FixedLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54548,14 +42729,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeLabelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUserLabelLabelListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelLabelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -54621,33 +42798,10 @@ - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)par
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelLabelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54676,15 +42830,10 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -54692,35 +42841,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54751,15 +42875,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -54767,35 +42886,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54826,48 +42920,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UserLabelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54896,47 +42962,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -54965,47 +43004,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::UserLabelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55331,47 +43343,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeStateValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStateValueWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55400,15 +43385,10 @@ + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -55416,35 +43396,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55475,15 +43430,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -55491,35 +43441,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55550,48 +43475,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55620,47 +43517,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -55689,47 +43559,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BooleanStateCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56072,47 +43915,20 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::Description::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::Description::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::Description::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::Description::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56141,47 +43957,20 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStandardNamespaceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStandardNamespaceWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56210,48 +43999,20 @@ + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeSupportedModesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectSupportedModesListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportedModesWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectSupportedModesListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56280,47 +44041,20 @@ + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeCurrentModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentModeWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56349,14 +44083,10 @@ + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStartUpModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeStartUpModeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -56405,33 +44135,10 @@ - (void)subscribeAttributeStartUpModeWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56460,14 +44167,10 @@ + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeOnModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOnModeWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -56516,33 +44219,10 @@ - (void)subscribeAttributeOnModeWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56571,15 +44251,10 @@ + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -56587,35 +44262,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56646,15 +44296,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -56662,35 +44307,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56721,48 +44341,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ModeSelectAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56791,47 +44383,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -56860,47 +44425,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58059,50 +45597,20 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par
 
 - (void)readAttributeLockStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::LockState::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::LockState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLockStateWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::LockState::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::LockState::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58132,48 +45640,20 @@ + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeLockTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterDlLockTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::LockType::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::LockType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLockTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterDlLockTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::LockType::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::LockType::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58202,47 +45682,20 @@ + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeActuatorEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActuatorEnabledWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58271,50 +45724,20 @@ + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeDoorStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDoorStateWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58344,14 +45767,10 @@ + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeDoorOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeDoorOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -58395,33 +45814,10 @@ - (void)subscribeAttributeDoorOpenEventsWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58450,14 +45846,10 @@ + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeDoorClosedEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeDoorClosedEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -58501,33 +45893,10 @@ - (void)subscribeAttributeDoorClosedEventsWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58556,14 +45925,10 @@ + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOpenPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -58607,33 +45972,10 @@ - (void)subscribeAttributeOpenPeriodWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58663,14 +46005,10 @@ + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)
 - (void)readAttributeNumberOfTotalUsersSupportedWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -58678,33 +46016,10 @@ - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58735,14 +46050,10 @@ + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttribute
 - (void)readAttributeNumberOfPINUsersSupportedWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -58750,33 +46061,10 @@ - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58807,14 +46095,10 @@ + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -58822,33 +46106,10 @@ - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -58879,14 +46140,10 @@ + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeC
 - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -58895,33 +46152,10 @@ - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
@@ -58953,14 +46187,10 @@ + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
 - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -58969,33 +46199,10 @@ - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
@@ -59027,14 +46234,10 @@ + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
 - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -59043,33 +46246,10 @@ - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscr
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59099,47 +46279,20 @@ + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAtt
 
 - (void)readAttributeMaxPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxPINCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59168,47 +46321,20 @@ + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMinPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinPINCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59237,47 +46363,20 @@ + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxRFIDCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59306,47 +46405,20 @@ + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeMinRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinRFIDCodeLengthWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59376,14 +46448,10 @@ + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeCredentialRulesSupportWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -59391,34 +46459,10 @@ - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59450,14 +46494,10 @@ + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -59466,33 +46506,10 @@ - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubs
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59522,14 +46539,10 @@ + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRA
 
 - (void)readAttributeLanguageWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::Language::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::Language::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLanguageWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -59573,33 +46586,10 @@ - (void)subscribeAttributeLanguageWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::Language::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::Language::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59628,14 +46618,10 @@ + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeLEDSettingsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLEDSettingsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -59679,33 +46665,10 @@ - (void)subscribeAttributeLEDSettingsWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59734,14 +46697,10 @@ + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeAutoRelockTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeAutoRelockTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -59785,33 +46744,10 @@ - (void)subscribeAttributeAutoRelockTimeWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59840,14 +46776,10 @@ + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeSoundVolumeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSoundVolumeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -59891,33 +46823,10 @@ - (void)subscribeAttributeSoundVolumeWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -59946,14 +46855,10 @@ + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeOperatingModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOperatingModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -59997,34 +46902,10 @@ - (void)subscribeAttributeOperatingModeWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60055,15 +46936,10 @@ + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeSupportedOperatingModesWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -60071,35 +46947,10 @@ - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60131,15 +46982,10 @@ + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeDefaultConfigurationRegisterWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -60148,35 +46994,10 @@ - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60208,14 +47029,10 @@ + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttribut
 - (void)readAttributeEnableLocalProgrammingWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnableLocalProgrammingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60260,33 +47077,10 @@ - (void)subscribeAttributeEnableLocalProgrammingWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60316,14 +47110,10 @@ + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeEnableOneTouchLockingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnableOneTouchLockingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60368,33 +47158,10 @@ - (void)subscribeAttributeEnableOneTouchLockingWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60424,14 +47191,10 @@ + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeEnableInsideStatusLEDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60476,33 +47239,10 @@ - (void)subscribeAttributeEnableInsideStatusLEDWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60533,14 +47273,10 @@ + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheC
 - (void)readAttributeEnablePrivacyModeButtonWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60585,33 +47321,10 @@ - (void)subscribeAttributeEnablePrivacyModeButtonWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60642,15 +47355,10 @@ + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeLocalProgrammingFeaturesWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60695,35 +47403,10 @@ - (void)subscribeAttributeLocalProgrammingFeaturesWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60754,14 +47437,10 @@ + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCac
 
 - (void)readAttributeWrongCodeEntryLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60806,33 +47485,10 @@ - (void)subscribeAttributeWrongCodeEntryLimitWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60863,14 +47519,10 @@ + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeUserCodeTemporaryDisableTimeWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -60916,33 +47568,10 @@ - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -60972,14 +47601,10 @@ + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttribut
 
 - (void)readAttributeSendPINOverTheAirWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSendPINOverTheAirWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -61023,33 +47648,10 @@ - (void)subscribeAttributeSendPINOverTheAirWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61079,14 +47681,10 @@ + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeRequirePINforRemoteOperationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -61132,33 +47730,10 @@ - (void)subscribeAttributeRequirePINforRemoteOperationWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61188,14 +47763,10 @@ + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttribut
 
 - (void)readAttributeExpiringUserTimeoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeExpiringUserTimeoutWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -61240,33 +47811,10 @@ - (void)subscribeAttributeExpiringUserTimeoutWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61296,15 +47844,10 @@ + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -61312,35 +47855,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61371,15 +47889,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -61387,35 +47900,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61446,48 +47934,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61516,47 +47976,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -61585,47 +48018,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64018,48 +50424,20 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage
 
 - (void)readAttributeTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringClusterTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::Type::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::Type::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringClusterTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::Type::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::Type::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64089,14 +50467,10 @@ + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attrib
 - (void)readAttributePhysicalClosedLimitLiftWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64104,33 +50478,10 @@ - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64161,14 +50512,10 @@ + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCach
 - (void)readAttributePhysicalClosedLimitTiltWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64176,33 +50523,10 @@ - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64232,14 +50556,10 @@ + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeCurrentPositionLiftWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64247,33 +50567,10 @@ - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64303,14 +50600,10 @@ + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeCurrentPositionTiltWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64318,33 +50611,10 @@ - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64375,14 +50645,10 @@ + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeNumberOfActuationsLiftWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64390,33 +50656,10 @@ - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64447,14 +50690,10 @@ + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeNumberOfActuationsTiltWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64462,33 +50701,10 @@ - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64518,48 +50734,20 @@ + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeConfigStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringConfigStatusAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeConfigStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringConfigStatusAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64589,14 +50777,10 @@ + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeCurrentPositionLiftPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64605,33 +50789,10 @@ - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64662,14 +50823,10 @@ + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttribu
 - (void)readAttributeCurrentPositionTiltPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64678,33 +50835,10 @@ - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64734,50 +50868,20 @@ + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeOperationalStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOperationalStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64808,14 +50912,10 @@ + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeTargetPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64824,33 +50924,10 @@ - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64881,14 +50958,10 @@ + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttri
 - (void)readAttributeTargetPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -64897,33 +50970,10 @@ - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -64953,50 +51003,20 @@ + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttri
 
 - (void)readAttributeEndProductTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEndProductTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65027,14 +51047,10 @@ + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContaine
 - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65043,33 +51059,10 @@ - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscri
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65100,14 +51093,10 @@ + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttr
 - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65116,33 +51105,10 @@ - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscri
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65173,14 +51139,10 @@ + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttr
 - (void)readAttributeInstalledOpenLimitLiftWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65188,33 +51150,10 @@ - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65245,14 +51184,10 @@ + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeInstalledClosedLimitLiftWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65260,33 +51195,10 @@ - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65317,14 +51229,10 @@ + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCac
 - (void)readAttributeInstalledOpenLimitTiltWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65332,33 +51240,10 @@ - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65389,14 +51274,10 @@ + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeInstalledClosedLimitTiltWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65404,33 +51285,10 @@ - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65460,14 +51318,10 @@ + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCac
 
 - (void)readAttributeModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringModeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringModeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -65511,33 +51365,10 @@ - (void)subscribeAttributeModeWithParams:(MTRSubscribeParams * _Nonnull)params
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringModeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65566,48 +51397,20 @@ + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attrib
 
 - (void)readAttributeSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringSafetyStatusAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WindowCoveringSafetyStatusAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65636,15 +51439,10 @@ + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65652,36 +51450,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65712,15 +51484,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -65728,35 +51495,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65787,50 +51529,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65860,47 +51572,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -65929,47 +51614,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67337,14 +52995,10 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop
 
 - (void)readAttributeBarrierMovingStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -67352,33 +53006,10 @@ - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67408,14 +53039,10 @@ + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeBarrierSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -67423,33 +53050,10 @@ - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67479,14 +53083,10 @@ + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeBarrierCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -67494,33 +53094,10 @@ - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67550,14 +53127,10 @@ + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeBarrierOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -67601,33 +53174,10 @@ - (void)subscribeAttributeBarrierOpenEventsWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67656,14 +53206,10 @@ + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeBarrierCloseEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierCloseEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -67708,33 +53254,10 @@ - (void)subscribeAttributeBarrierCloseEventsWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67765,14 +53288,10 @@ + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheCont
 - (void)readAttributeBarrierCommandOpenEventsWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -67817,33 +53336,10 @@ - (void)subscribeAttributeBarrierCommandOpenEventsWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67874,14 +53370,10 @@ + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCac
 - (void)readAttributeBarrierCommandCloseEventsWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -67926,33 +53418,10 @@ - (void)subscribeAttributeBarrierCommandCloseEventsWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -67982,14 +53451,10 @@ + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCa
 
 - (void)readAttributeBarrierOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierOpenPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -68033,33 +53498,10 @@ - (void)subscribeAttributeBarrierOpenPeriodWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68088,14 +53530,10 @@ + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeBarrierClosePeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBarrierClosePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -68140,33 +53578,10 @@ - (void)subscribeAttributeBarrierClosePeriodWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68196,47 +53611,20 @@ + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeBarrierPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBarrierPositionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68265,15 +53653,10 @@ + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -68281,36 +53664,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68341,15 +53698,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -68357,35 +53709,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68416,50 +53743,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68489,47 +53786,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -68558,47 +53828,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69400,47 +54643,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMaxPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxPressureWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69469,47 +54685,20 @@ + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeMaxSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69538,47 +54727,20 @@ + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeMaxFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxFlowWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69607,47 +54769,20 @@ + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeMinConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinConstPressureWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69676,47 +54811,20 @@ + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxConstPressureWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69745,47 +54853,20 @@ + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMinCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinCompPressureWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69814,47 +54895,20 @@ + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeMaxCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxCompPressureWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69883,47 +54937,20 @@ + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeMinConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinConstSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -69952,47 +54979,20 @@ + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMaxConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxConstSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70021,47 +55021,20 @@ + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinConstFlowWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70090,47 +55063,20 @@ + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMaxConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxConstFlowWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70159,47 +55105,20 @@ + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinConstTempWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70228,47 +55147,20 @@ + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMaxConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxConstTempWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70297,50 +55189,20 @@ + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributePumpStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePumpStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70371,16 +55233,11 @@ + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)
 - (void)readAttributeEffectiveOperationModeWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo;
-                chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -70388,37 +55245,10 @@ - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70449,15 +55279,11 @@ + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeEffectiveControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -70465,36 +55291,10 @@ - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70525,47 +55325,20 @@ + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCapacityWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70594,47 +55367,20 @@ + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70663,14 +55409,10 @@ + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeLifetimeRunningHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLifetimeRunningHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -70720,33 +55462,10 @@ - (void)subscribeAttributeLifetimeRunningHoursWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70776,47 +55495,20 @@ + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70846,14 +55538,10 @@ + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attri
 - (void)readAttributeLifetimeEnergyConsumedWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -70903,33 +55591,10 @@ - (void)subscribeAttributeLifetimeEnergyConsumedWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -70959,16 +55624,11 @@ + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo;
-                chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOperationModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -71012,37 +55672,10 @@ - (void)subscribeAttributeOperationModeWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71072,15 +55705,11 @@ + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeControlModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -71124,36 +55753,10 @@ - (void)subscribeAttributeControlModeWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71183,16 +55786,11 @@ + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo;
-                chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -71200,37 +55798,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71261,15 +55832,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -71277,36 +55844,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71337,51 +55878,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71411,47 +55922,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -71480,47 +55964,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::PumpConfigurationAndControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -72985,47 +57442,20 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa
 
 - (void)readAttributeLocalTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73054,14 +57484,10 @@ + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeOutdoorTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -73069,33 +57495,10 @@ - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73125,47 +57528,20 @@ + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73195,14 +57571,10 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
 - (void)readAttributeAbsMinHeatSetpointLimitWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -73210,33 +57582,10 @@ - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73267,14 +57616,10 @@ + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -73282,33 +57627,10 @@ - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73339,14 +57661,10 @@ + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeAbsMinCoolSetpointLimitWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -73354,33 +57672,10 @@ - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73411,14 +57706,10 @@ + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -73426,33 +57717,10 @@ - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73482,47 +57750,20 @@ + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributePICoolingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePICoolingDemandWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73551,47 +57792,20 @@ + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributePIHeatingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePIHeatingDemandWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73621,14 +57835,10 @@ + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContain
 - (void)readAttributeHVACSystemTypeConfigurationWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -73673,33 +57883,10 @@ - (void)subscribeAttributeHVACSystemTypeConfigurationWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73730,14 +57917,10 @@ + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttribute
 - (void)readAttributeLocalTemperatureCalibrationWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -73782,33 +57965,10 @@ - (void)subscribeAttributeLocalTemperatureCalibrationWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73839,14 +57999,10 @@ + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttribute
 - (void)readAttributeOccupiedCoolingSetpointWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -73891,33 +58047,10 @@ - (void)subscribeAttributeOccupiedCoolingSetpointWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -73948,14 +58081,10 @@ + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeOccupiedHeatingSetpointWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74000,33 +58129,10 @@ - (void)subscribeAttributeOccupiedHeatingSetpointWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74057,14 +58163,10 @@ + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeUnoccupiedCoolingSetpointWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74109,33 +58211,10 @@ - (void)subscribeAttributeUnoccupiedCoolingSetpointWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74166,14 +58245,10 @@ + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeUnoccupiedHeatingSetpointWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74218,33 +58293,10 @@ - (void)subscribeAttributeUnoccupiedHeatingSetpointWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74274,14 +58326,10 @@ + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCa
 
 - (void)readAttributeMinHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74326,33 +58374,10 @@ - (void)subscribeAttributeMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74382,14 +58407,10 @@ + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeMaxHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74434,33 +58455,10 @@ - (void)subscribeAttributeMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74490,14 +58488,10 @@ + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeMinCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74542,33 +58536,10 @@ - (void)subscribeAttributeMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74598,14 +58569,10 @@ + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeMaxCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74650,33 +58617,10 @@ - (void)subscribeAttributeMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74706,14 +58650,10 @@ + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeMinSetpointDeadBandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMinSetpointDeadBandWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74758,33 +58698,10 @@ - (void)subscribeAttributeMinSetpointDeadBandWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74814,14 +58731,10 @@ + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRemoteSensingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRemoteSensingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74865,33 +58778,10 @@ - (void)subscribeAttributeRemoteSensingWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -74921,15 +58811,11 @@ + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeControlSequenceOfOperationWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeControlSequenceOfOperationWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -74974,36 +58860,10 @@ - (void)subscribeAttributeControlSequenceOfOperationWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75034,14 +58894,10 @@ + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeC
 
 - (void)readAttributeSystemModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSystemModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -75085,33 +58941,10 @@ - (void)subscribeAttributeSystemModeWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75140,14 +58973,10 @@ + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeThermostatRunningModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75155,33 +58984,10 @@ - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75211,47 +59017,20 @@ + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeStartOfWeekWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStartOfWeekWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75281,14 +59060,10 @@ + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *
 - (void)readAttributeNumberOfWeeklyTransitionsWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75296,33 +59071,10 @@ - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75353,14 +59105,10 @@ + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeNumberOfDailyTransitionsWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75368,33 +59116,10 @@ - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75425,14 +59150,10 @@ + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCac
 - (void)readAttributeTemperatureSetpointHoldWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -75477,33 +59198,10 @@ - (void)subscribeAttributeTemperatureSetpointHoldWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75534,14 +59232,10 @@ + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCach
 - (void)readAttributeTemperatureSetpointHoldDurationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSNumber * _Nullable)value
@@ -75593,33 +59287,10 @@ - (void)subscribeAttributeTemperatureSetpointHoldDurationWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75650,14 +59321,10 @@ + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttri
 - (void)readAttributeThermostatProgrammingOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSNumber * _Nonnull)value
@@ -75704,33 +59371,10 @@ - (void)subscribeAttributeThermostatProgrammingOperationModeWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75761,14 +59405,10 @@ + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAt
 - (void)readAttributeThermostatRunningStateWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75776,33 +59416,10 @@ - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75832,14 +59449,10 @@ + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeSetpointChangeSourceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75847,33 +59460,10 @@ - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75903,14 +59493,10 @@ + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeSetpointChangeAmountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75918,33 +59504,10 @@ - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -75975,14 +59538,10 @@ + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheCo
 - (void)readAttributeSetpointChangeSourceTimestampWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -75991,33 +59550,10 @@ - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76047,14 +59583,10 @@ + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeOccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOccupiedSetbackWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -76103,33 +59635,10 @@ - (void)subscribeAttributeOccupiedSetbackWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76158,14 +59667,10 @@ + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeOccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -76173,33 +59678,10 @@ - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76229,14 +59711,10 @@ + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeOccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -76244,33 +59722,10 @@ - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76300,14 +59755,10 @@ + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeUnoccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUnoccupiedSetbackWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -76356,33 +59807,10 @@ - (void)subscribeAttributeUnoccupiedSetbackWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76411,14 +59839,10 @@ + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeUnoccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -76426,33 +59850,10 @@ - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76482,14 +59883,10 @@ + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeUnoccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -76497,33 +59894,10 @@ - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76553,14 +59927,10 @@ + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeEmergencyHeatDeltaWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -76605,33 +59975,10 @@ - (void)subscribeAttributeEmergencyHeatDeltaWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76661,14 +60008,10 @@ + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeACTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACType::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -76712,33 +60055,10 @@ - (void)subscribeAttributeACTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACType::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76767,14 +60087,10 @@ + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeACCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACCapacityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -76818,33 +60134,10 @@ - (void)subscribeAttributeACCapacityWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76873,14 +60166,10 @@ + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeACRefrigerantTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACRefrigerantTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -76924,33 +60213,10 @@ - (void)subscribeAttributeACRefrigerantTypeWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -76979,14 +60245,10 @@ + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeACCompressorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACCompressorTypeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -77030,33 +60292,10 @@ - (void)subscribeAttributeACCompressorTypeWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77085,14 +60324,10 @@ + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeACErrorCodeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACErrorCodeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -77136,33 +60371,10 @@ - (void)subscribeAttributeACErrorCodeWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77191,14 +60403,10 @@ + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeACLouverPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACLouverPositionWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -77242,33 +60450,10 @@ - (void)subscribeAttributeACLouverPositionWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77297,47 +60482,20 @@ + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeACCoilTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeACCoilTemperatureWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77366,14 +60524,10 @@ + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeACCapacityformatWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeACCapacityformatWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -77417,33 +60571,10 @@ - (void)subscribeAttributeACCapacityformatWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77472,15 +60603,10 @@ + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -77488,35 +60614,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77547,15 +60648,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -77563,35 +60659,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77622,48 +60693,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRThermostatAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ThermostatAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ThermostatAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77692,47 +60735,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -77761,47 +60777,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -80574,14 +63563,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeFanModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlClusterFanModeTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::FanMode::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::FanMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeFanModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -80625,34 +63610,10 @@ - (void)subscribeAttributeFanModeWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlClusterFanModeTypeAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::FanMode::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::FanMode::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -80681,15 +63642,10 @@ + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeFanModeSequenceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeFanModeSequenceWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -80733,35 +63689,10 @@ - (void)subscribeAttributeFanModeSequenceWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -80791,14 +63722,10 @@ + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributePercentSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePercentSettingWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -80847,33 +63774,10 @@ - (void)subscribeAttributePercentSettingWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -80902,47 +63806,20 @@ + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributePercentCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePercentCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -80971,47 +63848,20 @@ + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeSpeedMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSpeedMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81040,14 +63890,10 @@ + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeSpeedSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSpeedSettingWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -81096,33 +63942,10 @@ - (void)subscribeAttributeSpeedSettingWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81151,47 +63974,20 @@ + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSpeedCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81220,47 +64016,20 @@ + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRockSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRockSupportWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81289,14 +64058,10 @@ + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeRockSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRockSettingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -81340,33 +64105,10 @@ - (void)subscribeAttributeRockSettingWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81395,47 +64137,20 @@ + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeWindSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeWindSupportWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81464,14 +64179,10 @@ + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeWindSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeWindSettingWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -81515,33 +64226,10 @@ - (void)subscribeAttributeWindSettingWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81570,15 +64258,10 @@ + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -81586,35 +64269,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81645,15 +64303,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -81661,35 +64314,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81720,48 +64348,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFanControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FanControlAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81790,47 +64390,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -81859,47 +64432,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::FanControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -82707,14 +65253,10 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 - (void)readAttributeTemperatureDisplayModeWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo;
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeTemperatureDisplayModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -82759,33 +65301,10 @@ - (void)subscribeAttributeTemperatureDisplayModeWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -82815,14 +65334,10 @@ + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeKeypadLockoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo;
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeKeypadLockoutWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -82866,33 +65381,10 @@ - (void)subscribeAttributeKeypadLockoutWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -82922,14 +65414,10 @@ + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeScheduleProgrammingVisibilityWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo;
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -82975,33 +65463,10 @@ - (void)subscribeAttributeScheduleProgrammingVisibilityWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -83031,16 +65496,11 @@ + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-                chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -83048,38 +65508,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(
-                    bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device,
+        self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -83110,16 +65542,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-                chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -83127,38 +65554,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(
-                    bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device,
+        self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -83189,54 +65588,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo;
-                chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(
-                    bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -83266,47 +65632,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -83335,47 +65674,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ThermostatUserInterfaceConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84410,47 +66722,20 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu
 
 - (void)readAttributeCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84479,47 +66764,20 @@ + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeCurrentSaturationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentSaturationWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84548,47 +66806,20 @@ + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84617,47 +66848,20 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeCurrentXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentXWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84686,47 +66890,20 @@ + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeCurrentYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentYWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84755,47 +66932,20 @@ + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeDriftCompensationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDriftCompensationWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84824,47 +66974,20 @@ + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeCompensationTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCompensationTextWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84894,14 +67017,10 @@ + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContai
 - (void)readAttributeColorTemperatureMiredsWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -84909,33 +67028,10 @@ - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -84965,47 +67061,20 @@ + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorModeWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85034,14 +67103,10 @@ + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -85085,33 +67150,10 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85140,47 +67182,20 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeNumberOfPrimariesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNumberOfPrimariesWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85209,47 +67224,20 @@ + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary1XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary1XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85278,47 +67266,20 @@ + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary1YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary1YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85347,47 +67308,20 @@ + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary1IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary1IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85416,47 +67350,20 @@ + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary2XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary2XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85485,47 +67392,20 @@ + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary2YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary2YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85554,47 +67434,20 @@ + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary2IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary2IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85623,47 +67476,20 @@ + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary3XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary3XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85692,47 +67518,20 @@ + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary3YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary3YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85761,47 +67560,20 @@ + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary3IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary3IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85830,47 +67602,20 @@ + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary4XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary4XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85899,47 +67644,20 @@ + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary4YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary4YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -85968,47 +67686,20 @@ + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary4IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary4IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86037,47 +67728,20 @@ + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary5XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary5XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86106,47 +67770,20 @@ + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary5YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary5YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86175,47 +67812,20 @@ + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary5IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary5IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86244,47 +67854,20 @@ + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributePrimary6XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary6XWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86313,47 +67896,20 @@ + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary6YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary6YWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86382,47 +67938,20 @@ + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributePrimary6IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePrimary6IntensityWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86451,14 +67980,10 @@ + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeWhitePointXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeWhitePointXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -86502,33 +68027,10 @@ - (void)subscribeAttributeWhitePointXWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86557,14 +68059,10 @@ + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeWhitePointYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeWhitePointYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -86608,33 +68106,10 @@ - (void)subscribeAttributeWhitePointYWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86663,14 +68138,10 @@ + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeColorPointRXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointRXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -86714,33 +68185,10 @@ - (void)subscribeAttributeColorPointRXWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86769,14 +68217,10 @@ + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointRYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointRYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -86820,33 +68264,10 @@ - (void)subscribeAttributeColorPointRYWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86875,14 +68296,10 @@ + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointRIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointRIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -86932,33 +68349,10 @@ - (void)subscribeAttributeColorPointRIntensityWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -86988,14 +68382,10 @@ + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeColorPointGXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointGXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -87039,33 +68429,10 @@ - (void)subscribeAttributeColorPointGXWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87094,14 +68461,10 @@ + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointGYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointGYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -87145,33 +68508,10 @@ - (void)subscribeAttributeColorPointGYWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87200,14 +68540,10 @@ + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointGIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointGIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -87257,33 +68593,10 @@ - (void)subscribeAttributeColorPointGIntensityWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87313,14 +68626,10 @@ + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeColorPointBXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointBXWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -87364,33 +68673,10 @@ - (void)subscribeAttributeColorPointBXWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87419,14 +68705,10 @@ + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointBYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointBYWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -87470,33 +68752,10 @@ - (void)subscribeAttributeColorPointBYWithParams:(MTRSubscribeParams * _Nonnull)
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87525,14 +68784,10 @@ + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeColorPointBIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeColorPointBIntensityWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -87582,33 +68837,10 @@ - (void)subscribeAttributeColorPointBIntensityWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87638,14 +68870,10 @@ + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeEnhancedCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -87653,33 +68881,10 @@ - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87709,47 +68914,20 @@ + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeEnhancedColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeEnhancedColorModeWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87778,47 +68956,20 @@ + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeColorLoopActiveWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorLoopActiveWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87847,14 +68998,10 @@ + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeColorLoopDirectionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -87862,33 +69009,10 @@ - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87918,47 +69042,20 @@ + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeColorLoopTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorLoopTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -87988,14 +69085,10 @@ + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeColorLoopStartEnhancedHueWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88003,33 +69096,10 @@ - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88060,14 +69130,10 @@ + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeColorLoopStoredEnhancedHueWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88075,33 +69141,10 @@ - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88131,47 +69174,20 @@ + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeC
 
 - (void)readAttributeColorCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorCapabilitiesWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88201,14 +69217,10 @@ + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeColorTempPhysicalMinMiredsWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88216,33 +69228,10 @@ - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88273,14 +69262,10 @@ + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeC
 - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88288,33 +69273,10 @@ - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88345,14 +69307,10 @@ + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeC
 - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88361,33 +69319,10 @@ - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88418,14 +69353,10 @@ + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttri
 - (void)readAttributeStartUpColorTemperatureMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -88476,33 +69407,10 @@ - (void)subscribeAttributeStartUpColorTemperatureMiredsWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88532,15 +69440,10 @@ + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88548,35 +69451,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88607,15 +69485,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -88623,35 +69496,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88682,48 +69530,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRColorControlAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88752,47 +69572,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -88821,47 +69614,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -91628,47 +72394,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributePhysicalMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePhysicalMinLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -91697,47 +72436,20 @@ + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributePhysicalMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePhysicalMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -91766,47 +72478,20 @@ + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeBallastStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeBallastStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -91835,14 +72520,10 @@ + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMinLevelWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -91886,33 +72567,10 @@ - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -91941,14 +72599,10 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeMaxLevelWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -91992,33 +72646,10 @@ - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92048,14 +72679,10 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeIntrinsicBalanceFactorWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -92105,33 +72732,10 @@ - (void)subscribeAttributeIntrinsicBalanceFactorWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92162,14 +72766,10 @@ + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCache
 - (void)readAttributeBallastFactorAdjustmentWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -92219,33 +72819,10 @@ - (void)subscribeAttributeBallastFactorAdjustmentWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92275,47 +72852,20 @@ + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeLampQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLampQuantityWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92344,14 +72894,10 @@ + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeLampTypeWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampTypeWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -92395,33 +72941,10 @@ - (void)subscribeAttributeLampTypeWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92450,14 +72973,10 @@ + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeLampManufacturerWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampManufacturerWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -92501,33 +73020,10 @@ - (void)subscribeAttributeLampManufacturerWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92556,14 +73052,10 @@ + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeLampRatedHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampRatedHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -92612,33 +73104,10 @@ - (void)subscribeAttributeLampRatedHoursWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92667,14 +73136,10 @@ + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeLampBurnHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampBurnHoursWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -92723,33 +73188,10 @@ - (void)subscribeAttributeLampBurnHoursWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92778,14 +73220,10 @@ + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeLampAlarmModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampAlarmModeWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -92829,33 +73267,10 @@ - (void)subscribeAttributeLampAlarmModeWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92885,14 +73300,10 @@ + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeLampBurnHoursTripPointWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -92942,33 +73353,10 @@ - (void)subscribeAttributeLampBurnHoursTripPointWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -92998,15 +73386,11 @@ + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -93014,36 +73398,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -93074,15 +73432,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -93090,36 +73444,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -93150,50 +73478,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -93223,47 +73521,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -93292,47 +73563,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::BallastConfigurationCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94321,47 +74565,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94390,47 +74607,20 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94459,47 +74649,20 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94528,47 +74691,20 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94597,47 +74733,20 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeLightSensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLightSensorTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94666,15 +74775,11 @@ + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -94682,36 +74787,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94742,15 +74821,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -94758,36 +74833,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94818,51 +74867,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94892,47 +74910,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -94961,47 +74952,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::IlluminanceMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95493,47 +75457,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95562,47 +75499,20 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95631,47 +75541,20 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95700,47 +75583,20 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95769,15 +75625,11 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -95785,36 +75637,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95845,15 +75671,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -95861,36 +75683,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95921,51 +75717,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -95995,47 +75760,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96064,47 +75802,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::TemperatureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96552,47 +76263,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96621,47 +76305,20 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96690,47 +76347,20 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96759,47 +76389,20 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96828,47 +76431,20 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96897,47 +76473,20 @@ + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeMinScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -96966,47 +76515,20 @@ + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeMaxScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxScaledValueWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97035,47 +76557,20 @@ + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeScaledToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeScaledToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97104,47 +76599,20 @@ + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeScaleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeScaleWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97173,15 +76641,11 @@ + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -97189,36 +76653,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97249,15 +76687,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -97265,36 +76698,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97325,50 +76732,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97398,47 +76775,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -97467,47 +76817,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::PressureMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98171,47 +77494,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98240,47 +77536,20 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98309,47 +77578,20 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98378,47 +77620,20 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98447,15 +77662,10 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -98463,36 +77673,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98523,15 +77707,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -98539,36 +77718,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98599,50 +77752,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98672,47 +77795,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -98741,47 +77837,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::FlowMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99229,47 +78298,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99298,47 +78340,20 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99367,47 +78382,20 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99436,47 +78424,20 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99505,16 +78466,11 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge
-        = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-                MTRCallbackBridgeBase * bridge) {
-                using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-                chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-                return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-            });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -99522,37 +78478,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::
-                    OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99583,15 +78512,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -99599,36 +78524,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99659,51 +78558,21 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99733,47 +78602,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -99802,47 +78644,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::RelativeHumidityMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100290,47 +79105,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100359,14 +79147,10 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeOccupancySensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -100374,33 +79158,10 @@ - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100431,14 +79192,10 @@ + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheCon
 - (void)readAttributeOccupancySensorTypeBitmapWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -100446,33 +79203,10 @@ - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100503,14 +79237,10 @@ + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCa
 - (void)readAttributePirOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -100556,33 +79286,10 @@ - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100613,14 +79320,10 @@ + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttribut
 - (void)readAttributePirUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -100666,33 +79369,10 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100723,14 +79403,10 @@ + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttribut
 - (void)readAttributePirUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
@@ -100777,33 +79453,10 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRSubscri
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100834,14 +79487,10 @@ + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttr
 - (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
@@ -100888,33 +79537,10 @@ - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRSubs
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -100945,14 +79571,10 @@ + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRA
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
@@ -100999,33 +79621,10 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRSubs
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101056,14 +79655,10 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRA
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
@@ -101112,33 +79707,10 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTR
                                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101169,14 +79741,10 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(
 - (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSNumber * _Nonnull)value
@@ -101225,33 +79793,10 @@ - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
@@ -101283,14 +79828,10 @@ + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSNumber * _Nonnull)value
@@ -101339,33 +79880,10 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
@@ -101397,14 +79915,10 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSNumber * _Nonnull)value
@@ -101453,33 +79967,10 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams
                                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:
@@ -101510,15 +80001,10 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCa
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -101526,36 +80012,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101586,15 +80046,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -101602,36 +80057,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101662,50 +80091,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101735,47 +80134,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -101804,47 +80176,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::OccupancySensingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -102777,47 +81122,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeMACAddressWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMACAddressWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -102846,15 +81164,10 @@ + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -102862,35 +81175,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -102921,15 +81209,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -102937,35 +81220,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -102996,48 +81254,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WakeOnLanAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, WakeOnLanAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103066,47 +81296,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103135,47 +81338,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::WakeOnLanCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103572,47 +81748,20 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params compl
 
 - (void)readAttributeChannelListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelChannelListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelChannelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::ChannelList::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::ChannelList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeChannelListWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelChannelListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelChannelListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::ChannelList::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelChannelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::ChannelList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103642,14 +81791,10 @@ + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *
 - (void)readAttributeLineupWithCompletion:(void (^)(
                                               MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelLineupStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelLineupStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::Lineup::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::Lineup::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -103657,33 +81802,10 @@ - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams * _Nonnull)params
                              reportHandler:
                                  (void (^)(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelLineupStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelLineupStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::Lineup::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelLineupStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::Lineup::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103714,14 +81836,11 @@ + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attr
 - (void)readAttributeCurrentChannelWithCompletion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelCurrentChannelStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -103729,34 +81848,10 @@ - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams * _Nonnul
                                      reportHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                        NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelCurrentChannelStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103786,15 +81881,10 @@ + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -103802,35 +81892,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103861,14 +81926,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -103876,34 +81937,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -103934,48 +81971,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRChannelAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRChannelAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, ChannelAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRChannelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104004,47 +82013,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104073,47 +82055,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104568,48 +82523,20 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
 
 - (void)readAttributeTargetListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTargetListWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104638,47 +82565,20 @@ + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeCurrentTargetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentTargetWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104707,15 +82607,10 @@ + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -104723,36 +82618,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104783,15 +82652,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -104799,36 +82663,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104859,50 +82697,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -104932,47 +82740,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -105001,47 +82782,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -105731,50 +83485,20 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
 
 - (void)readAttributeCurrentStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentStateWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -105804,47 +83528,20 @@ + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeStartTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStartTimeWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -105873,47 +83570,20 @@ + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeDurationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDurationWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -105943,15 +83613,11 @@ + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeSampledPositionWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -105959,35 +83625,10 @@ - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams * _Nonnu
                                       reportHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler,
+        self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106018,47 +83659,20 @@ + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributePlaybackSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFloatAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePlaybackSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFloatAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106087,47 +83701,20 @@ + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSeekRangeEndWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSeekRangeEndWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106156,47 +83743,20 @@ + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeSeekRangeStartWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeSeekRangeStartWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106225,15 +83785,10 @@ + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -106241,35 +83796,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106300,15 +83830,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -106316,35 +83841,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106375,48 +83875,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106446,47 +83918,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -106515,47 +83960,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107403,48 +84821,20 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params co
 
 - (void)readAttributeInputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaInputInputListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputInputListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::InputList::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::InputList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInputListWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaInputInputListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputInputListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::InputList::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaInputInputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::InputList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107473,47 +84863,20 @@ + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeCurrentInputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentInputWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107542,15 +84905,10 @@ + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -107558,35 +84916,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107617,15 +84950,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -107633,35 +84961,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107692,48 +84995,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, MediaInputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107762,47 +85037,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -107831,47 +85079,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108289,15 +85510,10 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params comple
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -108305,35 +85521,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108364,15 +85555,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -108380,35 +85566,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108439,48 +85600,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, LowPowerAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo;
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, LowPowerAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108509,47 +85642,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108578,47 +85684,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -108926,15 +86005,10 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -108942,35 +86016,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109001,15 +86050,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -109017,35 +86061,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109076,48 +86095,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo;
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109146,47 +86137,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109215,47 +86179,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109746,50 +86683,20 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
 
 - (void)readAttributeAcceptHeaderWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptHeaderWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109820,14 +86727,10 @@ + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeSupportedStreamingProtocolsWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -109872,33 +86775,10 @@ - (void)subscribeAttributeSupportedStreamingProtocolsWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -109928,15 +86808,10 @@ + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttribute
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -109944,36 +86819,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110004,15 +86853,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -110020,36 +86864,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110080,50 +86898,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110153,47 +86941,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110222,47 +86983,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110711,48 +87445,20 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params
 
 - (void)readAttributeOutputListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputOutputListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeOutputListWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputOutputListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110781,47 +87487,20 @@ + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeCurrentOutputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentOutputWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110850,15 +87529,10 @@ + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -110866,35 +87540,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -110925,15 +87574,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -110941,35 +87585,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111000,48 +87619,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, AudioOutputAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111070,47 +87661,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111139,47 +87703,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111635,50 +88172,20 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
 
 - (void)readAttributeCatalogListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCatalogListWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111709,15 +88216,11 @@ + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *
 - (void)readAttributeCurrentAppWithCompletion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
                                                   NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeCurrentAppWithValue:(MTRApplicationLauncherClusterApplicationEP * _Nullable)value
@@ -111775,35 +88278,10 @@ - (void)subscribeAttributeCurrentAppWithParams:(MTRSubscribeParams * _Nonnull)pa
                                  reportHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
                                                    NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler,
+        self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111834,15 +88312,11 @@ + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -111850,36 +88324,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111910,15 +88358,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -111926,36 +88369,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -111986,50 +88403,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112059,47 +88446,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112128,47 +88488,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112574,47 +88907,20 @@ - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)en
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112643,47 +88949,20 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)params
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112712,47 +88991,20 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeApplicationNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApplicationNameWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112781,47 +89033,20 @@ + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112851,15 +89076,11 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
 - (void)readAttributeApplicationWithCompletion:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                                    NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -112867,35 +89088,10 @@ - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams * _Nonnull)p
                                   reportHandler:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                                     NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished,
+        reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -112927,51 +89123,21 @@ + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113001,14 +89167,10 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeApplicationVersionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -113016,33 +89178,10 @@ - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113072,50 +89211,20 @@ + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeAllowedVendorListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAllowedVendorListWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113145,15 +89254,10 @@ + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -113161,36 +89265,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113221,15 +89299,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -113237,36 +89310,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113297,50 +89344,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113370,47 +89387,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -113439,47 +89429,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ApplicationBasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114198,15 +90161,10 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -114214,35 +90172,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114273,15 +90206,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -114289,35 +90217,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114348,48 +90251,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo;
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114418,47 +90293,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114487,47 +90335,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114886,47 +90707,20 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
 
 - (void)readAttributeMeasurementTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasurementTypeWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -114955,47 +90749,20 @@ + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeDcVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115024,47 +90791,20 @@ + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeDcVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcVoltageMinWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115093,47 +90833,20 @@ + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeDcVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115162,47 +90875,20 @@ + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeDcCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115231,47 +90917,20 @@ + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeDcCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcCurrentMinWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115300,47 +90959,20 @@ + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeDcCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115369,47 +91001,20 @@ + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeDcPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcPowerWithParams:(MTRSubscribeParams * _Nonnull)params
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115438,47 +91043,20 @@ + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeDcPowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcPowerMinWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115507,47 +91085,20 @@ + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeDcPowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcPowerMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115576,14 +91127,10 @@ + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeDcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -115591,33 +91138,10 @@ - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115647,47 +91171,20 @@ + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeDcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115716,14 +91213,10 @@ + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeDcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -115731,33 +91224,10 @@ - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115787,47 +91257,20 @@ + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeDcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115856,47 +91299,20 @@ + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeDcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcPowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115925,47 +91341,20 @@ + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeDcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeDcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -115994,47 +91383,20 @@ + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeAcFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcFrequencyWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116063,47 +91425,20 @@ + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeAcFrequencyMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcFrequencyMinWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116132,47 +91467,20 @@ + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeAcFrequencyMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcFrequencyMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116201,47 +91509,20 @@ + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNeutralCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeNeutralCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116270,47 +91551,20 @@ + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeTotalActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTotalActivePowerWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116339,14 +91593,10 @@ + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeTotalReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116354,33 +91604,10 @@ - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116410,14 +91637,10 @@ + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeTotalApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116425,33 +91648,10 @@ - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116482,14 +91682,10 @@ + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheCont
 - (void)readAttributeMeasured1stHarmonicCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116497,33 +91693,10 @@ - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116554,14 +91727,10 @@ + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116569,33 +91738,10 @@ - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116626,14 +91772,10 @@ + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeMeasured5thHarmonicCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116641,33 +91783,10 @@ - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116698,14 +91817,10 @@ + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeMeasured7thHarmonicCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116713,33 +91828,10 @@ - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116770,14 +91862,10 @@ + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeMeasured9thHarmonicCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116785,33 +91873,10 @@ - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116842,14 +91907,10 @@ + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeMeasured11thHarmonicCurrentWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116857,33 +91918,10 @@ - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116914,14 +91952,10 @@ + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttribute
 - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -116930,33 +91964,10 @@ - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -116987,14 +91998,10 @@ + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttri
 - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117003,33 +92010,10 @@ - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117060,14 +92044,10 @@ + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttri
 - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117076,33 +92056,10 @@ - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117133,14 +92090,10 @@ + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttri
 - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117149,33 +92102,10 @@ - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117206,14 +92136,10 @@ + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttri
 - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117222,33 +92148,10 @@ - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117279,14 +92182,10 @@ + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttri
 - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117295,33 +92194,10 @@ - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscri
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117351,14 +92227,10 @@ + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttr
 
 - (void)readAttributeAcFrequencyMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117366,33 +92238,10 @@ - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117422,14 +92271,10 @@ + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeAcFrequencyDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117437,33 +92282,10 @@ - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117493,47 +92315,20 @@ + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributePowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117562,47 +92357,20 @@ + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributePowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117632,14 +92400,10 @@ + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer
 - (void)readAttributeHarmonicCurrentMultiplierWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117647,33 +92411,10 @@ - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117704,14 +92445,10 @@ + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCa
 - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117720,33 +92457,10 @@ - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribe
                                                      reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117776,14 +92490,10 @@ + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttrib
 
 - (void)readAttributeInstantaneousVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117791,33 +92501,10 @@ - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117848,14 +92535,10 @@ + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheCo
 - (void)readAttributeInstantaneousLineCurrentWithCompletion:(void (^)(
                                                                 NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117863,33 +92546,10 @@ - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams
                                                reportHandler:
                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117920,14 +92580,10 @@ + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCac
 - (void)readAttributeInstantaneousActiveCurrentWithCompletion:(void (^)(
                                                                   NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -117935,33 +92591,10 @@ - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribePara
                                                  reportHandler:
                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -117992,14 +92625,10 @@ + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeC
 - (void)readAttributeInstantaneousReactiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -118008,33 +92637,10 @@ - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118064,14 +92670,10 @@ + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttribut
 
 - (void)readAttributeInstantaneousPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -118079,33 +92681,10 @@ - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118135,47 +92714,20 @@ + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeRmsVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118204,47 +92756,20 @@ + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeRmsVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMinWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118273,47 +92798,20 @@ + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRmsVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118342,47 +92840,20 @@ + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRmsCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118411,47 +92882,20 @@ + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeRmsCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMinWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118480,47 +92924,20 @@ + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRmsCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118549,47 +92966,20 @@ + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118618,47 +93008,20 @@ + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeActivePowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMinWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118687,47 +93050,20 @@ + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeActivePowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMaxWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118756,47 +93092,20 @@ + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReactivePowerWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118825,47 +93134,20 @@ + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApparentPowerWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118894,47 +93176,20 @@ + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributePowerFactorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerFactorWithParams:(MTRSubscribeParams * _Nonnull)params
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -118964,14 +93219,10 @@ + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSNumber * _Nonnull)value
@@ -119018,33 +93269,10 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119075,14 +93303,10 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAt
 - (void)readAttributeAverageRmsUnderVoltageCounterWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -119128,33 +93352,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119185,14 +93386,10 @@ + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttribu
 - (void)readAttributeRmsExtremeOverVoltagePeriodWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -119237,33 +93434,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119294,14 +93468,10 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttribute
 - (void)readAttributeRmsExtremeUnderVoltagePeriodWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -119347,33 +93517,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119403,14 +93550,10 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttribut
 
 - (void)readAttributeRmsVoltageSagPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -119455,33 +93598,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119511,14 +93631,10 @@ + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsVoltageSwellPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -119563,33 +93679,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119619,14 +93712,10 @@ + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeAcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -119634,33 +93723,10 @@ - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119690,47 +93756,20 @@ + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119759,14 +93798,10 @@ + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeAcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -119774,33 +93809,10 @@ - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119830,47 +93842,20 @@ + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119899,47 +93884,20 @@ + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeAcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcPowerMultiplierWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -119968,47 +93926,20 @@ + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeAcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120037,14 +93968,10 @@ + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -120089,33 +94016,10 @@ - (void)subscribeAttributeOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120145,47 +94049,20 @@ + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120214,47 +94091,20 @@ + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120283,14 +94133,10 @@ + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeAcOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -120335,33 +94181,10 @@ - (void)subscribeAttributeAcOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120391,47 +94214,20 @@ + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120460,47 +94256,20 @@ + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeAcCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120529,14 +94298,10 @@ + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeAcActivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120544,33 +94309,10 @@ - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120601,14 +94343,10 @@ + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheC
 - (void)readAttributeAcReactivePowerOverloadWithCompletion:(void (^)(
                                                                NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120616,33 +94354,10 @@ - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams
                                               reportHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120672,14 +94387,10 @@ + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCach
 
 - (void)readAttributeAverageRmsOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120687,33 +94398,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120744,14 +94432,10 @@ + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheC
 - (void)readAttributeAverageRmsUnderVoltageWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120759,33 +94443,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120815,14 +94476,10 @@ + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeRmsExtremeOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120830,33 +94487,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120887,14 +94521,10 @@ + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheC
 - (void)readAttributeRmsExtremeUnderVoltageWithCompletion:(void (^)(
                                                               NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -120902,33 +94532,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams *
                                              reportHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -120958,47 +94565,20 @@ + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCache
 
 - (void)readAttributeRmsVoltageSagWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSagWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121027,47 +94607,20 @@ + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeRmsVoltageSwellWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSwellWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121096,47 +94649,20 @@ + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeLineCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLineCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121165,14 +94691,10 @@ + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeActiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121180,33 +94702,10 @@ - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121236,14 +94735,10 @@ + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeReactiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121251,33 +94746,10 @@ - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121307,47 +94779,20 @@ + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeRmsVoltagePhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltagePhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121376,14 +94821,10 @@ + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeRmsVoltageMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121391,33 +94832,10 @@ - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121447,14 +94865,10 @@ + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsVoltageMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121462,33 +94876,10 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121518,47 +94909,20 @@ + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121587,14 +94951,10 @@ + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeRmsCurrentMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121602,33 +94962,10 @@ - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121658,14 +94995,10 @@ + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsCurrentMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121673,33 +95006,10 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121729,47 +95039,20 @@ + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeActivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121798,14 +95081,10 @@ + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeActivePowerMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121813,33 +95092,10 @@ - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121869,14 +95125,10 @@ + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeActivePowerMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121884,33 +95136,10 @@ - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -121940,14 +95169,10 @@ + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeReactivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -121955,33 +95180,10 @@ - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122011,14 +95213,10 @@ + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeApparentPowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122026,33 +95224,10 @@ - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122082,47 +95257,20 @@ + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributePowerFactorPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerFactorPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122152,14 +95300,10 @@ + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122168,33 +95312,10 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
@@ -122226,14 +95347,10 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122242,33 +95359,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122299,14 +95393,10 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAt
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122315,33 +95405,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubs
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122372,14 +95439,10 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRA
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122388,33 +95451,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscr
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122445,14 +95485,10 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAtt
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122461,33 +95497,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122518,14 +95531,10 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAt
 - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122533,33 +95542,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122590,14 +95576,10 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122605,33 +95587,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122661,47 +95620,20 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttribute
 
 - (void)readAttributeLineCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeLineCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122730,14 +95662,10 @@ + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeActiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122745,33 +95673,10 @@ - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122801,14 +95706,10 @@ + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeReactiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122816,33 +95717,10 @@ - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122872,47 +95750,20 @@ + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeRmsVoltagePhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltagePhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -122941,14 +95792,10 @@ + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeRmsVoltageMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -122956,33 +95803,10 @@ - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123012,14 +95836,10 @@ + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsVoltageMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123027,33 +95847,10 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123083,47 +95880,20 @@ + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123152,14 +95922,10 @@ + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeRmsCurrentMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123167,33 +95933,10 @@ - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123223,14 +95966,10 @@ + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeRmsCurrentMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123238,33 +95977,10 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123294,47 +96010,20 @@ + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeActivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123363,14 +96052,10 @@ + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeActivePowerMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123378,33 +96063,10 @@ - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123434,14 +96096,10 @@ + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeActivePowerMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123449,33 +96107,10 @@ - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123505,14 +96140,10 @@ + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeReactivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123520,33 +96151,10 @@ - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123576,14 +96184,10 @@ + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeApparentPowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123591,33 +96195,10 @@ - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123647,47 +96228,20 @@ + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributePowerFactorPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributePowerFactorPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123717,14 +96271,10 @@ + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheConta
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123733,33 +96283,10 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MT
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
@@ -123791,14 +96318,10 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123807,33 +96330,10 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123864,14 +96364,10 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAt
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123880,33 +96376,10 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubs
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -123937,14 +96410,10 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRA
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -123953,33 +96422,10 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscr
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124010,14 +96456,10 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAtt
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -124026,33 +96468,10 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubsc
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124083,14 +96502,10 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAt
 - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:(void (^)(
                                                                  NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -124098,33 +96513,10 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParam
                                                 reportHandler:
                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124155,14 +96547,10 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCa
 - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:(void (^)(
                                                                    NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -124170,33 +96558,10 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribePar
                                                   reportHandler:
                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124226,15 +96591,11 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttribute
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -124242,36 +96603,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124302,15 +96637,11 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -124318,36 +96649,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124378,51 +96683,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124452,47 +96726,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -124521,47 +96768,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -131979,14 +104199,10 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
 
 - (void)readAttributeBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132030,33 +104246,10 @@ - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132085,14 +104278,10 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap8AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBitmap8WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132136,33 +104325,10 @@ - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap8AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132191,14 +104357,10 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap16AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBitmap16WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132242,33 +104404,10 @@ - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap16AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132297,14 +104436,10 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap32AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBitmap32WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132348,33 +104483,10 @@ - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap32AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132403,14 +104515,10 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap64AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeBitmap64WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132454,33 +104562,10 @@ - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingBitmap64AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132509,14 +104594,10 @@ + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)at
 
 - (void)readAttributeInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132560,33 +104641,10 @@ - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132615,14 +104673,10 @@ + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt16uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132666,33 +104720,10 @@ - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132721,14 +104752,10 @@ + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt24uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132772,33 +104799,10 @@ - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132827,14 +104831,10 @@ + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt32uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132878,33 +104878,10 @@ - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -132933,14 +104910,10 @@ + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt40uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -132984,33 +104957,10 @@ - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133039,14 +104989,10 @@ + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt48uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133090,33 +105036,10 @@ - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133145,14 +105068,10 @@ + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt56uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133196,33 +105115,10 @@ - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133251,14 +105147,10 @@ + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt64uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133302,33 +105194,10 @@ - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133357,14 +105226,10 @@ + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt8sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133408,33 +105273,10 @@ - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133463,14 +105305,10 @@ + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt16sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133514,33 +105352,10 @@ - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133569,14 +105384,10 @@ + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt24sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133620,33 +105431,10 @@ - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133675,14 +105463,10 @@ + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt32sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133726,33 +105510,10 @@ - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133781,14 +105542,10 @@ + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt40sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133832,33 +105589,10 @@ - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133887,14 +105621,10 @@ + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt48sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -133938,33 +105668,10 @@ - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -133993,14 +105700,10 @@ + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt56sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134044,33 +105747,10 @@ - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134099,14 +105779,10 @@ + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeInt64sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134150,33 +105826,10 @@ - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134205,14 +105858,10 @@ + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnum8WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134256,33 +105905,10 @@ - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams * _Nonnull)params
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134311,14 +105937,10 @@ + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attri
 
 - (void)readAttributeEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnum16WithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134362,33 +105984,10 @@ - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134417,14 +106016,10 @@ + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRFloatAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeFloatSingleWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134468,33 +106063,10 @@ - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRFloatAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, FloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134523,14 +106095,10 @@ + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRDoubleAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoubleAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeFloatDoubleWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134574,33 +106142,10 @@ - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRDoubleAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoubleAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134629,14 +106174,10 @@ + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeOctetStringWithValue:(NSData * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134680,33 +106221,10 @@ - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134735,14 +106253,10 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeListInt8uWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingListInt8uListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListInt8uWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134807,34 +106321,10 @@ - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams * _Nonnull)par
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingListInt8uListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134863,14 +106353,10 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a
 
 - (void)readAttributeListOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -134935,34 +106421,10 @@ - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -134992,15 +106454,10 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeListStructOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListStructOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135067,35 +106524,10 @@ - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135126,14 +106558,10 @@ + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeLongOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTROctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLongOctetStringWithValue:(NSData * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135177,33 +106605,10 @@ - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTROctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, OctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135232,14 +106637,10 @@ + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeCharStringWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135283,33 +106684,10 @@ - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams * _Nonnull)pa
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135338,14 +106716,10 @@ + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeLongCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeLongCharStringWithValue:(NSString * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135389,33 +106763,10 @@ - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, CharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135444,14 +106795,10 @@ + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeEpochUsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEpochUsWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135495,33 +106842,10 @@ - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams * _Nonnull)param
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135550,14 +106874,10 @@ + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)att
 
 - (void)readAttributeEpochSWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEpochSWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135601,33 +106921,10 @@ - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams * _Nonnull)params
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135656,14 +106953,10 @@ + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attr
 
 - (void)readAttributeVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRVendorIdAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeVendorIdWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -135707,33 +107000,10 @@ - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRVendorIdAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, VendorIdAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -135763,15 +107033,11 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeListNullablesAndOptionalsStructWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136010,36 +107276,10 @@ - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscrib
                                                       reportHandler:(void (^)(NSArray * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge
-                = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
-                nil, params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136070,14 +107310,10 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri
 
 - (void)readAttributeEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterSimpleEnumAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeEnumAttrWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136121,34 +107357,10 @@ - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)para
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterSimpleEnumAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136178,14 +107390,11 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
 - (void)readAttributeStructAttrWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                   NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingStructAttrStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeStructAttrWithValue:(MTRUnitTestingClusterSimpleStruct * _Nonnull)value
@@ -136238,34 +107447,10 @@ - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)pa
                                  reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                    NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingStructAttrStructAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136295,14 +107480,10 @@ + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136347,33 +107528,10 @@ - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136403,14 +107561,10 @@ + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136455,33 +107609,10 @@ - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136511,14 +107642,10 @@ + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136563,33 +107690,10 @@ - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136619,14 +107723,10 @@ + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136671,33 +107771,10 @@ - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams *
                                             reportHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136727,15 +107804,10 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC
 
 - (void)readAttributeListLongOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListLongOctetStringWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136801,35 +107873,10 @@ - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -136862,15 +107909,9 @@ - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)param
                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 { // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb, params.filterByFabric);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeListFabricScopedWithValue:(NSArray * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -136991,35 +108032,10 @@ - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137049,14 +108065,10 @@ + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeTimedWriteBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeTimedWriteBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -137100,33 +108112,10 @@ - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams * _Non
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137155,14 +108144,10 @@ + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheConta
 
 - (void)readAttributeGeneralErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeGeneralErrorBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -137207,33 +108192,10 @@ - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137263,14 +108225,10 @@ + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeClusterErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeClusterErrorBooleanWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -137315,33 +108273,10 @@ - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137371,14 +108306,10 @@ + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeUnsupportedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeUnsupportedWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -137422,33 +108353,10 @@ - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams * _Nonnull)p
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, BooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137477,14 +108385,10 @@ + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *
 
 - (void)readAttributeNullableBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableBooleanWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -137533,33 +108437,10 @@ - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableBooleanAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableBooleanAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137588,14 +108469,10 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeNullableBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap8AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableBitmap8WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -137644,34 +108521,10 @@ - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams * _Nonnu
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap8AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137700,14 +108553,10 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain
 
 - (void)readAttributeNullableBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap16AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableBitmap16WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -137756,34 +108605,10 @@ - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap16AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137812,14 +108637,10 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeNullableBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap32AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableBitmap32WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -137868,34 +108689,10 @@ - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap32AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -137924,14 +108721,10 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeNullableBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap64AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableBitmap64WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -137980,34 +108773,10 @@ - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingNullableBitmap64AttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138036,14 +108805,10 @@ + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContai
 
 - (void)readAttributeNullableInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt8uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138092,33 +108857,10 @@ - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138147,14 +108889,10 @@ + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeNullableInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt16uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138203,33 +108941,10 @@ - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138258,14 +108973,10 @@ + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt24uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138314,33 +109025,10 @@ - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138369,14 +109057,10 @@ + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt32uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138425,33 +109109,10 @@ - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138480,14 +109141,10 @@ + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt40uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138536,33 +109193,10 @@ - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138591,14 +109225,10 @@ + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt48uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138647,33 +109277,10 @@ - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -138702,14 +109309,10 @@ + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138739,118 +109342,7 @@ - (void)writeAttributeNullableInt56uWithValue:(NSNumber * _Nullable)value
             }
 
             ListFreer listFreer;
-            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
-            TypeInfo::Type cppValue;
-            if (value == nil) {
-                cppValue.SetNull();
-            } else {
-                auto & nonNullValue_0 = cppValue.SetNonNull();
-                nonNullValue_0 = value.unsignedLongLongValue;
-            }
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
-        });
-    std::move(*bridge).DispatchAction(self.device);
-}
-
-- (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnull)params
-                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-{
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
-}
-
-+ (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
-            chip::app::ConcreteAttributePath path;
-            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
-            path.mEndpointId = static_cast([endpoint unsignedShortValue]);
-            path.mClusterId = TypeInfo::GetClusterId();
-            path.mAttributeId = TypeInfo::GetAttributeId();
-            TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
-            if (err == CHIP_NO_ERROR) {
-                successCb(bridge, value);
-            }
-            return err;
-        }
-        return CHIP_ERROR_NOT_FOUND;
-    });
-}
-
-- (void)readAttributeNullableInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
-    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
-}
-
-- (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
-{
-    [self writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable) value params:nil completion:completion];
-}
-- (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
-                                       params:(MTRWriteParams * _Nullable)params
-                                   completion:(MTRStatusCompletion)completion
-{
-    // Make a copy of params before we go async.
-    params = [params copy];
-    value = [value copy];
-
-    auto * bridge = new MTRDefaultSuccessCallbackBridge(
-        self.callbackQueue,
-        ^(id _Nullable ignored, NSError * _Nullable error) {
-            completion(error);
-        },
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            chip::Optional timedWriteTimeout;
-            if (params != nil) {
-                if (params.timedWriteTimeout != nil) {
-                    timedWriteTimeout.SetValue(params.timedWriteTimeout.unsignedShortValue);
-                }
-            }
-
-            ListFreer listFreer;
-            using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
             TypeInfo::Type cppValue;
             if (value == nil) {
                 cppValue.SetNull();
@@ -138865,39 +109357,100 @@ - (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
     std::move(*bridge).DispatchAction(self.device);
 }
 
-- (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnull)params
+- (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnull)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+    using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+    auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
+        if (attributeCacheContainer.cppAttributeCache) {
+            chip::app::ConcreteAttributePath path;
+            using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
+            path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+            path.mClusterId = TypeInfo::GetClusterId();
+            path.mAttributeId = TypeInfo::GetAttributeId();
+            TypeInfo::DecodableType value;
+            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            if (err == CHIP_NO_ERROR) {
+                successCb(bridge, value);
+            }
+            return err;
+        }
+        return CHIP_ERROR_NOT_FOUND;
+    });
+}
+
+- (void)readAttributeNullableInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
+{
+    [self writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable) value params:nil completion:completion];
+}
+- (void)writeAttributeNullableInt64uWithValue:(NSNumber * _Nullable)value
+                                       params:(MTRWriteParams * _Nullable)params
+                                   completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
     params = [params copy];
-    auto * bridge = new MTRNullableInt64uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64uAttributeCallback successCb,
+    value = [value copy];
+
+    auto * bridge = new MTRDefaultSuccessCallbackBridge(
+        self.callbackQueue,
+        ^(id _Nullable ignored, NSError * _Nullable error) {
+            completion(error);
+        },
+        ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
+            chip::Optional timedWriteTimeout;
+            if (params != nil) {
+                if (params.timedWriteTimeout != nil) {
+                    timedWriteTimeout.SetValue(params.timedWriteTimeout.unsignedShortValue);
+                }
             }
+
+            ListFreer listFreer;
             using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
+            TypeInfo::Type cppValue;
+            if (value == nil) {
+                cppValue.SetNull();
+            } else {
+                auto & nonNullValue_0 = cppValue.SetNonNull();
+                nonNullValue_0 = value.unsignedLongLongValue;
+            }
 
             chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
+            return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
+        });
     std::move(*bridge).DispatchAction(self.device);
 }
 
+- (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnull)params
+                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+    using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
+}
+
 + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
                                              endpoint:(NSNumber *)endpoint
                                                 queue:(dispatch_queue_t)queue
@@ -138924,14 +109477,10 @@ + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt8sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -138980,33 +109529,10 @@ - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139035,14 +109561,10 @@ + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeNullableInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt16sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139091,33 +109613,10 @@ - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139146,14 +109645,10 @@ + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt24sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139202,33 +109697,10 @@ - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139257,14 +109729,10 @@ + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt32sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139313,33 +109781,10 @@ - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt32sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt32sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139368,14 +109813,10 @@ + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt40sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139424,33 +109865,10 @@ - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139479,14 +109897,10 @@ + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt48sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139535,33 +109949,10 @@ - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139590,14 +109981,10 @@ + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt56sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139646,33 +110033,10 @@ - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139701,14 +110065,10 @@ + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableInt64sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139757,33 +110117,10 @@ - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt64sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt64sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139812,14 +110149,10 @@ + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableEnum8WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139868,33 +110201,10 @@ - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams * _Nonnull
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -139923,14 +110233,10 @@ + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeNullableEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableEnum16WithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -139979,33 +110285,10 @@ - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140034,14 +110317,10 @@ + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeNullableFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableFloatAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableFloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableFloatSingleWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140091,33 +110370,10 @@ - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableFloatAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableFloatAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140147,14 +110403,10 @@ + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeNullableFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableDoubleAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableDoubleAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableFloatDoubleWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140204,33 +110456,10 @@ - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableDoubleAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableDoubleAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140260,14 +110489,10 @@ + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeNullableOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableOctetStringWithValue:(NSData * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140316,33 +110541,10 @@ - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams * _N
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableOctetStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableOctetStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140371,14 +110573,10 @@ + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeNullableCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableCharStringWithValue:(NSString * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140428,33 +110626,10 @@ - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams * _No
                                          reportHandler:
                                              (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableCharStringAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableCharStringAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140484,15 +110659,10 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont
 
 - (void)readAttributeNullableEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableEnumAttrWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140541,35 +110711,10 @@ - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams * _Nonn
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140600,15 +110745,11 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
 - (void)readAttributeNullableStructWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableStructWithValue:(MTRUnitTestingClusterSimpleStruct * _Nullable)value
@@ -140668,35 +110809,10 @@ - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnul
                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                        NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140728,14 +110844,10 @@ + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContaine
 - (void)readAttributeNullableRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140786,33 +110898,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140843,14 +110932,10 @@ + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttribut
 - (void)readAttributeNullableRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -140901,33 +110986,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribePa
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt8sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt8sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -140958,14 +111020,10 @@ + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttribut
 - (void)readAttributeNullableRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -141016,33 +111074,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141073,14 +111108,10 @@ + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttribu
 - (void)readAttributeNullableRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
@@ -141131,33 +111162,10 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeP
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRNullableInt16sAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, NullableInt16sAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141187,14 +111195,10 @@ + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttribu
 
 - (void)readAttributeWriteOnlyInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt8uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)writeAttributeWriteOnlyInt8uWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
@@ -141238,33 +111242,10 @@ - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams * _Nonnul
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt8uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int8uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141293,15 +111274,10 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -141309,35 +111285,10 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141368,15 +111319,10 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
@@ -141384,35 +111330,10 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-            UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb,
-            MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141443,48 +111364,20 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingAttributeListListAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil,
-                params.filterByFabric, !params.replaceExistingSubscriptions, chip::NullOptional,
-                [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute(
+        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141513,47 +111406,20 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt32uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt32uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int32uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
@@ -141582,47 +111448,20 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRInt16uAttributeCallbackBridge(self.callbackQueue, completion,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.ReadAttribute(bridge, successCb, failureCb);
-        });
-    std::move(*bridge).DispatchAction(self.device);
+    MTRReadParams * params = [[MTRReadParams alloc] init];
+    using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
+    return MTRReadAttribute(
+        params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    // Make a copy of params before we go async.
-    params = [params copy];
-    auto * bridge = new MTRInt16uAttributeCallbackSubscriptionBridge(
-        self.callbackQueue, reportHandler,
-        ^(ExchangeManager & exchangeManager, const SessionHandle & session, Int16uAttributeCallback successCb,
-            MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
-            auto * typedBridge = static_cast(bridge);
-            if (!params.resubscribeIfLost) {
-                // We don't support disabling auto-resubscribe.
-                return CHIP_ERROR_INVALID_ARGUMENT;
-            }
-            using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
-
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            CHIP_ERROR err = cppCluster.SubscribeAttribute(bridge, successCb, failureCb,
-                [params.minInterval unsignedShortValue], [params.maxInterval unsignedShortValue],
-                MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params.filterByFabric,
-                !params.replaceExistingSubscriptions, chip::NullOptional, [typedBridge](void) { typedBridge->OnDone(); });
-            if (err == CHIP_NO_ERROR) {
-                // Now that we kicked off the subscribe, flag our callback bridge
-                // to stay alive until we get an OnDone.
-                typedBridge->KeepAliveOnCallback();
-            }
-            return err;
-        },
-        subscriptionEstablished);
-    std::move(*bridge).DispatchAction(self.device);
+    using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
+    MTRSubscribeAttribute(params,
+        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+        TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
index 3fb5690c98885e..d300ece5fd7c93 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
@@ -35,19 +35,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -63,19 +62,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -86,19 +84,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -114,19 +111,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -137,19 +133,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -164,19 +159,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableBooleanAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -187,19 +181,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -214,19 +207,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -237,19 +229,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -264,19 +255,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt8sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -287,19 +277,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -314,19 +303,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -337,19 +325,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -364,19 +351,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt16sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -387,19 +373,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -414,19 +399,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt32uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -437,19 +421,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -464,19 +447,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt32sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -487,19 +469,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -514,19 +495,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -537,19 +517,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -564,19 +543,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableInt64sAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -587,19 +565,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -614,19 +591,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableFloatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -637,19 +613,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -664,19 +639,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoubleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -687,19 +661,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -715,19 +688,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableVendorIdAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -754,19 +726,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -793,19 +764,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -832,19 +802,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -871,19 +840,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -910,19 +878,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -949,19 +916,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -988,19 +954,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1027,19 +992,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1066,19 +1030,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRScenesAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRScenesAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1105,19 +1068,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1144,19 +1106,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1183,19 +1144,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1222,20 +1182,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1262,20 +1220,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1302,19 +1258,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1341,19 +1296,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1380,19 +1334,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1419,19 +1372,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1458,19 +1410,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1497,19 +1448,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1536,19 +1486,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1577,19 +1526,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1616,19 +1564,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorServerListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorServerListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1655,19 +1602,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorClientListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorClientListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1694,19 +1640,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1733,19 +1678,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1772,19 +1716,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1811,19 +1754,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1871,19 +1813,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBindingBindingListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBindingBindingListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1910,19 +1851,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1949,19 +1889,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -1988,19 +1927,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBindingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBindingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2086,19 +2024,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlAclListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlAclListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2127,19 +2064,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2166,19 +2102,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2205,19 +2140,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2244,19 +2178,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2291,19 +2224,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsActionListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsActionListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2351,19 +2283,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2390,19 +2321,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2429,19 +2359,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2468,19 +2397,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2494,19 +2422,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2533,19 +2460,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2572,19 +2498,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2611,19 +2536,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2650,20 +2574,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2690,20 +2612,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2730,19 +2650,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2773,20 +2692,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2813,20 +2730,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2853,20 +2768,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2893,19 +2806,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2932,19 +2844,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -2971,20 +2882,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3011,20 +2920,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3051,19 +2958,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3090,20 +2996,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3130,19 +3034,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3169,19 +3072,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3208,19 +3110,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3247,19 +3148,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3286,19 +3186,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3325,19 +3224,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3364,19 +3262,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3403,20 +3300,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3443,20 +3338,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3483,19 +3376,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3522,19 +3414,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3561,19 +3452,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3600,19 +3490,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3639,19 +3528,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3678,19 +3566,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3717,19 +3604,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3743,20 +3629,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3783,19 +3667,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3822,19 +3705,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3861,19 +3743,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3903,19 +3784,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3942,19 +3822,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -3981,19 +3860,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4020,19 +3898,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4059,19 +3936,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4098,19 +3974,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4137,19 +4012,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4228,19 +4102,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4267,19 +4140,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4306,19 +4178,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4345,19 +4216,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4384,19 +4254,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4423,19 +4292,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4462,19 +4330,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4525,19 +4392,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4564,19 +4430,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4603,19 +4468,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4642,19 +4506,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4704,19 +4567,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4754,19 +4616,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4785,19 +4646,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4826,21 +4686,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4867,20 +4724,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4907,20 +4762,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4947,20 +4800,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -4987,19 +4838,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5026,19 +4876,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5065,19 +4914,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5104,19 +4952,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5143,20 +4990,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5183,20 +5028,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5223,19 +5066,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5262,19 +5104,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5301,19 +5142,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5340,19 +5180,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5379,19 +5218,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5418,19 +5256,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5457,19 +5294,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5496,20 +5332,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5536,20 +5370,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5576,19 +5408,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5623,19 +5454,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5671,19 +5501,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5710,20 +5539,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5750,19 +5577,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5789,19 +5615,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5828,19 +5653,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5871,19 +5695,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5936,19 +5759,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -5975,19 +5797,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6014,19 +5835,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6053,19 +5873,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6098,19 +5917,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6137,19 +5955,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6176,19 +5993,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6215,19 +6031,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6260,19 +6075,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6299,19 +6113,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6338,19 +6151,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6377,19 +6189,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6416,19 +6227,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6455,19 +6265,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6494,19 +6303,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6555,19 +6363,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6594,19 +6401,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6633,19 +6439,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6672,19 +6477,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6696,19 +6500,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6720,19 +6523,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6744,19 +6546,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6768,19 +6569,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6807,19 +6607,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6846,19 +6645,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6885,19 +6683,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6909,19 +6706,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6933,19 +6729,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6957,19 +6752,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -6981,19 +6775,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7020,19 +6813,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7059,19 +6851,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7098,19 +6889,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7137,19 +6927,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7176,19 +6965,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7215,19 +7003,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7239,19 +7026,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7278,20 +7064,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7318,20 +7102,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7358,19 +7140,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7397,19 +7178,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7436,19 +7216,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7475,19 +7254,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7514,19 +7292,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7553,19 +7330,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7592,19 +7368,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7631,21 +7406,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(
-        context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7672,21 +7444,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7713,21 +7482,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7754,19 +7520,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7793,19 +7558,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7832,19 +7596,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7871,19 +7634,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7910,19 +7672,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7949,19 +7710,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -7988,19 +7748,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8027,19 +7786,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8066,19 +7824,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8105,19 +7862,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8144,19 +7900,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8183,19 +7938,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8222,19 +7976,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8261,19 +8014,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8300,19 +8052,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8339,19 +8090,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8378,19 +8128,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8417,19 +8166,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8456,20 +8204,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8496,20 +8242,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8536,19 +8280,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8575,19 +8318,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8614,19 +8356,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8653,19 +8394,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8692,19 +8432,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8731,19 +8470,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8770,19 +8508,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8832,19 +8569,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelChannelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelChannelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8878,19 +8614,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelLineupStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelLineupStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8929,19 +8664,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -8968,19 +8702,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9007,19 +8740,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9046,19 +8778,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9089,19 +8820,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9128,19 +8858,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9167,19 +8896,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9206,19 +8934,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9240,19 +8967,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9279,19 +9005,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9318,19 +9043,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9357,19 +9081,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9404,19 +9127,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaInputInputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaInputInputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9443,19 +9165,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9482,19 +9203,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9521,19 +9241,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9560,19 +9279,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9599,19 +9317,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9638,19 +9355,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9677,19 +9393,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9716,19 +9431,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9755,19 +9469,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9794,19 +9507,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9833,19 +9545,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9872,19 +9583,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9911,19 +9621,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9955,19 +9664,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -9994,19 +9702,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10033,19 +9740,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10072,19 +9778,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10111,19 +9816,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10149,19 +9853,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10188,19 +9891,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10227,19 +9929,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10266,19 +9967,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10294,19 +9994,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10333,19 +10032,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10372,19 +10070,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10411,19 +10108,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10450,19 +10146,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10489,19 +10184,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10528,19 +10222,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10567,19 +10260,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10606,19 +10298,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10645,19 +10336,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10684,19 +10374,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10708,19 +10397,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10732,19 +10420,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10756,19 +10443,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10780,19 +10466,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10819,19 +10504,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10858,19 +10542,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -10900,19 +10583,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11112,19 +10794,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11144,19 +10825,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11183,19 +10863,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11278,19 +10957,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11306,19 +10984,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11334,19 +11011,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11362,19 +11038,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11390,19 +11065,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11428,19 +11102,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11467,19 +11140,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11506,19 +11178,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -11545,19 +11216,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13371,19 +13041,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13399,20 +13068,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13424,19 +13091,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13452,19 +13118,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13476,19 +13141,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13504,19 +13168,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13528,19 +13191,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13556,20 +13218,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13581,19 +13241,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13609,20 +13268,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13634,19 +13291,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13662,19 +13318,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13686,19 +13341,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13714,19 +13368,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13738,19 +13391,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13766,19 +13418,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13790,19 +13441,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13818,19 +13468,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13842,19 +13491,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13870,19 +13518,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13894,19 +13541,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13922,19 +13568,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13946,19 +13591,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13974,19 +13618,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -13998,19 +13641,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14026,19 +13668,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14050,19 +13691,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14078,19 +13718,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14102,19 +13741,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14130,19 +13768,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14154,19 +13791,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14182,19 +13818,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14206,21 +13841,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14236,21 +13868,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(
-        context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14262,20 +13891,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14291,21 +13918,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14317,19 +13941,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14345,21 +13968,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14371,21 +13991,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14402,21 +14019,18 @@
 };
 
 void MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackSubscriptionBridge::
-    OnSubscriptionEstablished(void * context)
+    OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(
-            context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14428,21 +14042,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14458,21 +14069,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(
-        context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14484,20 +14092,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14513,21 +14119,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14539,19 +14142,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14567,20 +14169,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14592,19 +14192,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14620,20 +14219,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14645,19 +14242,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14673,19 +14269,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14697,19 +14292,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14725,19 +14319,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14749,19 +14342,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14777,19 +14369,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14801,19 +14392,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14829,19 +14419,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14853,19 +14442,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14881,19 +14469,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14905,19 +14492,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14933,19 +14519,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14957,19 +14542,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -14985,19 +14569,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15009,19 +14592,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15037,19 +14619,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15061,19 +14642,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15089,19 +14669,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15113,19 +14692,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15141,21 +14719,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15167,20 +14742,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15196,21 +14769,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15222,21 +14792,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15252,22 +14819,19 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackSubscriptionBridge::
+    OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(
-            context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15279,19 +14843,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15307,19 +14870,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15331,19 +14893,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15359,19 +14920,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15383,19 +14943,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15411,19 +14970,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15435,19 +14993,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15463,20 +15020,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15488,19 +15043,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15516,20 +15070,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15541,19 +15093,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15569,20 +15120,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15594,19 +15143,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15622,19 +15170,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15646,19 +15193,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15674,20 +15220,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15699,19 +15243,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15727,20 +15270,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15752,19 +15293,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15780,20 +15320,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15805,19 +15343,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15833,20 +15370,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15858,21 +15393,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15888,22 +15420,19 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackSubscriptionBridge::
+    OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(
-            context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15915,21 +15444,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15945,21 +15471,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(
-        context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15971,19 +15494,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -15999,20 +15521,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16024,20 +15544,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16053,21 +15571,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16079,19 +15594,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16107,21 +15621,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16133,19 +15644,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16161,21 +15671,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16187,19 +15694,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16215,20 +15721,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16240,19 +15744,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16268,20 +15771,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16293,21 +15794,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16324,21 +15822,18 @@
 };
 
 void MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackSubscriptionBridge::
-    OnSubscriptionEstablished(void * context)
+    OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(
-            context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16350,19 +15845,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16378,20 +15872,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16403,20 +15895,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16432,21 +15922,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16458,20 +15945,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16487,21 +15972,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16513,19 +15995,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16541,19 +16022,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16565,19 +16045,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16593,19 +16072,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16617,19 +16095,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16645,19 +16122,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16669,19 +16145,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16697,19 +16172,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16721,19 +16195,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16749,19 +16222,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16773,19 +16245,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16801,19 +16272,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16825,19 +16295,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16853,19 +16322,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16877,19 +16345,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16905,19 +16372,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16929,19 +16395,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16957,19 +16422,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -16981,19 +16445,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17009,19 +16472,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17033,19 +16495,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17061,19 +16522,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17085,19 +16545,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17113,19 +16572,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17136,19 +16594,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17164,19 +16621,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17188,19 +16644,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17216,19 +16671,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17240,19 +16694,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17268,19 +16721,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17292,19 +16744,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17320,20 +16771,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17345,19 +16794,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17373,20 +16821,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17398,19 +16844,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17426,20 +16871,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17451,19 +16894,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17479,19 +16921,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17503,19 +16944,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17531,19 +16971,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17555,19 +16994,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17583,19 +17021,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17607,19 +17044,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17635,19 +17071,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17659,20 +17094,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17688,21 +17121,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17714,20 +17144,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17743,21 +17171,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17769,19 +17194,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17797,19 +17221,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17821,19 +17244,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17849,20 +17271,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17874,19 +17294,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17902,19 +17321,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17926,19 +17344,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17954,19 +17371,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -17978,19 +17394,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18006,19 +17421,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18030,19 +17444,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18058,19 +17471,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18082,19 +17494,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18110,19 +17521,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18134,19 +17544,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18162,19 +17571,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18186,19 +17594,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18214,19 +17621,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18238,19 +17644,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18266,19 +17671,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18290,19 +17694,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18318,19 +17721,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18342,19 +17744,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18370,19 +17771,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18394,19 +17794,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18422,19 +17821,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18446,19 +17844,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18474,19 +17871,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18498,19 +17894,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18526,21 +17921,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18552,19 +17944,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18580,19 +17971,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18604,19 +17994,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18632,19 +18021,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18656,20 +18044,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18685,21 +18071,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18711,19 +18094,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18739,20 +18121,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18764,19 +18144,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18792,19 +18171,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18816,19 +18194,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18844,19 +18221,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18868,19 +18244,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18896,19 +18271,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18920,19 +18294,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18948,20 +18321,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -18973,19 +18344,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19001,21 +18371,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19027,19 +18394,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19055,19 +18421,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19079,19 +18444,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19107,19 +18471,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19131,19 +18494,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19159,19 +18521,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19183,21 +18544,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19214,21 +18572,18 @@
 };
 
 void MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackSubscriptionBridge::
-    OnSubscriptionEstablished(void * context)
+    OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(
-            context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19240,19 +18595,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19268,21 +18622,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(
-    void * context)
+void MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self
-        = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19294,19 +18645,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19322,19 +18672,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19346,19 +18695,18 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
 
@@ -19374,18 +18722,17 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+void MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
-    auto * self = static_cast(context);
-    if (!self->mQueue) {
+    if (!mQueue) {
         return;
     }
 
-    if (self->mEstablishedHandler != nil) {
-        dispatch_async(self->mQueue, self->mEstablishedHandler);
+    if (mEstablishedHandler != nil) {
+        dispatch_async(mQueue, mEstablishedHandler);
         // On failure, mEstablishedHandler will be cleaned up by our destructor,
         // but we can clean it up earlier on successful subscription
         // establishment.
-        self->mEstablishedHandler = nil;
+        mEstablishedHandler = nil;
     }
 }
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
index 6d4b97a1e6d209..cf558413edde30 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge_internal.h
@@ -1156,7 +1156,7 @@ class MTROctetStringAttributeCallbackSubscriptionBridge : public MTROctetStringA
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROctetStringAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROctetStringAttributeCallbackBridge::OnDone;
 
@@ -1186,7 +1186,7 @@ class MTRNullableOctetStringAttributeCallbackSubscriptionBridge : public MTRNull
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOctetStringAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOctetStringAttributeCallbackBridge::OnDone;
 
@@ -1215,7 +1215,7 @@ class MTRCharStringAttributeCallbackSubscriptionBridge : public MTRCharStringAtt
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRCharStringAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRCharStringAttributeCallbackBridge::OnDone;
 
@@ -1244,7 +1244,7 @@ class MTRNullableCharStringAttributeCallbackSubscriptionBridge : public MTRNulla
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableCharStringAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableCharStringAttributeCallbackBridge::OnDone;
 
@@ -1273,7 +1273,7 @@ class MTRBooleanAttributeCallbackSubscriptionBridge : public MTRBooleanAttribute
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBooleanAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBooleanAttributeCallbackBridge::OnDone;
 
@@ -1302,7 +1302,7 @@ class MTRNullableBooleanAttributeCallbackSubscriptionBridge : public MTRNullable
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableBooleanAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableBooleanAttributeCallbackBridge::OnDone;
 
@@ -1331,7 +1331,7 @@ class MTRInt8uAttributeCallbackSubscriptionBridge : public MTRInt8uAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt8uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt8uAttributeCallbackBridge::OnDone;
 
@@ -1360,7 +1360,7 @@ class MTRNullableInt8uAttributeCallbackSubscriptionBridge : public MTRNullableIn
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt8uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt8uAttributeCallbackBridge::OnDone;
 
@@ -1389,7 +1389,7 @@ class MTRInt8sAttributeCallbackSubscriptionBridge : public MTRInt8sAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt8sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt8sAttributeCallbackBridge::OnDone;
 
@@ -1418,7 +1418,7 @@ class MTRNullableInt8sAttributeCallbackSubscriptionBridge : public MTRNullableIn
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt8sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt8sAttributeCallbackBridge::OnDone;
 
@@ -1447,7 +1447,7 @@ class MTRInt16uAttributeCallbackSubscriptionBridge : public MTRInt16uAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt16uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt16uAttributeCallbackBridge::OnDone;
 
@@ -1476,7 +1476,7 @@ class MTRNullableInt16uAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt16uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt16uAttributeCallbackBridge::OnDone;
 
@@ -1505,7 +1505,7 @@ class MTRInt16sAttributeCallbackSubscriptionBridge : public MTRInt16sAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt16sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt16sAttributeCallbackBridge::OnDone;
 
@@ -1534,7 +1534,7 @@ class MTRNullableInt16sAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt16sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt16sAttributeCallbackBridge::OnDone;
 
@@ -1563,7 +1563,7 @@ class MTRInt32uAttributeCallbackSubscriptionBridge : public MTRInt32uAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt32uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt32uAttributeCallbackBridge::OnDone;
 
@@ -1592,7 +1592,7 @@ class MTRNullableInt32uAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt32uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt32uAttributeCallbackBridge::OnDone;
 
@@ -1621,7 +1621,7 @@ class MTRInt32sAttributeCallbackSubscriptionBridge : public MTRInt32sAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt32sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt32sAttributeCallbackBridge::OnDone;
 
@@ -1650,7 +1650,7 @@ class MTRNullableInt32sAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt32sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt32sAttributeCallbackBridge::OnDone;
 
@@ -1679,7 +1679,7 @@ class MTRInt64uAttributeCallbackSubscriptionBridge : public MTRInt64uAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt64uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt64uAttributeCallbackBridge::OnDone;
 
@@ -1708,7 +1708,7 @@ class MTRNullableInt64uAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt64uAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt64uAttributeCallbackBridge::OnDone;
 
@@ -1737,7 +1737,7 @@ class MTRInt64sAttributeCallbackSubscriptionBridge : public MTRInt64sAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRInt64sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRInt64sAttributeCallbackBridge::OnDone;
 
@@ -1766,7 +1766,7 @@ class MTRNullableInt64sAttributeCallbackSubscriptionBridge : public MTRNullableI
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableInt64sAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableInt64sAttributeCallbackBridge::OnDone;
 
@@ -1795,7 +1795,7 @@ class MTRFloatAttributeCallbackSubscriptionBridge : public MTRFloatAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFloatAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFloatAttributeCallbackBridge::OnDone;
 
@@ -1824,7 +1824,7 @@ class MTRNullableFloatAttributeCallbackSubscriptionBridge : public MTRNullableFl
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableFloatAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableFloatAttributeCallbackBridge::OnDone;
 
@@ -1853,7 +1853,7 @@ class MTRDoubleAttributeCallbackSubscriptionBridge : public MTRDoubleAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoubleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoubleAttributeCallbackBridge::OnDone;
 
@@ -1882,7 +1882,7 @@ class MTRNullableDoubleAttributeCallbackSubscriptionBridge : public MTRNullableD
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoubleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoubleAttributeCallbackBridge::OnDone;
 
@@ -1911,7 +1911,7 @@ class MTRVendorIdAttributeCallbackSubscriptionBridge : public MTRVendorIdAttribu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRVendorIdAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRVendorIdAttributeCallbackBridge::OnDone;
 
@@ -1940,7 +1940,7 @@ class MTRNullableVendorIdAttributeCallbackSubscriptionBridge : public MTRNullabl
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableVendorIdAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableVendorIdAttributeCallbackBridge::OnDone;
 
@@ -1973,7 +1973,7 @@ class MTRIdentifyGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2006,7 +2006,7 @@ class MTRIdentifyAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2036,7 +2036,7 @@ class MTRIdentifyAttributeListListAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2069,7 +2069,7 @@ class MTRGroupsGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2102,7 +2102,7 @@ class MTRGroupsAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2132,7 +2132,7 @@ class MTRGroupsAttributeListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2165,7 +2165,7 @@ class MTRScenesGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRScenesGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRScenesGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2198,7 +2198,7 @@ class MTRScenesAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRScenesAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRScenesAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2228,7 +2228,7 @@ class MTRScenesAttributeListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRScenesAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRScenesAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2261,7 +2261,7 @@ class MTROnOffGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2293,7 +2293,7 @@ class MTROnOffAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2323,7 +2323,7 @@ class MTROnOffAttributeListListAttributeCallbackSubscriptionBridge : public MTRO
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2356,7 +2356,7 @@ class MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2389,7 +2389,7 @@ class MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2422,7 +2422,7 @@ class MTROnOffSwitchConfigurationAttributeListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2455,7 +2455,7 @@ class MTRLevelControlGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLevelControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLevelControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2488,7 +2488,7 @@ class MTRLevelControlAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLevelControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLevelControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2521,7 +2521,7 @@ class MTRLevelControlAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLevelControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLevelControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2554,7 +2554,7 @@ class MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2587,7 +2587,7 @@ class MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2620,7 +2620,7 @@ class MTRBinaryInputBasicAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBinaryInputBasicAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBinaryInputBasicAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2655,7 +2655,7 @@ class MTRDescriptorDeviceTypeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorDeviceTypeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorDeviceTypeListListAttributeCallbackBridge::OnDone;
 
@@ -2685,7 +2685,7 @@ class MTRDescriptorServerListListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorServerListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorServerListListAttributeCallbackBridge::OnDone;
 
@@ -2715,7 +2715,7 @@ class MTRDescriptorClientListListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorClientListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorClientListListAttributeCallbackBridge::OnDone;
 
@@ -2745,7 +2745,7 @@ class MTRDescriptorPartsListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorPartsListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorPartsListListAttributeCallbackBridge::OnDone;
 
@@ -2778,7 +2778,7 @@ class MTRDescriptorGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2811,7 +2811,7 @@ class MTRDescriptorAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2842,7 +2842,7 @@ class MTRDescriptorAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDescriptorAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDescriptorAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -2873,7 +2873,7 @@ class MTRBindingBindingListAttributeCallbackSubscriptionBridge : public MTRBindi
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBindingBindingListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBindingBindingListAttributeCallbackBridge::OnDone;
 
@@ -2906,7 +2906,7 @@ class MTRBindingGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBindingGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBindingGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2939,7 +2939,7 @@ class MTRBindingAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBindingAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBindingAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -2969,7 +2969,7 @@ class MTRBindingAttributeListListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBindingAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBindingAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3002,7 +3002,7 @@ class MTRAccessControlAclListAttributeCallbackSubscriptionBridge : public MTRAcc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlAclListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlAclListAttributeCallbackBridge::OnDone;
 
@@ -3035,7 +3035,7 @@ class MTRAccessControlExtensionListAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlExtensionListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlExtensionListAttributeCallbackBridge::OnDone;
 
@@ -3068,7 +3068,7 @@ class MTRAccessControlGeneratedCommandListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3101,7 +3101,7 @@ class MTRAccessControlAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3134,7 +3134,7 @@ class MTRAccessControlAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3166,7 +3166,7 @@ class MTRActionsActionListListAttributeCallbackSubscriptionBridge : public MTRAc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsActionListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsActionListListAttributeCallbackBridge::OnDone;
 
@@ -3199,7 +3199,7 @@ class MTRActionsEndpointListsListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsEndpointListsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsEndpointListsListAttributeCallbackBridge::OnDone;
 
@@ -3232,7 +3232,7 @@ class MTRActionsGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3265,7 +3265,7 @@ class MTRActionsAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3295,7 +3295,7 @@ class MTRActionsAttributeListListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3327,7 +3327,7 @@ class MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBasicCapabilityMinimaStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBasicCapabilityMinimaStructAttributeCallbackBridge::OnDone;
 
@@ -3360,7 +3360,7 @@ class MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBasicGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBasicGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3392,7 +3392,7 @@ class MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBasicAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBasicAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3422,7 +3422,7 @@ class MTRBasicAttributeListListAttributeCallbackSubscriptionBridge : public MTRB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBasicAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBasicAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3456,7 +3456,7 @@ class MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3489,7 +3489,7 @@ class MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3522,7 +3522,7 @@ class MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3558,7 +3558,7 @@ class MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge::OnDone;
 
@@ -3592,7 +3592,7 @@ class MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3626,7 +3626,7 @@ class MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3659,7 +3659,7 @@ class MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3692,7 +3692,7 @@ class MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge::OnDone;
 
@@ -3726,7 +3726,7 @@ class MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3759,7 +3759,7 @@ class MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3792,7 +3792,7 @@ class MTRLocalizationConfigurationAttributeListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3827,7 +3827,7 @@ class MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge::OnDone;
 
@@ -3860,7 +3860,7 @@ class MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3893,7 +3893,7 @@ class MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3926,7 +3926,7 @@ class MTRTimeFormatLocalizationAttributeListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -3959,7 +3959,7 @@ class MTRUnitLocalizationGeneratedCommandListListAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -3992,7 +3992,7 @@ class MTRUnitLocalizationAcceptedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4025,7 +4025,7 @@ class MTRUnitLocalizationAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitLocalizationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitLocalizationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4058,7 +4058,7 @@ class MTRPowerSourceConfigurationSourcesListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge::OnDone;
 
@@ -4091,7 +4091,7 @@ class MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4124,7 +4124,7 @@ class MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4157,7 +4157,7 @@ class MTRPowerSourceConfigurationAttributeListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4191,7 +4191,7 @@ class MTRPowerSourceActiveWiredFaultsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4225,7 +4225,7 @@ class MTRPowerSourceActiveBatFaultsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4259,7 +4259,7 @@ class MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4292,7 +4292,7 @@ class MTRPowerSourceGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4325,7 +4325,7 @@ class MTRPowerSourceAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4357,7 +4357,7 @@ class MTRPowerSourceAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4392,7 +4392,7 @@ class MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge::OnDone;
 
@@ -4425,7 +4425,7 @@ class MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4458,7 +4458,7 @@ class MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4491,7 +4491,7 @@ class MTRGeneralCommissioningAttributeListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4527,7 +4527,7 @@ class MTRNetworkCommissioningNetworksListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningNetworksListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningNetworksListAttributeCallbackBridge::OnDone;
 
@@ -4560,7 +4560,7 @@ class MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4593,7 +4593,7 @@ class MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4626,7 +4626,7 @@ class MTRNetworkCommissioningAttributeListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4659,7 +4659,7 @@ class MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4692,7 +4692,7 @@ class MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4725,7 +4725,7 @@ class MTRDiagnosticLogsAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4760,7 +4760,7 @@ class MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge::OnDone;
 
@@ -4793,7 +4793,7 @@ class MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4826,7 +4826,7 @@ class MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4859,7 +4859,7 @@ class MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge::OnDone;
 
@@ -4892,7 +4892,7 @@ class MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4925,7 +4925,7 @@ class MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -4958,7 +4958,7 @@ class MTRGeneralDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -4994,7 +4994,7 @@ class MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge::OnDone;
 
@@ -5027,7 +5027,7 @@ class MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5060,7 +5060,7 @@ class MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5093,7 +5093,7 @@ class MTRSoftwareDiagnosticsAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5128,7 +5128,7 @@ class MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge::OnDone;
 
@@ -5163,7 +5163,7 @@ class MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge::OnDone;
 
@@ -5198,7 +5198,7 @@ class MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge::OnDone;
 
@@ -5238,7 +5238,7 @@ class MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge::OnDone;
 
@@ -5274,7 +5274,7 @@ class MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge::OnDone;
 
@@ -5307,7 +5307,7 @@ class MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5340,7 +5340,7 @@ class MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5373,7 +5373,7 @@ class MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5406,7 +5406,7 @@ class MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5439,7 +5439,7 @@ class MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5472,7 +5472,7 @@ class MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5506,7 +5506,7 @@ class MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5540,7 +5540,7 @@ class MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5573,7 +5573,7 @@ class MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5606,7 +5606,7 @@ class MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5639,7 +5639,7 @@ class MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5672,7 +5672,7 @@ class MTRBridgedDeviceBasicAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5705,7 +5705,7 @@ class MTRSwitchGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSwitchGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSwitchGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5738,7 +5738,7 @@ class MTRSwitchAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSwitchAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSwitchAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5768,7 +5768,7 @@ class MTRSwitchAttributeListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRSwitchAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRSwitchAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5802,7 +5802,7 @@ class MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5836,7 +5836,7 @@ class MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -5869,7 +5869,7 @@ class MTRAdministratorCommissioningAttributeListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -5905,7 +5905,7 @@ class MTROperationalCredentialsNOCsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsNOCsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsNOCsListAttributeCallbackBridge::OnDone;
 
@@ -5940,7 +5940,7 @@ class MTROperationalCredentialsFabricsListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsFabricsListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsFabricsListAttributeCallbackBridge::OnDone;
 
@@ -5974,7 +5974,7 @@ class MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge::OnDone;
 
@@ -6007,7 +6007,7 @@ class MTROperationalCredentialsGeneratedCommandListListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6040,7 +6040,7 @@ class MTROperationalCredentialsAcceptedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6073,7 +6073,7 @@ class MTROperationalCredentialsAttributeListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6108,7 +6108,7 @@ class MTRGroupKeyManagementGroupKeyMapListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge::OnDone;
 
@@ -6143,7 +6143,7 @@ class MTRGroupKeyManagementGroupTableListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementGroupTableListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementGroupTableListAttributeCallbackBridge::OnDone;
 
@@ -6176,7 +6176,7 @@ class MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6209,7 +6209,7 @@ class MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6242,7 +6242,7 @@ class MTRGroupKeyManagementAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6274,7 +6274,7 @@ class MTRFixedLabelLabelListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFixedLabelLabelListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFixedLabelLabelListListAttributeCallbackBridge::OnDone;
 
@@ -6307,7 +6307,7 @@ class MTRFixedLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6340,7 +6340,7 @@ class MTRFixedLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6371,7 +6371,7 @@ class MTRFixedLabelAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFixedLabelAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFixedLabelAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6403,7 +6403,7 @@ class MTRUserLabelLabelListListAttributeCallbackSubscriptionBridge : public MTRU
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUserLabelLabelListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUserLabelLabelListListAttributeCallbackBridge::OnDone;
 
@@ -6436,7 +6436,7 @@ class MTRUserLabelGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUserLabelGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUserLabelGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6469,7 +6469,7 @@ class MTRUserLabelAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUserLabelAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUserLabelAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6499,7 +6499,7 @@ class MTRUserLabelAttributeListListAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUserLabelAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUserLabelAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6532,7 +6532,7 @@ class MTRBooleanStateGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6565,7 +6565,7 @@ class MTRBooleanStateAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6598,7 +6598,7 @@ class MTRBooleanStateAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBooleanStateAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBooleanStateAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6633,7 +6633,7 @@ class MTRModeSelectSupportedModesListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRModeSelectSupportedModesListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRModeSelectSupportedModesListAttributeCallbackBridge::OnDone;
 
@@ -6666,7 +6666,7 @@ class MTRModeSelectGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRModeSelectGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRModeSelectGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6699,7 +6699,7 @@ class MTRModeSelectAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRModeSelectAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRModeSelectAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6730,7 +6730,7 @@ class MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRModeSelectAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRModeSelectAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6763,7 +6763,7 @@ class MTRDoorLockCredentialRulesSupportAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockCredentialRulesSupportAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockCredentialRulesSupportAttributeCallbackBridge::OnDone;
 
@@ -6796,7 +6796,7 @@ class MTRDoorLockSupportedOperatingModesAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockSupportedOperatingModesAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockSupportedOperatingModesAttributeCallbackBridge::OnDone;
 
@@ -6829,7 +6829,7 @@ class MTRDoorLockDefaultConfigurationRegisterAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge::OnDone;
 
@@ -6862,7 +6862,7 @@ class MTRDoorLockLocalProgrammingFeaturesAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge::OnDone;
 
@@ -6895,7 +6895,7 @@ class MTRDoorLockGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6928,7 +6928,7 @@ class MTRDoorLockAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -6958,7 +6958,7 @@ class MTRDoorLockAttributeListListAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -6988,7 +6988,7 @@ class MTRWindowCoveringConfigStatusAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringConfigStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringConfigStatusAttributeCallbackBridge::OnDone;
 
@@ -7021,7 +7021,7 @@ class MTRWindowCoveringOperationalStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringOperationalStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringOperationalStatusAttributeCallbackBridge::OnDone;
 
@@ -7050,7 +7050,7 @@ class MTRWindowCoveringModeAttributeCallbackSubscriptionBridge : public MTRWindo
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringModeAttributeCallbackBridge::OnDone;
 
@@ -7080,7 +7080,7 @@ class MTRWindowCoveringSafetyStatusAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringSafetyStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringSafetyStatusAttributeCallbackBridge::OnDone;
 
@@ -7113,7 +7113,7 @@ class MTRWindowCoveringGeneratedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7146,7 +7146,7 @@ class MTRWindowCoveringAcceptedCommandListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7179,7 +7179,7 @@ class MTRWindowCoveringAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7212,7 +7212,7 @@ class MTRBarrierControlGeneratedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7245,7 +7245,7 @@ class MTRBarrierControlAcceptedCommandListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7278,7 +7278,7 @@ class MTRBarrierControlAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBarrierControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBarrierControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7311,7 +7311,7 @@ class MTRPumpConfigurationAndControlPumpStatusAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge::OnDone;
 
@@ -7345,7 +7345,7 @@ class MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7379,7 +7379,7 @@ class MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7412,7 +7412,7 @@ class MTRPumpConfigurationAndControlAttributeListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7445,7 +7445,7 @@ class MTRThermostatGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7478,7 +7478,7 @@ class MTRThermostatAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7509,7 +7509,7 @@ class MTRThermostatAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7542,7 +7542,7 @@ class MTRFanControlGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFanControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFanControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7575,7 +7575,7 @@ class MTRFanControlAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFanControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFanControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7606,7 +7606,7 @@ class MTRFanControlAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFanControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFanControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7643,7 +7643,7 @@ class MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7680,7 +7680,7 @@ class MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCal
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7715,7 +7715,7 @@ class MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackS
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7748,7 +7748,7 @@ class MTRColorControlGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7781,7 +7781,7 @@ class MTRColorControlAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7814,7 +7814,7 @@ class MTRColorControlAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7847,7 +7847,7 @@ class MTRBallastConfigurationGeneratedCommandListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7880,7 +7880,7 @@ class MTRBallastConfigurationAcceptedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7913,7 +7913,7 @@ class MTRBallastConfigurationAttributeListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRBallastConfigurationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRBallastConfigurationAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -7946,7 +7946,7 @@ class MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -7979,7 +7979,7 @@ class MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8012,7 +8012,7 @@ class MTRIlluminanceMeasurementAttributeListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8045,7 +8045,7 @@ class MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8078,7 +8078,7 @@ class MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8111,7 +8111,7 @@ class MTRTemperatureMeasurementAttributeListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8144,7 +8144,7 @@ class MTRPressureMeasurementGeneratedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8177,7 +8177,7 @@ class MTRPressureMeasurementAcceptedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8210,7 +8210,7 @@ class MTRPressureMeasurementAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPressureMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPressureMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8243,7 +8243,7 @@ class MTRFlowMeasurementGeneratedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8276,7 +8276,7 @@ class MTRFlowMeasurementAcceptedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8309,7 +8309,7 @@ class MTRFlowMeasurementAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFlowMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFlowMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8343,7 +8343,7 @@ class MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8377,7 +8377,7 @@ class MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8410,7 +8410,7 @@ class MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8443,7 +8443,7 @@ class MTROccupancySensingGeneratedCommandListListAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8476,7 +8476,7 @@ class MTROccupancySensingAcceptedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8509,7 +8509,7 @@ class MTROccupancySensingAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROccupancySensingAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROccupancySensingAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8542,7 +8542,7 @@ class MTRWakeOnLanGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8575,7 +8575,7 @@ class MTRWakeOnLanAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8605,7 +8605,7 @@ class MTRWakeOnLanAttributeListListAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWakeOnLanAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWakeOnLanAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8637,7 +8637,7 @@ class MTRChannelChannelListListAttributeCallbackSubscriptionBridge : public MTRC
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelChannelListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelChannelListListAttributeCallbackBridge::OnDone;
 
@@ -8669,7 +8669,7 @@ class MTRChannelLineupStructAttributeCallbackSubscriptionBridge : public MTRChan
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelLineupStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelLineupStructAttributeCallbackBridge::OnDone;
 
@@ -8702,7 +8702,7 @@ class MTRChannelCurrentChannelStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelCurrentChannelStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelCurrentChannelStructAttributeCallbackBridge::OnDone;
 
@@ -8735,7 +8735,7 @@ class MTRChannelGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8768,7 +8768,7 @@ class MTRChannelAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8798,7 +8798,7 @@ class MTRChannelAttributeListListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8834,7 +8834,7 @@ class MTRTargetNavigatorTargetListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTargetNavigatorTargetListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTargetNavigatorTargetListListAttributeCallbackBridge::OnDone;
 
@@ -8867,7 +8867,7 @@ class MTRTargetNavigatorGeneratedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8900,7 +8900,7 @@ class MTRTargetNavigatorAcceptedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -8933,7 +8933,7 @@ class MTRTargetNavigatorAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTargetNavigatorAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTargetNavigatorAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -8968,7 +8968,7 @@ class MTRMediaPlaybackSampledPositionStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge::OnDone;
 
@@ -9001,7 +9001,7 @@ class MTRMediaPlaybackGeneratedCommandListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9034,7 +9034,7 @@ class MTRMediaPlaybackAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9067,7 +9067,7 @@ class MTRMediaPlaybackAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9099,7 +9099,7 @@ class MTRMediaInputInputListListAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaInputInputListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaInputInputListListAttributeCallbackBridge::OnDone;
 
@@ -9132,7 +9132,7 @@ class MTRMediaInputGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaInputGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaInputGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9165,7 +9165,7 @@ class MTRMediaInputAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaInputAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaInputAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9196,7 +9196,7 @@ class MTRMediaInputAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaInputAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaInputAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9229,7 +9229,7 @@ class MTRLowPowerGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLowPowerGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLowPowerGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9262,7 +9262,7 @@ class MTRLowPowerAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLowPowerAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLowPowerAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9292,7 +9292,7 @@ class MTRLowPowerAttributeListListAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLowPowerAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLowPowerAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9325,7 +9325,7 @@ class MTRKeypadInputGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9358,7 +9358,7 @@ class MTRKeypadInputAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9390,7 +9390,7 @@ class MTRKeypadInputAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRKeypadInputAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRKeypadInputAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9423,7 +9423,7 @@ class MTRContentLauncherAcceptHeaderListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherAcceptHeaderListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherAcceptHeaderListAttributeCallbackBridge::OnDone;
 
@@ -9456,7 +9456,7 @@ class MTRContentLauncherGeneratedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9489,7 +9489,7 @@ class MTRContentLauncherAcceptedCommandListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9522,7 +9522,7 @@ class MTRContentLauncherAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9554,7 +9554,7 @@ class MTRAudioOutputOutputListListAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAudioOutputOutputListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAudioOutputOutputListListAttributeCallbackBridge::OnDone;
 
@@ -9587,7 +9587,7 @@ class MTRAudioOutputGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9620,7 +9620,7 @@ class MTRAudioOutputAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9652,7 +9652,7 @@ class MTRAudioOutputAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAudioOutputAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAudioOutputAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9685,7 +9685,7 @@ class MTRApplicationLauncherCatalogListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherCatalogListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherCatalogListListAttributeCallbackBridge::OnDone;
 
@@ -9721,7 +9721,7 @@ class MTRApplicationLauncherCurrentAppStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge::OnDone;
 
@@ -9754,7 +9754,7 @@ class MTRApplicationLauncherGeneratedCommandListListAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9787,7 +9787,7 @@ class MTRApplicationLauncherAcceptedCommandListListAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9820,7 +9820,7 @@ class MTRApplicationLauncherAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -9855,7 +9855,7 @@ class MTRApplicationBasicApplicationStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicApplicationStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicApplicationStructAttributeCallbackBridge::OnDone;
 
@@ -9888,7 +9888,7 @@ class MTRApplicationBasicAllowedVendorListListAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge::OnDone;
 
@@ -9921,7 +9921,7 @@ class MTRApplicationBasicGeneratedCommandListListAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9954,7 +9954,7 @@ class MTRApplicationBasicAcceptedCommandListListAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -9987,7 +9987,7 @@ class MTRApplicationBasicAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -10020,7 +10020,7 @@ class MTRAccountLoginGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10053,7 +10053,7 @@ class MTRAccountLoginAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10086,7 +10086,7 @@ class MTRAccountLoginAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccountLoginAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccountLoginAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -10119,7 +10119,7 @@ class MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10152,7 +10152,7 @@ class MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10185,7 +10185,7 @@ class MTRElectricalMeasurementAttributeListListAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRElectricalMeasurementAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRElectricalMeasurementAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -10214,7 +10214,7 @@ class MTRUnitTestingBitmap8AttributeCallbackSubscriptionBridge : public MTRUnitT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingBitmap8AttributeCallbackBridge::OnDone;
 
@@ -10244,7 +10244,7 @@ class MTRUnitTestingBitmap16AttributeCallbackSubscriptionBridge : public MTRUnit
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingBitmap16AttributeCallbackBridge::OnDone;
 
@@ -10274,7 +10274,7 @@ class MTRUnitTestingBitmap32AttributeCallbackSubscriptionBridge : public MTRUnit
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingBitmap32AttributeCallbackBridge::OnDone;
 
@@ -10304,7 +10304,7 @@ class MTRUnitTestingBitmap64AttributeCallbackSubscriptionBridge : public MTRUnit
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingBitmap64AttributeCallbackBridge::OnDone;
 
@@ -10334,7 +10334,7 @@ class MTRUnitTestingListInt8uListAttributeCallbackSubscriptionBridge : public MT
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListInt8uListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListInt8uListAttributeCallbackBridge::OnDone;
 
@@ -10367,7 +10367,7 @@ class MTRUnitTestingListOctetStringListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListOctetStringListAttributeCallbackBridge::OnDone;
 
@@ -10403,7 +10403,7 @@ class MTRUnitTestingListStructOctetStringListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListStructOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListStructOctetStringListAttributeCallbackBridge::OnDone;
 
@@ -10438,7 +10438,7 @@ class MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge::OnDone;
 
@@ -10469,7 +10469,7 @@ class MTRUnitTestingStructAttrStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingStructAttrStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingStructAttrStructAttributeCallbackBridge::OnDone;
 
@@ -10502,7 +10502,7 @@ class MTRUnitTestingListLongOctetStringListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListLongOctetStringListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListLongOctetStringListAttributeCallbackBridge::OnDone;
 
@@ -10538,7 +10538,7 @@ class MTRUnitTestingListFabricScopedListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingListFabricScopedListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingListFabricScopedListAttributeCallbackBridge::OnDone;
 
@@ -10570,7 +10570,7 @@ class MTRUnitTestingNullableBitmap8AttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingNullableBitmap8AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingNullableBitmap8AttributeCallbackBridge::OnDone;
 
@@ -10603,7 +10603,7 @@ class MTRUnitTestingNullableBitmap16AttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingNullableBitmap16AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingNullableBitmap16AttributeCallbackBridge::OnDone;
 
@@ -10636,7 +10636,7 @@ class MTRUnitTestingNullableBitmap32AttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingNullableBitmap32AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingNullableBitmap32AttributeCallbackBridge::OnDone;
 
@@ -10669,7 +10669,7 @@ class MTRUnitTestingNullableBitmap64AttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingNullableBitmap64AttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingNullableBitmap64AttributeCallbackBridge::OnDone;
 
@@ -10704,7 +10704,7 @@ class MTRUnitTestingNullableStructStructAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingNullableStructStructAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingNullableStructStructAttributeCallbackBridge::OnDone;
 
@@ -10737,7 +10737,7 @@ class MTRUnitTestingGeneratedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10770,7 +10770,7 @@ class MTRUnitTestingAcceptedCommandListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
@@ -10802,7 +10802,7 @@ class MTRUnitTestingAttributeListListAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingAttributeListListAttributeCallbackBridge::OnDone;
 
@@ -11620,7 +11620,7 @@ class MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge::OnDone;
 
@@ -11654,7 +11654,7 @@ class MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableIdentifyClusterIdentifyEffectIdentifierAttributeCallbackBridge::OnDone;
 
@@ -11687,7 +11687,7 @@ class MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11721,7 +11721,7 @@ class MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableIdentifyClusterIdentifyEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11754,7 +11754,7 @@ class MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge::OnDone;
 
@@ -11788,7 +11788,7 @@ class MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableIdentifyClusterIdentifyIdentifyTypeAttributeCallbackBridge::OnDone;
 
@@ -11821,7 +11821,7 @@ class MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11857,7 +11857,7 @@ class MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOnOffClusterOnOffDelayedAllOffEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11890,7 +11890,7 @@ class MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11924,7 +11924,7 @@ class MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOnOffClusterOnOffDyingLightEffectVariantAttributeCallbackBridge::OnDone;
 
@@ -11957,7 +11957,7 @@ class MTROnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffClusterOnOffEffectIdentifierAttributeCallbackBridge::OnDone;
 
@@ -11991,7 +11991,7 @@ class MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOnOffClusterOnOffEffectIdentifierAttributeCallbackBridge::OnDone;
 
@@ -12024,7 +12024,7 @@ class MTROnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROnOffClusterOnOffStartUpOnOffAttributeCallbackBridge::OnDone;
 
@@ -12058,7 +12058,7 @@ class MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge::OnDone;
 
@@ -12089,7 +12089,7 @@ class MTRLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLevelControlClusterMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLevelControlClusterMoveModeAttributeCallbackBridge::OnDone;
 
@@ -12123,7 +12123,7 @@ class MTRNullableLevelControlClusterMoveModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableLevelControlClusterMoveModeAttributeCallbackBridge::OnDone;
 
@@ -12154,7 +12154,7 @@ class MTRLevelControlClusterStepModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRLevelControlClusterStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRLevelControlClusterStepModeAttributeCallbackBridge::OnDone;
 
@@ -12188,7 +12188,7 @@ class MTRNullableLevelControlClusterStepModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableLevelControlClusterStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableLevelControlClusterStepModeAttributeCallbackBridge::OnDone;
 
@@ -12220,7 +12220,7 @@ class MTRAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlClusterAuthModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlClusterAuthModeAttributeCallbackBridge::OnDone;
 
@@ -12254,7 +12254,7 @@ class MTRNullableAccessControlClusterAuthModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAccessControlClusterAuthModeAttributeCallbackBridge::OnDone;
 
@@ -12287,7 +12287,7 @@ class MTRAccessControlClusterChangeTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlClusterChangeTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12321,7 +12321,7 @@ class MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAccessControlClusterChangeTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12354,7 +12354,7 @@ class MTRAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAccessControlClusterPrivilegeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAccessControlClusterPrivilegeAttributeCallbackBridge::OnDone;
 
@@ -12388,7 +12388,7 @@ class MTRNullableAccessControlClusterPrivilegeAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAccessControlClusterPrivilegeAttributeCallbackBridge::OnDone;
 
@@ -12421,7 +12421,7 @@ class MTRActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsClusterActionErrorEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsClusterActionErrorEnumAttributeCallbackBridge::OnDone;
 
@@ -12455,7 +12455,7 @@ class MTRNullableActionsClusterActionErrorEnumAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableActionsClusterActionErrorEnumAttributeCallbackBridge::OnDone;
 
@@ -12488,7 +12488,7 @@ class MTRActionsClusterActionStateEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsClusterActionStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsClusterActionStateEnumAttributeCallbackBridge::OnDone;
 
@@ -12522,7 +12522,7 @@ class MTRNullableActionsClusterActionStateEnumAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableActionsClusterActionStateEnumAttributeCallbackBridge::OnDone;
 
@@ -12554,7 +12554,7 @@ class MTRActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsClusterActionTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsClusterActionTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12588,7 +12588,7 @@ class MTRNullableActionsClusterActionTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableActionsClusterActionTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12621,7 +12621,7 @@ class MTRActionsClusterEndpointListTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRActionsClusterEndpointListTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12655,7 +12655,7 @@ class MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableActionsClusterEndpointListTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -12690,7 +12690,7 @@ class MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge::OnDone;
 
@@ -12729,7 +12729,7 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateProviderClusterOTAApplyUpdateActionAttributeCallbackBridge::OnDone;
 
@@ -12763,7 +12763,7 @@ class MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge::OnDone;
 
@@ -12802,7 +12802,7 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCal
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateProviderClusterOTADownloadProtocolAttributeCallbackBridge::OnDone;
 
@@ -12835,7 +12835,7 @@ class MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge::OnDone;
 
@@ -12873,7 +12873,7 @@ class MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallback
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateProviderClusterOTAQueryStatusAttributeCallbackBridge::OnDone;
 
@@ -12909,7 +12909,7 @@ class MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallback
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge::OnDone;
 
@@ -12948,7 +12948,7 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttribute
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAAnnouncementReasonAttributeCallbackBridge::OnDone;
 
@@ -12983,7 +12983,7 @@ class MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge::OnDone;
 
@@ -13022,7 +13022,7 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAChangeReasonEnumAttributeCallbackBridge::OnDone;
 
@@ -13056,7 +13056,7 @@ class MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge::OnDone;
 
@@ -13095,7 +13095,7 @@ class MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCal
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge::OnDone;
 
@@ -13128,7 +13128,7 @@ class MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge::OnDone;
 
@@ -13164,7 +13164,7 @@ class MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge::OnDone;
 
@@ -13197,7 +13197,7 @@ class MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge::OnDone;
 
@@ -13231,7 +13231,7 @@ class MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge::OnDone;
 
@@ -13264,7 +13264,7 @@ class MTRUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge::OnDone;
 
@@ -13298,7 +13298,7 @@ class MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableUnitLocalizationClusterTempUnitAttributeCallbackBridge::OnDone;
 
@@ -13331,7 +13331,7 @@ class MTRPowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterBatChargeFaultAttributeCallbackBridge::OnDone;
 
@@ -13365,7 +13365,7 @@ class MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterBatChargeFaultAttributeCallbackBridge::OnDone;
 
@@ -13398,7 +13398,7 @@ class MTRPowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge::OnDone;
 
@@ -13432,7 +13432,7 @@ class MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterBatChargeLevelAttributeCallbackBridge::OnDone;
 
@@ -13465,7 +13465,7 @@ class MTRPowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge::OnDone;
 
@@ -13499,7 +13499,7 @@ class MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterBatChargeStateAttributeCallbackBridge::OnDone;
 
@@ -13529,7 +13529,7 @@ class MTRPowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterBatFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterBatFaultAttributeCallbackBridge::OnDone;
 
@@ -13563,7 +13563,7 @@ class MTRNullablePowerSourceClusterBatFaultAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterBatFaultAttributeCallbackBridge::OnDone;
 
@@ -13596,7 +13596,7 @@ class MTRPowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge::OnDone;
 
@@ -13630,7 +13630,7 @@ class MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterBatReplaceabilityAttributeCallbackBridge::OnDone;
 
@@ -13663,7 +13663,7 @@ class MTRPowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge::OnDone;
 
@@ -13697,7 +13697,7 @@ class MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterPowerSourceStatusAttributeCallbackBridge::OnDone;
 
@@ -13730,7 +13730,7 @@ class MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge::OnDone;
 
@@ -13764,7 +13764,7 @@ class MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterWiredCurrentTypeAttributeCallbackBridge::OnDone;
 
@@ -13796,7 +13796,7 @@ class MTRPowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPowerSourceClusterWiredFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPowerSourceClusterWiredFaultAttributeCallbackBridge::OnDone;
 
@@ -13830,7 +13830,7 @@ class MTRNullablePowerSourceClusterWiredFaultAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePowerSourceClusterWiredFaultAttributeCallbackBridge::OnDone;
 
@@ -13863,7 +13863,7 @@ class MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge::OnDone;
 
@@ -13900,7 +13900,7 @@ class MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackS
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralCommissioningClusterCommissioningErrorAttributeCallbackBridge::OnDone;
 
@@ -13934,7 +13934,7 @@ class MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge::OnDone;
 
@@ -13973,7 +13973,7 @@ class MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallb
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge::OnDone;
 
@@ -14008,7 +14008,7 @@ class MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackS
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge::OnDone;
 
@@ -14047,7 +14047,7 @@ class MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeC
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge::OnDone;
 
@@ -14080,7 +14080,7 @@ class MTRNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNetworkCommissioningClusterWiFiBandAttributeCallbackBridge::OnDone;
 
@@ -14114,7 +14114,7 @@ class MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableNetworkCommissioningClusterWiFiBandAttributeCallbackBridge::OnDone;
 
@@ -14147,7 +14147,7 @@ class MTRDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsClusterLogsIntentAttributeCallbackBridge::OnDone;
 
@@ -14181,7 +14181,7 @@ class MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDiagnosticLogsClusterLogsIntentAttributeCallbackBridge::OnDone;
 
@@ -14214,7 +14214,7 @@ class MTRDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsClusterLogsStatusAttributeCallbackBridge::OnDone;
 
@@ -14248,7 +14248,7 @@ class MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDiagnosticLogsClusterLogsStatusAttributeCallbackBridge::OnDone;
 
@@ -14281,7 +14281,7 @@ class MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge::OnDone;
 
@@ -14317,7 +14317,7 @@ class MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDiagnosticLogsClusterLogsTransferProtocolAttributeCallbackBridge::OnDone;
 
@@ -14350,7 +14350,7 @@ class MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge::OnDone;
 
@@ -14384,7 +14384,7 @@ class MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralDiagnosticsClusterBootReasonTypeAttributeCallbackBridge::OnDone;
 
@@ -14417,7 +14417,7 @@ class MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14453,7 +14453,7 @@ class MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralDiagnosticsClusterHardwareFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14486,7 +14486,7 @@ class MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge::OnDone;
 
@@ -14520,7 +14520,7 @@ class MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralDiagnosticsClusterInterfaceTypeAttributeCallbackBridge::OnDone;
 
@@ -14553,7 +14553,7 @@ class MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14589,7 +14589,7 @@ class MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralDiagnosticsClusterNetworkFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14622,7 +14622,7 @@ class MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14656,7 +14656,7 @@ class MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGeneralDiagnosticsClusterRadioFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -14689,7 +14689,7 @@ class MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnDone;
 
@@ -14725,7 +14725,7 @@ class MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThreadNetworkDiagnosticsClusterNetworkFaultAttributeCallbackBridge::OnDone;
 
@@ -14758,7 +14758,7 @@ class MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnDone;
 
@@ -14794,7 +14794,7 @@ class MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge::OnDone;
 
@@ -14829,7 +14829,7 @@ class MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackS
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnDone;
 
@@ -14868,7 +14868,7 @@ class MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeC
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThreadNetworkDiagnosticsClusterThreadConnectionStatusAttributeCallbackBridge::OnDone;
 
@@ -14903,7 +14903,7 @@ class MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge::OnDone;
 
@@ -14942,7 +14942,7 @@ class MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCa
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWiFiNetworkDiagnosticsClusterAssociationFailureCauseAttributeCallbackBridge::OnDone;
 
@@ -14975,7 +14975,7 @@ class MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge::OnDone;
 
@@ -15011,7 +15011,7 @@ class MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge::OnDone;
 
@@ -15045,7 +15045,7 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge::OnDone;
 
@@ -15084,7 +15084,7 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallb
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWiFiNetworkDiagnosticsClusterWiFiConnectionStatusAttributeCallbackBridge::OnDone;
 
@@ -15117,7 +15117,7 @@ class MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge::OnDone;
 
@@ -15154,7 +15154,7 @@ class MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge::OnDone;
 
@@ -15187,7 +15187,7 @@ class MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTREthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge::OnDone;
 
@@ -15224,7 +15224,7 @@ class MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge::OnDone;
 
@@ -15257,7 +15257,7 @@ class MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge::OnDone;
 
@@ -15293,7 +15293,7 @@ class MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableTimeSynchronizationClusterGranularityEnumAttributeCallbackBridge::OnDone;
 
@@ -15326,7 +15326,7 @@ class MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge::OnDone;
 
@@ -15360,7 +15360,7 @@ class MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackSubscr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableTimeSynchronizationClusterTimeSourceEnumAttributeCallbackBridge::OnDone;
 
@@ -15397,7 +15397,7 @@ class MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge::OnDone;
 
@@ -15436,7 +15436,7 @@ class MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge::OnDone;
 
@@ -15469,7 +15469,7 @@ class MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge::OnDone;
 
@@ -15505,7 +15505,7 @@ class MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAdministratorCommissioningClusterStatusCodeAttributeCallbackBridge::OnDone;
 
@@ -15539,7 +15539,7 @@ class MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTROperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge::OnDone;
 
@@ -15578,7 +15578,7 @@ class MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCall
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableOperationalCredentialsClusterOperationalCertStatusAttributeCallbackBridge::OnDone;
 
@@ -15611,7 +15611,7 @@ class MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge::OnDone;
 
@@ -15649,7 +15649,7 @@ class MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbac
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyAttributeCallbackBridge::OnDone;
 
@@ -15679,7 +15679,7 @@ class MTRDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlAlarmCodeAttributeCallbackBridge::OnDone;
 
@@ -15713,7 +15713,7 @@ class MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlAlarmCodeAttributeCallbackBridge::OnDone;
 
@@ -15746,7 +15746,7 @@ class MTRDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlCredentialRuleAttributeCallbackBridge::OnDone;
 
@@ -15780,7 +15780,7 @@ class MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlCredentialRuleAttributeCallbackBridge::OnDone;
 
@@ -15813,7 +15813,7 @@ class MTRDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlCredentialTypeAttributeCallbackBridge::OnDone;
 
@@ -15847,7 +15847,7 @@ class MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlCredentialTypeAttributeCallbackBridge::OnDone;
 
@@ -15880,7 +15880,7 @@ class MTRDoorLockClusterDlDataOperationTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlDataOperationTypeAttributeCallbackBridge::OnDone;
 
@@ -15914,7 +15914,7 @@ class MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlDataOperationTypeAttributeCallbackBridge::OnDone;
 
@@ -15944,7 +15944,7 @@ class MTRDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlDoorStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlDoorStateAttributeCallbackBridge::OnDone;
 
@@ -15978,7 +15978,7 @@ class MTRNullableDoorLockClusterDlDoorStateAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge::OnDone;
 
@@ -16011,7 +16011,7 @@ class MTRDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlLockDataTypeAttributeCallbackBridge::OnDone;
 
@@ -16045,7 +16045,7 @@ class MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlLockDataTypeAttributeCallbackBridge::OnDone;
 
@@ -16078,7 +16078,7 @@ class MTRDoorLockClusterDlLockOperationTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlLockOperationTypeAttributeCallbackBridge::OnDone;
 
@@ -16112,7 +16112,7 @@ class MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlLockOperationTypeAttributeCallbackBridge::OnDone;
 
@@ -16142,7 +16142,7 @@ class MTRDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge : public
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlLockStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlLockStateAttributeCallbackBridge::OnDone;
 
@@ -16176,7 +16176,7 @@ class MTRNullableDoorLockClusterDlLockStateAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge::OnDone;
 
@@ -16206,7 +16206,7 @@ class MTRDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlLockTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlLockTypeAttributeCallbackBridge::OnDone;
 
@@ -16240,7 +16240,7 @@ class MTRNullableDoorLockClusterDlLockTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlLockTypeAttributeCallbackBridge::OnDone;
 
@@ -16273,7 +16273,7 @@ class MTRDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge::OnDone;
 
@@ -16307,7 +16307,7 @@ class MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlOperatingModeAttributeCallbackBridge::OnDone;
 
@@ -16340,7 +16340,7 @@ class MTRDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlOperationErrorAttributeCallbackBridge::OnDone;
 
@@ -16374,7 +16374,7 @@ class MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlOperationErrorAttributeCallbackBridge::OnDone;
 
@@ -16407,7 +16407,7 @@ class MTRDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlOperationSourceAttributeCallbackBridge::OnDone;
 
@@ -16441,7 +16441,7 @@ class MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlOperationSourceAttributeCallbackBridge::OnDone;
 
@@ -16471,7 +16471,7 @@ class MTRDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge : public MTR
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlStatusAttributeCallbackBridge::OnDone;
 
@@ -16504,7 +16504,7 @@ class MTRNullableDoorLockClusterDlStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlStatusAttributeCallbackBridge::OnDone;
 
@@ -16535,7 +16535,7 @@ class MTRDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlUserStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlUserStatusAttributeCallbackBridge::OnDone;
 
@@ -16569,7 +16569,7 @@ class MTRNullableDoorLockClusterDlUserStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlUserStatusAttributeCallbackBridge::OnDone;
 
@@ -16599,7 +16599,7 @@ class MTRDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDlUserTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDlUserTypeAttributeCallbackBridge::OnDone;
 
@@ -16633,7 +16633,7 @@ class MTRNullableDoorLockClusterDlUserTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDlUserTypeAttributeCallbackBridge::OnDone;
 
@@ -16666,7 +16666,7 @@ class MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge::OnDone;
 
@@ -16702,7 +16702,7 @@ class MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDoorLockOperationEventCodeAttributeCallbackBridge::OnDone;
 
@@ -16735,7 +16735,7 @@ class MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge::OnDone;
 
@@ -16771,7 +16771,7 @@ class MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDoorLockProgrammingEventCodeAttributeCallbackBridge::OnDone;
 
@@ -16804,7 +16804,7 @@ class MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge::OnDone;
 
@@ -16838,7 +16838,7 @@ class MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDoorLockSetPinOrIdStatusAttributeCallbackBridge::OnDone;
 
@@ -16871,7 +16871,7 @@ class MTRDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDoorLockUserStatusAttributeCallbackBridge::OnDone;
 
@@ -16905,7 +16905,7 @@ class MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackSubscriptionB
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDoorLockUserStatusAttributeCallbackBridge::OnDone;
 
@@ -16938,7 +16938,7 @@ class MTRDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRDoorLockClusterDoorLockUserTypeAttributeCallbackBridge::OnDone;
 
@@ -16972,7 +16972,7 @@ class MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableDoorLockClusterDoorLockUserTypeAttributeCallbackBridge::OnDone;
 
@@ -17005,7 +17005,7 @@ class MTRWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge::OnDone;
 
@@ -17039,7 +17039,7 @@ class MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWindowCoveringClusterEndProductTypeAttributeCallbackBridge::OnDone;
 
@@ -17069,7 +17069,7 @@ class MTRWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge : public M
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRWindowCoveringClusterTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRWindowCoveringClusterTypeAttributeCallbackBridge::OnDone;
 
@@ -17103,7 +17103,7 @@ class MTRNullableWindowCoveringClusterTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableWindowCoveringClusterTypeAttributeCallbackBridge::OnDone;
 
@@ -17137,7 +17137,7 @@ class MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackSubsc
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge::OnDone;
 
@@ -17176,7 +17176,7 @@ class MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallb
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge::OnDone;
 
@@ -17210,7 +17210,7 @@ class MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge::OnDone;
 
@@ -17249,7 +17249,7 @@ class MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCal
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullablePumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge::OnDone;
 
@@ -17282,7 +17282,7 @@ class MTRThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatClusterSetpointAdjustModeAttributeCallbackBridge::OnDone;
 
@@ -17316,7 +17316,7 @@ class MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThermostatClusterSetpointAdjustModeAttributeCallbackBridge::OnDone;
 
@@ -17349,7 +17349,7 @@ class MTRThermostatClusterThermostatControlSequenceAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge::OnDone;
 
@@ -17385,7 +17385,7 @@ class MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackSubs
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThermostatClusterThermostatControlSequenceAttributeCallbackBridge::OnDone;
 
@@ -17418,7 +17418,7 @@ class MTRThermostatClusterThermostatRunningModeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatClusterThermostatRunningModeAttributeCallbackBridge::OnDone;
 
@@ -17452,7 +17452,7 @@ class MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackSubscrip
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThermostatClusterThermostatRunningModeAttributeCallbackBridge::OnDone;
 
@@ -17485,7 +17485,7 @@ class MTRThermostatClusterThermostatSystemModeAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRThermostatClusterThermostatSystemModeAttributeCallbackBridge::OnDone;
 
@@ -17519,7 +17519,7 @@ class MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableThermostatClusterThermostatSystemModeAttributeCallbackBridge::OnDone;
 
@@ -17552,7 +17552,7 @@ class MTRFanControlClusterFanModeSequenceTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge::OnDone;
 
@@ -17586,7 +17586,7 @@ class MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableFanControlClusterFanModeSequenceTypeAttributeCallbackBridge::OnDone;
 
@@ -17618,7 +17618,7 @@ class MTRFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFanControlClusterFanModeTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFanControlClusterFanModeTypeAttributeCallbackBridge::OnDone;
 
@@ -17652,7 +17652,7 @@ class MTRNullableFanControlClusterFanModeTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableFanControlClusterFanModeTypeAttributeCallbackBridge::OnDone;
 
@@ -17685,7 +17685,7 @@ class MTRColorControlClusterColorLoopActionAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterColorLoopActionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterColorLoopActionAttributeCallbackBridge::OnDone;
 
@@ -17719,7 +17719,7 @@ class MTRNullableColorControlClusterColorLoopActionAttributeCallbackSubscription
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterColorLoopActionAttributeCallbackBridge::OnDone;
 
@@ -17752,7 +17752,7 @@ class MTRColorControlClusterColorLoopDirectionAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterColorLoopDirectionAttributeCallbackBridge::OnDone;
 
@@ -17786,7 +17786,7 @@ class MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterColorLoopDirectionAttributeCallbackBridge::OnDone;
 
@@ -17818,7 +17818,7 @@ class MTRColorControlClusterColorModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterColorModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterColorModeAttributeCallbackBridge::OnDone;
 
@@ -17852,7 +17852,7 @@ class MTRNullableColorControlClusterColorModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterColorModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterColorModeAttributeCallbackBridge::OnDone;
 
@@ -17885,7 +17885,7 @@ class MTRColorControlClusterHueDirectionAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterHueDirectionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterHueDirectionAttributeCallbackBridge::OnDone;
 
@@ -17919,7 +17919,7 @@ class MTRNullableColorControlClusterHueDirectionAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterHueDirectionAttributeCallbackBridge::OnDone;
 
@@ -17952,7 +17952,7 @@ class MTRColorControlClusterHueMoveModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterHueMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterHueMoveModeAttributeCallbackBridge::OnDone;
 
@@ -17986,7 +17986,7 @@ class MTRNullableColorControlClusterHueMoveModeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterHueMoveModeAttributeCallbackBridge::OnDone;
 
@@ -18019,7 +18019,7 @@ class MTRColorControlClusterHueStepModeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterHueStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterHueStepModeAttributeCallbackBridge::OnDone;
 
@@ -18053,7 +18053,7 @@ class MTRNullableColorControlClusterHueStepModeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterHueStepModeAttributeCallbackBridge::OnDone;
 
@@ -18086,7 +18086,7 @@ class MTRColorControlClusterSaturationMoveModeAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterSaturationMoveModeAttributeCallbackBridge::OnDone;
 
@@ -18120,7 +18120,7 @@ class MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterSaturationMoveModeAttributeCallbackBridge::OnDone;
 
@@ -18153,7 +18153,7 @@ class MTRColorControlClusterSaturationStepModeAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRColorControlClusterSaturationStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRColorControlClusterSaturationStepModeAttributeCallbackBridge::OnDone;
 
@@ -18187,7 +18187,7 @@ class MTRNullableColorControlClusterSaturationStepModeAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableColorControlClusterSaturationStepModeAttributeCallbackBridge::OnDone;
 
@@ -18220,7 +18220,7 @@ class MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge::OnDone;
 
@@ -18257,7 +18257,7 @@ class MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableIlluminanceMeasurementClusterLightSensorTypeAttributeCallbackBridge::OnDone;
 
@@ -18290,7 +18290,7 @@ class MTRChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelClusterChannelStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelClusterChannelStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18324,7 +18324,7 @@ class MTRNullableChannelClusterChannelStatusEnumAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableChannelClusterChannelStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18357,7 +18357,7 @@ class MTRChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRChannelClusterLineupInfoTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18391,7 +18391,7 @@ class MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableChannelClusterLineupInfoTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18424,7 +18424,7 @@ class MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18462,7 +18462,7 @@ class MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbac
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableTargetNavigatorClusterTargetNavigatorStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18495,7 +18495,7 @@ class MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18531,7 +18531,7 @@ class MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackSub
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableMediaPlaybackClusterMediaPlaybackStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18564,7 +18564,7 @@ class MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscriptionBridg
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge::OnDone;
 
@@ -18598,7 +18598,7 @@ class MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge::OnDone;
 
@@ -18631,7 +18631,7 @@ class MTRMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRMediaInputClusterInputTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18665,7 +18665,7 @@ class MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableMediaInputClusterInputTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18697,7 +18697,7 @@ class MTRKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRKeypadInputClusterCecKeyCodeAttributeCallbackBridge::OnDone;
 
@@ -18731,7 +18731,7 @@ class MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableKeypadInputClusterCecKeyCodeAttributeCallbackBridge::OnDone;
 
@@ -18764,7 +18764,7 @@ class MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscriptionBri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18798,7 +18798,7 @@ class MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackSubscri
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableKeypadInputClusterKeypadInputStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18831,7 +18831,7 @@ class MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackSubscript
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18868,7 +18868,7 @@ class MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackS
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableContentLauncherClusterContentLaunchStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -18901,7 +18901,7 @@ class MTRContentLauncherClusterMetricTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherClusterMetricTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18935,7 +18935,7 @@ class MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableContentLauncherClusterMetricTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -18968,7 +18968,7 @@ class MTRContentLauncherClusterParameterEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRContentLauncherClusterParameterEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRContentLauncherClusterParameterEnumAttributeCallbackBridge::OnDone;
 
@@ -19002,7 +19002,7 @@ class MTRNullableContentLauncherClusterParameterEnumAttributeCallbackSubscriptio
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableContentLauncherClusterParameterEnumAttributeCallbackBridge::OnDone;
 
@@ -19035,7 +19035,7 @@ class MTRAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRAudioOutputClusterOutputTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -19069,7 +19069,7 @@ class MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackSubscriptionBr
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableAudioOutputClusterOutputTypeEnumAttributeCallbackBridge::OnDone;
 
@@ -19105,7 +19105,7 @@ class MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbac
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -19144,7 +19144,7 @@ class MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttribut
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableApplicationLauncherClusterApplicationLauncherStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -19177,7 +19177,7 @@ class MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackSubscripti
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -19214,7 +19214,7 @@ class MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackSu
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge::OnDone;
 
@@ -19246,7 +19246,7 @@ class MTRUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnDone;
 
@@ -19280,7 +19280,7 @@ class MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge::OnDone;
 
@@ -19313,7 +19313,7 @@ class MTRFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBridge
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRFaultInjectionClusterFaultTypeAttributeCallbackBridge::OnDone;
 
@@ -19347,7 +19347,7 @@ class MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackSubscriptionBrid
         mEstablishedHandler(establishedHandler)
     {}
 
-    static void OnSubscriptionEstablished(void * context);
+    void OnSubscriptionEstablished();
     using MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge::KeepAliveOnCallback;
     using MTRNullableFaultInjectionClusterFaultTypeAttributeCallbackBridge::OnDone;
 
diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
index 9ed05837ea22a9..b096079d2328ff 100644
--- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
@@ -66,6 +66,7 @@
 		51E0310027EA20D20083DC9C /* MTRControllerAccessControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E030FE27EA20D20083DC9C /* MTRControllerAccessControl.h */; };
 		51E0310127EA20D20083DC9C /* MTRControllerAccessControl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E030FF27EA20D20083DC9C /* MTRControllerAccessControl.mm */; };
 		51E24E73274E0DAC007CCF6E /* MTRErrorTestUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E24E72274E0DAC007CCF6E /* MTRErrorTestUtils.mm */; };
+		51E4D121291D0EB400C8C535 /* MTRBaseClustersCpp_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E4D120291D0EB400C8C535 /* MTRBaseClustersCpp_Internal.h */; };
 		51E51FBF282AD37A00FC978D /* MTRDeviceControllerStartupParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E51FBC282AD37A00FC978D /* MTRDeviceControllerStartupParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		51E51FC0282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E51FBD282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h */; };
 		51E51FC1282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E51FBE282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm */; };
@@ -207,6 +208,7 @@
 		51E030FE27EA20D20083DC9C /* MTRControllerAccessControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRControllerAccessControl.h; sourceTree = ""; };
 		51E030FF27EA20D20083DC9C /* MTRControllerAccessControl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRControllerAccessControl.mm; sourceTree = ""; };
 		51E24E72274E0DAC007CCF6E /* MTRErrorTestUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRErrorTestUtils.mm; sourceTree = ""; };
+		51E4D120291D0EB400C8C535 /* MTRBaseClustersCpp_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRBaseClustersCpp_Internal.h; sourceTree = ""; };
 		51E51FBC282AD37A00FC978D /* MTRDeviceControllerStartupParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerStartupParams.h; sourceTree = ""; };
 		51E51FBD282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerStartupParams_Internal.h; sourceTree = ""; };
 		51E51FBE282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDeviceControllerStartupParams.mm; sourceTree = ""; };
@@ -456,6 +458,7 @@
 				3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */,
 				511913FA28C100EF009235E9 /* MTRBaseSubscriptionCallback.h */,
 				511913F928C100EF009235E9 /* MTRBaseSubscriptionCallback.mm */,
+				51E4D120291D0EB400C8C535 /* MTRBaseClustersCpp_Internal.h */,
 			);
 			path = CHIP;
 			sourceTree = "";
@@ -553,6 +556,7 @@
 				1EC4CE6425CC276600D7304F /* MTRBaseClusters.h in Headers */,
 				2C5EEEF6268A85C400CAE3D3 /* MTRDeviceConnectionBridge.h in Headers */,
 				2C8C8FC0253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.h in Headers */,
+				51E4D121291D0EB400C8C535 /* MTRBaseClustersCpp_Internal.h in Headers */,
 				51E51FC0282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h in Headers */,
 				998F286F26D55EC5001846C6 /* MTRP256KeypairBridge.h in Headers */,
 				2C222ADF255C811800E446B9 /* MTRBaseDevice_Internal.h in Headers */,

From 0d9014d08519446908a15de00bd48c1322746425 Mon Sep 17 00:00:00 2001
From: Jean-Francois Penven <67962328+jepenven-silabs@users.noreply.github.com>
Date: Wed, 16 Nov 2022 23:16:14 +0100
Subject: [PATCH 11/36] Check Server Init error (#23641)

Fix return code for KVS
---
 examples/platform/efr32/matter_config.cpp       | 6 +++++-
 src/platform/EFR32/KeyValueStoreManagerImpl.cpp | 5 +++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/examples/platform/efr32/matter_config.cpp b/examples/platform/efr32/matter_config.cpp
index 1102db5465f430..d12a048a7d245d 100644
--- a/examples/platform/efr32/matter_config.cpp
+++ b/examples/platform/efr32/matter_config.cpp
@@ -130,6 +130,8 @@ void EFR32MatterConfig::ConnectivityEventCallback(const ChipDeviceEvent * event,
 
 CHIP_ERROR EFR32MatterConfig::InitMatter(const char * appName)
 {
+    CHIP_ERROR err;
+
     mbedtls_platform_set_calloc_free(CHIPPlatformMemoryCalloc, CHIPPlatformMemoryFree);
 
     EFR32_LOG("==================================================");
@@ -186,9 +188,11 @@ CHIP_ERROR EFR32MatterConfig::InitMatter(const char * appName)
 #endif
 
     // Init Matter Server and Start Event Loop
-    chip::Server::GetInstance().Init(initParams);
+    err = chip::Server::GetInstance().Init(initParams);
     chip::DeviceLayer::PlatformMgr().UnlockChipStack();
 
+    ReturnErrorOnFailure(err);
+
     // OTA Requestor initialization will be triggered by the connectivity events
     PlatformMgr().AddEventHandler(ConnectivityEventCallback, reinterpret_cast(nullptr));
 
diff --git a/src/platform/EFR32/KeyValueStoreManagerImpl.cpp b/src/platform/EFR32/KeyValueStoreManagerImpl.cpp
index febb618aee41de..a7f75af4006592 100644
--- a/src/platform/EFR32/KeyValueStoreManagerImpl.cpp
+++ b/src/platform/EFR32/KeyValueStoreManagerImpl.cpp
@@ -144,6 +144,11 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t
         *read_bytes_size = outLen;
     }
 
+    if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND)
+    {
+        return CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND;
+    }
+
     return err;
 }
 

From 361c74d41eb1ed6477bc12c3bf5f7e0adcbf9c3e Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Wed, 16 Nov 2022 17:56:19 -0500
Subject: [PATCH 12/36] Stop using InvokeInteraction APIs for Darwin framework
 invokes. (#23640)

This reduces Darwin build CI times from ~1 hour 20 mins to ~1 hour and
reduces the size of a release unstripped framework from ~300MB to ~250MB.
---
 .../CHIP/MTRBaseClustersCpp_Internal.h        | 143 +++
 .../CHIP/templates/MTRBaseClusters-src.zapt   |   4 +-
 .../CHIP/zap-generated/MTRBaseClusters.mm     | 930 +++++++++++-------
 3 files changed, 703 insertions(+), 374 deletions(-)

diff --git a/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h b/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h
index cdb2ab72a70f70..4446eba34cba44 100644
--- a/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h
+++ b/src/darwin/Framework/CHIP/MTRBaseClustersCpp_Internal.h
@@ -19,7 +19,9 @@
 #import "MTRCluster_internal.h"
 #import "zap-generated/MTRCallbackBridge_internal.h"
 
+#include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -260,4 +262,145 @@ void MTRReadAttribute(MTRReadParams * _Nonnull params,
     std::move(*callbackBridge).DispatchAction(device);
 }
 
+/**
+ * Utility functions base clusters use for doing commands.
+ */
+template  class MTRInvokeCallback : public chip::app::CommandSender::Callback {
+public:
+    MTRInvokeCallback(InvokeBridgeType * _Nonnull bridge, typename InvokeBridgeType::SuccessCallbackType _Nonnull onResponse,
+        MTRErrorCallback _Nonnull onError)
+        : mBridge(bridge)
+        , mOnResponse(onResponse)
+        , mOnError(onError)
+    {
+    }
+
+    ~MTRInvokeCallback() {}
+
+    void AdoptCommandSender(chip::Platform::UniquePtr commandSender)
+    {
+        mCommandSender = std::move(commandSender);
+    }
+
+protected:
+    // We need to have different OnResponse implementations depending on whether
+    // ResponseType is DataModel::NullObjectType or not.  Since template class methods
+    // can't be partially specialized (either you have to partially specialize
+    // the class template, or you have to fully specialize the method), use
+    // enable_if to deal with this.
+    void OnResponse(chip::app::CommandSender * commandSender, const chip::app::ConcreteCommandPath & commandPath,
+        const chip::app::StatusIB & status, chip::TLV::TLVReader * reader) override
+    {
+        HandleResponse(commandSender, commandPath, status, reader);
+    }
+
+    /**
+     * Response handler for data responses.
+     */
+    template ::value, int> = 0>
+    void HandleResponse(chip::app::CommandSender * commandSender, const chip::app::ConcreteCommandPath & commandPath,
+        const chip::app::StatusIB & status, chip::TLV::TLVReader * reader)
+    {
+        if (mCalledCallback) {
+            return;
+        }
+        mCalledCallback = true;
+
+        ResponseType response;
+        CHIP_ERROR err = CHIP_NO_ERROR;
+
+        //
+        // We're expecting response data in this variant of OnResponse. Consequently, reader should always be
+        // non-null. If it is, it means we received a success status code instead, which is not what was expected.
+        //
+        VerifyOrExit(reader != nullptr, err = CHIP_ERROR_SCHEMA_MISMATCH);
+
+        //
+        // Validate that the data response we received matches what we expect in terms of its cluster and command IDs.
+        //
+        VerifyOrExit(
+            commandPath.mClusterId == ResponseType::GetClusterId() && commandPath.mCommandId == ResponseType::GetCommandId(),
+            err = CHIP_ERROR_SCHEMA_MISMATCH);
+
+        err = chip::app::DataModel::Decode(*reader, response);
+        SuccessOrExit(err);
+
+        mOnResponse(mBridge, response);
+
+    exit:
+        if (err != CHIP_NO_ERROR) {
+            mOnError(mBridge, err);
+        }
+    }
+
+    /**
+     * Response handler for status responses.
+     */
+    template ::value, int> = 0>
+    void HandleResponse(chip::app::CommandSender * commandSender, const chip::app::ConcreteCommandPath & commandPath,
+        const chip::app::StatusIB & status, chip::TLV::TLVReader * reader)
+    {
+        if (mCalledCallback) {
+            return;
+        }
+        mCalledCallback = true;
+
+        //
+        // If we got a valid reader, it means we received response data that we were not expecting to receive.
+        //
+        if (reader != nullptr) {
+            mOnError(mBridge, CHIP_ERROR_SCHEMA_MISMATCH);
+            return;
+        }
+
+        chip::app::DataModel::NullObjectType nullResp;
+        mOnResponse(mBridge, nullResp);
+    }
+
+    void OnError(const chip::app::CommandSender * commandSender, CHIP_ERROR error) override
+    {
+        if (mCalledCallback) {
+            return;
+        }
+        mCalledCallback = true;
+
+        mOnError(mBridge, error);
+    }
+
+    void OnDone(chip::app::CommandSender * commandSender) override { chip::Platform::Delete(this); }
+
+    InvokeBridgeType * _Nonnull mBridge;
+
+    typename InvokeBridgeType::SuccessCallbackType mOnResponse;
+    MTRErrorCallback mOnError;
+    chip::Platform::UniquePtr mCommandSender;
+    // For reads, we ensure that we make only one data/error callback to our consumer.
+    bool mCalledCallback = false;
+};
+
+template 
+CHIP_ERROR MTRStartInvokeInteraction(BridgeType * _Nonnull bridge, const RequestDataType & requestData,
+    chip::Messaging::ExchangeManager & exchangeManager, const chip::SessionHandle & session,
+    typename BridgeType::SuccessCallbackType successCb, MTRErrorCallback failureCb, chip::EndpointId endpoint,
+    chip::Optional timedInvokeTimeoutMs)
+{
+    auto callback = chip::Platform::MakeUnique>(
+        bridge, successCb, failureCb);
+    VerifyOrReturnError(callback != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    auto commandSender
+        = chip::Platform::MakeUnique(callback.get(), &exchangeManager, timedInvokeTimeoutMs.HasValue());
+    VerifyOrReturnError(commandSender != nullptr, CHIP_ERROR_NO_MEMORY);
+
+    chip::app::CommandPathParams commandPath(endpoint, 0, RequestDataType::GetClusterId(), RequestDataType::GetCommandId(),
+        chip::app::CommandPathFlags::kEndpointIdValid);
+    ReturnErrorOnFailure(commandSender->AddRequestData(commandPath, requestData, timedInvokeTimeoutMs));
+    ReturnErrorOnFailure(commandSender->SendCommandRequest(session));
+
+    callback->AdoptCommandSender(std::move(commandSender));
+    callback.release();
+
+    return CHIP_NO_ERROR;
+};
+
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
index bc06e3058ffb39..96a4fc511dd312 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
@@ -67,6 +67,7 @@ using chip::SessionHandle;
         },
       {{/if}}
       ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>callbackName}}CallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+        auto * typedBridge = static_castcallbackName}}CallbackBridge *>(bridge);
         chip::Optional timedInvokeTimeoutMs;
         ListFreer listFreer;
         {{asUpperCamelCase parent.name}}::Commands::{{asUpperCamelCase name}}::Type request;
@@ -94,8 +95,7 @@ using chip::SessionHandle;
           {{/last}}
         {{/chip_cluster_command_arguments}}
 
-        chip::Controller::{{asUpperCamelCase parent.name}}Cluster cppCluster(exchangeManager, session, self->_endpoint);
-        return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+        return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
     });
     std::move(*bridge).DispatchAction(self.device);
 }
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index ae1b56fe6c2e1d..58ebfb94160ee6 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -64,6 +64,7 @@ - (void)identifyWithParams:(MTRIdentifyClusterIdentifyParams *)params completion
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Identify::Commands::Identify::Type request;
@@ -74,8 +75,8 @@ - (void)identifyWithParams:(MTRIdentifyClusterIdentifyParams *)params completion
             }
             request.identifyTime = params.identifyTime.unsignedShortValue;
 
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -91,6 +92,7 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Identify::Commands::TriggerEffect::Type request;
@@ -104,8 +106,8 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params
             request.effectVariant
                 = static_cast>(params.effectVariant.unsignedCharValue);
 
-            chip::Controller::IdentifyCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -806,6 +808,7 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params
     auto * bridge = new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterAddGroupResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::AddGroup::Type request;
@@ -817,8 +820,8 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params
             request.groupId = params.groupId.unsignedShortValue;
             request.groupName = [self asCharSpan:params.groupName];
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -832,6 +835,7 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
     auto * bridge = new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterViewGroupResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::ViewGroup::Type request;
@@ -842,8 +846,8 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
             }
             request.groupId = params.groupId.unsignedShortValue;
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -858,6 +862,7 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GroupsClusterGetGroupMembershipResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::GetGroupMembership::Type request;
@@ -889,8 +894,8 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *
                 }
             }
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -904,6 +909,7 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
     auto * bridge = new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterRemoveGroupResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::RemoveGroup::Type request;
@@ -914,8 +920,8 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
             }
             request.groupId = params.groupId.unsignedShortValue;
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -936,6 +942,7 @@ - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Null
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::RemoveAllGroups::Type request;
@@ -945,8 +952,8 @@ - (void)removeAllGroupsWithParams:(MTRGroupsClusterRemoveAllGroupsParams * _Null
                 }
             }
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -963,6 +970,7 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Groups::Commands::AddGroupIfIdentifying::Type request;
@@ -974,8 +982,8 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa
             request.groupId = params.groupId.unsignedShortValue;
             request.groupName = [self asCharSpan:params.groupName];
 
-            chip::Controller::GroupsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1589,6 +1597,7 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params
     auto * bridge = new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterAddSceneResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::AddScene::Type request;
@@ -1675,8 +1684,8 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params
                 }
             }
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1690,6 +1699,7 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
     auto * bridge = new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterViewSceneResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::ViewScene::Type request;
@@ -1701,8 +1711,8 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
             request.groupId = params.groupId.unsignedShortValue;
             request.sceneId = params.sceneId.unsignedCharValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1716,6 +1726,7 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
     auto * bridge = new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterRemoveSceneResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::RemoveScene::Type request;
@@ -1727,8 +1738,8 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
             request.groupId = params.groupId.unsignedShortValue;
             request.sceneId = params.sceneId.unsignedCharValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1743,6 +1754,7 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ScenesClusterRemoveAllScenesResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::RemoveAllScenes::Type request;
@@ -1753,8 +1765,8 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param
             }
             request.groupId = params.groupId.unsignedShortValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1768,6 +1780,7 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
     auto * bridge = new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterStoreSceneResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::StoreScene::Type request;
@@ -1779,8 +1792,8 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
             request.groupId = params.groupId.unsignedShortValue;
             request.sceneId = params.sceneId.unsignedCharValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1796,6 +1809,7 @@ - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params comple
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::RecallScene::Type request;
@@ -1816,8 +1830,8 @@ - (void)recallSceneWithParams:(MTRScenesClusterRecallSceneParams *)params comple
                 }
             }
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1832,6 +1846,7 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ScenesClusterGetSceneMembershipResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::GetSceneMembership::Type request;
@@ -1842,8 +1857,8 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *
             }
             request.groupId = params.groupId.unsignedShortValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1858,6 +1873,7 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ScenesClusterEnhancedAddSceneResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::EnhancedAddScene::Type request;
@@ -1944,8 +1960,8 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par
                 }
             }
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1960,6 +1976,7 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ScenesClusterEnhancedViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::EnhancedViewScene::Type request;
@@ -1971,8 +1988,8 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p
             request.groupId = params.groupId.unsignedShortValue;
             request.sceneId = params.sceneId.unsignedCharValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -1986,6 +2003,7 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
     auto * bridge = new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterCopySceneResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Scenes::Commands::CopyScene::Type request;
@@ -2000,8 +2018,8 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
             request.groupIdTo = params.groupIdTo.unsignedShortValue;
             request.sceneIdTo = params.sceneIdTo.unsignedCharValue;
 
-            chip::Controller::ScenesCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3087,6 +3105,7 @@ - (void)offWithParams:(MTROnOffClusterOffParams * _Nullable)params completion:(M
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::Off::Type request;
@@ -3096,8 +3115,8 @@ - (void)offWithParams:(MTROnOffClusterOffParams * _Nullable)params completion:(M
                 }
             }
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3117,6 +3136,7 @@ - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params completion:(MTR
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::On::Type request;
@@ -3126,8 +3146,8 @@ - (void)onWithParams:(MTROnOffClusterOnParams * _Nullable)params completion:(MTR
                 }
             }
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3147,6 +3167,7 @@ - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params complet
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::Toggle::Type request;
@@ -3156,8 +3177,8 @@ - (void)toggleWithParams:(MTROnOffClusterToggleParams * _Nullable)params complet
                 }
             }
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3173,6 +3194,7 @@ - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params com
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::OffWithEffect::Type request;
@@ -3185,8 +3207,8 @@ - (void)offWithEffectWithParams:(MTROnOffClusterOffWithEffectParams *)params com
             request.effectVariant
                 = static_cast>(params.effectVariant.unsignedCharValue);
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3207,6 +3229,7 @@ - (void)onWithRecallGlobalSceneWithParams:(MTROnOffClusterOnWithRecallGlobalScen
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::OnWithRecallGlobalScene::Type request;
@@ -3216,8 +3239,8 @@ - (void)onWithRecallGlobalSceneWithParams:(MTROnOffClusterOnWithRecallGlobalScen
                 }
             }
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -3233,6 +3256,7 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params c
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OnOff::Commands::OnWithTimedOff::Type request;
@@ -3246,8 +3270,8 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params c
             request.onTime = params.onTime.unsignedShortValue;
             request.offWaitTime = params.offWaitTime.unsignedShortValue;
 
-            chip::Controller::OnOffCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5019,6 +5043,7 @@ - (void)moveToLevelWithParams:(MTRLevelControlClusterMoveToLevelParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::MoveToLevel::Type request;
@@ -5037,8 +5062,8 @@ - (void)moveToLevelWithParams:(MTRLevelControlClusterMoveToLevelParams *)params
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5054,6 +5079,7 @@ - (void)moveWithParams:(MTRLevelControlClusterMoveParams *)params completion:(MT
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::Move::Type request;
@@ -5072,8 +5098,8 @@ - (void)moveWithParams:(MTRLevelControlClusterMoveParams *)params completion:(MT
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5089,6 +5115,7 @@ - (void)stepWithParams:(MTRLevelControlClusterStepParams *)params completion:(MT
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::Step::Type request;
@@ -5108,8 +5135,8 @@ - (void)stepWithParams:(MTRLevelControlClusterStepParams *)params completion:(MT
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5125,6 +5152,7 @@ - (void)stopWithParams:(MTRLevelControlClusterStopParams *)params completion:(MT
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::Stop::Type request;
@@ -5136,8 +5164,8 @@ - (void)stopWithParams:(MTRLevelControlClusterStopParams *)params completion:(MT
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5154,6 +5182,7 @@ - (void)moveToLevelWithOnOffWithParams:(MTRLevelControlClusterMoveToLevelWithOnO
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::MoveToLevelWithOnOff::Type request;
@@ -5172,8 +5201,8 @@ - (void)moveToLevelWithOnOffWithParams:(MTRLevelControlClusterMoveToLevelWithOnO
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5189,6 +5218,7 @@ - (void)moveWithOnOffWithParams:(MTRLevelControlClusterMoveWithOnOffParams *)par
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::MoveWithOnOff::Type request;
@@ -5207,8 +5237,8 @@ - (void)moveWithOnOffWithParams:(MTRLevelControlClusterMoveWithOnOffParams *)par
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5224,6 +5254,7 @@ - (void)stepWithOnOffWithParams:(MTRLevelControlClusterStepWithOnOffParams *)par
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::StepWithOnOff::Type request;
@@ -5243,8 +5274,8 @@ - (void)stepWithOnOffWithParams:(MTRLevelControlClusterStepWithOnOffParams *)par
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5260,6 +5291,7 @@ - (void)stopWithOnOffWithParams:(MTRLevelControlClusterStopWithOnOffParams *)par
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::StopWithOnOff::Type request;
@@ -5271,8 +5303,8 @@ - (void)stopWithOnOffWithParams:(MTRLevelControlClusterStopWithOnOffParams *)par
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -5289,6 +5321,7 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LevelControl::Commands::MoveToClosestFrequency::Type request;
@@ -5299,8 +5332,8 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre
             }
             request.frequency = params.frequency.unsignedShortValue;
 
-            chip::Controller::LevelControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11432,6 +11465,7 @@ - (void)instantActionWithParams:(MTRActionsClusterInstantActionParams *)params c
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::InstantAction::Type request;
@@ -11446,8 +11480,8 @@ - (void)instantActionWithParams:(MTRActionsClusterInstantActionParams *)params c
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11464,6 +11498,7 @@ - (void)instantActionWithTransitionWithParams:(MTRActionsClusterInstantActionWit
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::InstantActionWithTransition::Type request;
@@ -11479,8 +11514,8 @@ - (void)instantActionWithTransitionWithParams:(MTRActionsClusterInstantActionWit
             }
             request.transitionTime = params.transitionTime.unsignedShortValue;
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11496,6 +11531,7 @@ - (void)startActionWithParams:(MTRActionsClusterStartActionParams *)params compl
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::StartAction::Type request;
@@ -11510,8 +11546,8 @@ - (void)startActionWithParams:(MTRActionsClusterStartActionParams *)params compl
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11528,6 +11564,7 @@ - (void)startActionWithDurationWithParams:(MTRActionsClusterStartActionWithDurat
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::StartActionWithDuration::Type request;
@@ -11543,8 +11580,8 @@ - (void)startActionWithDurationWithParams:(MTRActionsClusterStartActionWithDurat
             }
             request.duration = params.duration.unsignedIntValue;
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11560,6 +11597,7 @@ - (void)stopActionWithParams:(MTRActionsClusterStopActionParams *)params complet
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::StopAction::Type request;
@@ -11574,8 +11612,8 @@ - (void)stopActionWithParams:(MTRActionsClusterStopActionParams *)params complet
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11591,6 +11629,7 @@ - (void)pauseActionWithParams:(MTRActionsClusterPauseActionParams *)params compl
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::PauseAction::Type request;
@@ -11605,8 +11644,8 @@ - (void)pauseActionWithParams:(MTRActionsClusterPauseActionParams *)params compl
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11623,6 +11662,7 @@ - (void)pauseActionWithDurationWithParams:(MTRActionsClusterPauseActionWithDurat
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::PauseActionWithDuration::Type request;
@@ -11638,8 +11678,8 @@ - (void)pauseActionWithDurationWithParams:(MTRActionsClusterPauseActionWithDurat
             }
             request.duration = params.duration.unsignedIntValue;
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11655,6 +11695,7 @@ - (void)resumeActionWithParams:(MTRActionsClusterResumeActionParams *)params com
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::ResumeAction::Type request;
@@ -11669,8 +11710,8 @@ - (void)resumeActionWithParams:(MTRActionsClusterResumeActionParams *)params com
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11686,6 +11727,7 @@ - (void)enableActionWithParams:(MTRActionsClusterEnableActionParams *)params com
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::EnableAction::Type request;
@@ -11700,8 +11742,8 @@ - (void)enableActionWithParams:(MTRActionsClusterEnableActionParams *)params com
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11718,6 +11760,7 @@ - (void)enableActionWithDurationWithParams:(MTRActionsClusterEnableActionWithDur
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::EnableActionWithDuration::Type request;
@@ -11733,8 +11776,8 @@ - (void)enableActionWithDurationWithParams:(MTRActionsClusterEnableActionWithDur
             }
             request.duration = params.duration.unsignedIntValue;
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11750,6 +11793,7 @@ - (void)disableActionWithParams:(MTRActionsClusterDisableActionParams *)params c
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::DisableAction::Type request;
@@ -11764,8 +11808,8 @@ - (void)disableActionWithParams:(MTRActionsClusterDisableActionParams *)params c
                 definedValue_0 = params.invokeID.unsignedIntValue;
             }
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -11782,6 +11826,7 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Actions::Commands::DisableActionWithDuration::Type request;
@@ -11797,8 +11842,8 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD
             }
             request.duration = params.duration.unsignedIntValue;
 
-            chip::Controller::ActionsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -12591,6 +12636,7 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Basic::Commands::MfgSpecificPing::Type request;
@@ -12600,8 +12646,8 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla
                 }
             }
 
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -14946,6 +14992,7 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OtaSoftwareUpdateProviderClusterQueryImageResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OtaSoftwareUpdateProvider::Commands::QueryImage::Type request;
@@ -14997,8 +15044,8 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam
                 definedValue_0 = [self asByteSpan:params.metadataForProvider];
             }
 
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -15013,6 +15060,7 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OtaSoftwareUpdateProvider::Commands::ApplyUpdateRequest::Type request;
@@ -15024,8 +15072,8 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp
             request.updateToken = [self asByteSpan:params.updateToken];
             request.newVersion = params.newVersion.unsignedIntValue;
 
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -15042,6 +15090,7 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OtaSoftwareUpdateProvider::Commands::NotifyUpdateApplied::Type request;
@@ -15053,8 +15102,8 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify
             request.updateToken = [self asByteSpan:params.updateToken];
             request.softwareVersion = params.softwareVersion.unsignedIntValue;
 
-            chip::Controller::OtaSoftwareUpdateProviderCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -15564,6 +15613,7 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OtaSoftwareUpdateRequestor::Commands::AnnounceOtaProvider::Type request;
@@ -15582,8 +15632,8 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou
             }
             request.endpoint = params.endpoint.unsignedShortValue;
 
-            chip::Controller::OtaSoftwareUpdateRequestorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -22320,6 +22370,7 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams *
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GeneralCommissioningClusterArmFailSafeResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GeneralCommissioning::Commands::ArmFailSafe::Type request;
@@ -22331,8 +22382,8 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams *
             request.expiryLengthSeconds = params.expiryLengthSeconds.unsignedShortValue;
             request.breadcrumb = params.breadcrumb.unsignedLongLongValue;
 
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -22347,6 +22398,7 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GeneralCommissioningClusterSetRegulatoryConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GeneralCommissioning::Commands::SetRegulatoryConfig::Type request;
@@ -22360,8 +22412,8 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato
             request.countryCode = [self asCharSpan:params.countryCode];
             request.breadcrumb = params.breadcrumb.unsignedLongLongValue;
 
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -22383,6 +22435,7 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GeneralCommissioningClusterCommissioningCompleteResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GeneralCommissioning::Commands::CommissioningComplete::Type request;
@@ -22392,8 +22445,8 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
                 }
             }
 
-            chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23425,6 +23478,7 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterScanNetworksResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::ScanNetworks::Type request;
@@ -23449,8 +23503,8 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams
                 }
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23465,6 +23519,7 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::AddOrUpdateWiFiNetwork::Type request;
@@ -23480,8 +23535,8 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd
                 definedValue_0 = params.breadcrumb.unsignedLongLongValue;
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23496,6 +23551,7 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::AddOrUpdateThreadNetwork::Type request;
@@ -23510,8 +23566,8 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU
                 definedValue_0 = params.breadcrumb.unsignedLongLongValue;
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23526,6 +23582,7 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::RemoveNetwork::Type request;
@@ -23540,8 +23597,8 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara
                 definedValue_0 = params.breadcrumb.unsignedLongLongValue;
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23556,6 +23613,7 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterConnectNetworkResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::ConnectNetwork::Type request;
@@ -23570,8 +23628,8 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa
                 definedValue_0 = params.breadcrumb.unsignedLongLongValue;
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -23586,6 +23644,7 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             NetworkCommissioning::Commands::ReorderNetwork::Type request;
@@ -23601,8 +23660,8 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
                 definedValue_0 = params.breadcrumb.unsignedLongLongValue;
             }
 
-            chip::Controller::NetworkCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -24897,6 +24956,7 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DiagnosticLogsClusterRetrieveLogsResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DiagnosticLogs::Commands::RetrieveLogsRequest::Type request;
@@ -24910,8 +24970,8 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
                 params.requestedProtocol.unsignedCharValue);
             request.transferFileDesignator = [self asByteSpan:params.transferFileDesignator];
 
-            chip::Controller::DiagnosticLogsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -25402,6 +25462,7 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GeneralDiagnostics::Commands::TestEventTrigger::Type request;
@@ -25413,8 +25474,8 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger
             request.enableKey = [self asByteSpan:params.enableKey];
             request.eventTrigger = params.eventTrigger.unsignedLongLongValue;
 
-            chip::Controller::GeneralDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -26689,6 +26750,7 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             SoftwareDiagnostics::Commands::ResetWatermarks::Type request;
@@ -26698,8 +26760,8 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP
                 }
             }
 
-            chip::Controller::SoftwareDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -27541,6 +27603,7 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ThreadNetworkDiagnostics::Commands::ResetCounts::Type request;
@@ -27550,8 +27613,8 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara
                 }
             }
 
-            chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -33555,6 +33618,7 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WiFiNetworkDiagnostics::Commands::ResetCounts::Type request;
@@ -33564,8 +33628,8 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams
                 }
             }
 
-            chip::Controller::WiFiNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -35187,6 +35251,7 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             EthernetNetworkDiagnostics::Commands::ResetCounts::Type request;
@@ -35196,8 +35261,8 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa
                 }
             }
 
-            chip::Controller::EthernetNetworkDiagnosticsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -38965,6 +39030,7 @@ - (void)openCommissioningWindowWithParams:(MTRAdministratorCommissioningClusterO
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AdministratorCommissioning::Commands::OpenCommissioningWindow::Type request;
@@ -38982,8 +39048,8 @@ - (void)openCommissioningWindowWithParams:(MTRAdministratorCommissioningClusterO
             request.iterations = params.iterations.unsignedIntValue;
             request.salt = [self asByteSpan:params.salt];
 
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39000,6 +39066,7 @@ - (void)openBasicCommissioningWindowWithParams:(MTRAdministratorCommissioningClu
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type request;
@@ -39013,8 +39080,8 @@ - (void)openBasicCommissioningWindowWithParams:(MTRAdministratorCommissioningClu
             }
             request.commissioningTimeout = params.commissioningTimeout.unsignedShortValue;
 
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39035,6 +39102,7 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AdministratorCommissioning::Commands::RevokeCommissioning::Type request;
@@ -39047,8 +39115,8 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok
                 timedInvokeTimeoutMs.SetValue(10000);
             }
 
-            chip::Controller::AdministratorCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39807,6 +39875,7 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterAttestationResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::AttestationRequest::Type request;
@@ -39817,8 +39886,8 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio
             }
             request.attestationNonce = [self asByteSpan:params.attestationNonce];
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39833,6 +39902,7 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterCertificateChainResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::CertificateChainRequest::Type request;
@@ -39843,8 +39913,8 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti
             }
             request.certificateType = params.certificateType.unsignedCharValue;
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39859,6 +39929,7 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterCSRResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::CSRRequest::Type request;
@@ -39873,8 +39944,8 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *
                 definedValue_0 = params.isForUpdateNOC.boolValue;
             }
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39889,6 +39960,7 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::AddNOC::Type request;
@@ -39907,8 +39979,8 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
             request.adminVendorId
                 = static_cast>(params.adminVendorId.unsignedShortValue);
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39923,6 +39995,7 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::UpdateNOC::Type request;
@@ -39937,8 +40010,8 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p
                 definedValue_0 = [self asByteSpan:params.icacValue];
             }
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39953,6 +40026,7 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::UpdateFabricLabel::Type request;
@@ -39963,8 +40037,8 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri
             }
             request.label = [self asCharSpan:params.label];
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -39979,6 +40053,7 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::RemoveFabric::Type request;
@@ -39989,8 +40064,8 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara
             }
             request.fabricIndex = params.fabricIndex.unsignedCharValue;
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -40007,6 +40082,7 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             OperationalCredentials::Commands::AddTrustedRootCertificate::Type request;
@@ -40017,8 +40093,8 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
             }
             request.rootCertificate = [self asByteSpan:params.rootCertificate];
 
-            chip::Controller::OperationalCredentialsCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -41110,6 +41186,7 @@ - (void)keySetWriteWithParams:(MTRGroupKeyManagementClusterKeySetWriteParams *)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GroupKeyManagement::Commands::KeySetWrite::Type request;
@@ -41159,8 +41236,8 @@ - (void)keySetWriteWithParams:(MTRGroupKeyManagementClusterKeySetWriteParams *)p
                 nonNullValue_1 = params.groupKeySet.epochStartTime2.unsignedLongLongValue;
             }
 
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -41175,6 +41252,7 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GroupKeyManagementClusterKeySetReadResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GroupKeyManagement::Commands::KeySetRead::Type request;
@@ -41185,8 +41263,8 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par
             }
             request.groupKeySetID = params.groupKeySetID.unsignedShortValue;
 
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -41202,6 +41280,7 @@ - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams *
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GroupKeyManagement::Commands::KeySetRemove::Type request;
@@ -41212,8 +41291,8 @@ - (void)keySetRemoveWithParams:(MTRGroupKeyManagementClusterKeySetRemoveParams *
             }
             request.groupKeySetID = params.groupKeySetID.unsignedShortValue;
 
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -41228,6 +41307,7 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             GroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             GroupKeyManagement::Commands::KeySetReadAllIndices::Type request;
@@ -41259,8 +41339,8 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
                 }
             }
 
-            chip::Controller::GroupKeyManagementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -43897,6 +43977,7 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ModeSelect::Commands::ChangeToMode::Type request;
@@ -43907,8 +43988,8 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params
             }
             request.newMode = params.newMode.unsignedCharValue;
 
-            chip::Controller::ModeSelectCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45006,6 +45087,7 @@ - (void)lockDoorWithParams:(MTRDoorLockClusterLockDoorParams * _Nullable)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::LockDoor::Type request;
@@ -45024,8 +45106,8 @@ - (void)lockDoorWithParams:(MTRDoorLockClusterLockDoorParams * _Nullable)params
                 }
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45041,6 +45123,7 @@ - (void)unlockDoorWithParams:(MTRDoorLockClusterUnlockDoorParams * _Nullable)par
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::UnlockDoor::Type request;
@@ -45059,8 +45142,8 @@ - (void)unlockDoorWithParams:(MTRDoorLockClusterUnlockDoorParams * _Nullable)par
                 }
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45076,6 +45159,7 @@ - (void)unlockWithTimeoutWithParams:(MTRDoorLockClusterUnlockWithTimeoutParams *
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::UnlockWithTimeout::Type request;
@@ -45093,8 +45177,8 @@ - (void)unlockWithTimeoutWithParams:(MTRDoorLockClusterUnlockWithTimeoutParams *
                 definedValue_0 = [self asByteSpan:params.pinCode];
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45110,6 +45194,7 @@ - (void)setWeekDayScheduleWithParams:(MTRDoorLockClusterSetWeekDayScheduleParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::SetWeekDaySchedule::Type request;
@@ -45126,8 +45211,8 @@ - (void)setWeekDayScheduleWithParams:(MTRDoorLockClusterSetWeekDayScheduleParams
             request.endHour = params.endHour.unsignedCharValue;
             request.endMinute = params.endMinute.unsignedCharValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45142,6 +45227,7 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DoorLockClusterGetWeekDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::GetWeekDaySchedule::Type request;
@@ -45153,8 +45239,8 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams
             request.weekDayIndex = params.weekDayIndex.unsignedCharValue;
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45171,6 +45257,7 @@ - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDaySchedulePa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::ClearWeekDaySchedule::Type request;
@@ -45182,8 +45269,8 @@ - (void)clearWeekDayScheduleWithParams:(MTRDoorLockClusterClearWeekDaySchedulePa
             request.weekDayIndex = params.weekDayIndex.unsignedCharValue;
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45199,6 +45286,7 @@ - (void)setYearDayScheduleWithParams:(MTRDoorLockClusterSetYearDayScheduleParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::SetYearDaySchedule::Type request;
@@ -45212,8 +45300,8 @@ - (void)setYearDayScheduleWithParams:(MTRDoorLockClusterSetYearDayScheduleParams
             request.localStartTime = params.localStartTime.unsignedIntValue;
             request.localEndTime = params.localEndTime.unsignedIntValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45228,6 +45316,7 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DoorLockClusterGetYearDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::GetYearDaySchedule::Type request;
@@ -45239,8 +45328,8 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams
             request.yearDayIndex = params.yearDayIndex.unsignedCharValue;
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45257,6 +45346,7 @@ - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDaySchedulePa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::ClearYearDaySchedule::Type request;
@@ -45268,8 +45358,8 @@ - (void)clearYearDayScheduleWithParams:(MTRDoorLockClusterClearYearDaySchedulePa
             request.yearDayIndex = params.yearDayIndex.unsignedCharValue;
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45285,6 +45375,7 @@ - (void)setHolidayScheduleWithParams:(MTRDoorLockClusterSetHolidayScheduleParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::SetHolidaySchedule::Type request;
@@ -45299,8 +45390,8 @@ - (void)setHolidayScheduleWithParams:(MTRDoorLockClusterSetHolidayScheduleParams
             request.operatingMode
                 = static_cast>(params.operatingMode.unsignedCharValue);
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45315,6 +45406,7 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DoorLockClusterGetHolidayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::GetHolidaySchedule::Type request;
@@ -45325,8 +45417,8 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams
             }
             request.holidayIndex = params.holidayIndex.unsignedCharValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45343,6 +45435,7 @@ - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidaySchedulePa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::ClearHolidaySchedule::Type request;
@@ -45353,8 +45446,8 @@ - (void)clearHolidayScheduleWithParams:(MTRDoorLockClusterClearHolidaySchedulePa
             }
             request.holidayIndex = params.holidayIndex.unsignedCharValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45370,6 +45463,7 @@ - (void)setUserWithParams:(MTRDoorLockClusterSetUserParams *)params completion:(
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::SetUser::Type request;
@@ -45417,8 +45511,8 @@ - (void)setUserWithParams:(MTRDoorLockClusterSetUserParams *)params completion:(
                     = static_cast>(params.credentialRule.unsignedCharValue);
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45431,6 +45525,7 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params
     auto * bridge = new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, DoorLockClusterGetUserResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::GetUser::Type request;
@@ -45441,8 +45536,8 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params
             }
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45458,6 +45553,7 @@ - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params completi
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::ClearUser::Type request;
@@ -45471,8 +45567,8 @@ - (void)clearUserWithParams:(MTRDoorLockClusterClearUserParams *)params completi
             }
             request.userIndex = params.userIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45487,6 +45583,7 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DoorLockClusterSetCredentialResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::SetCredential::Type request;
@@ -45524,8 +45621,8 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params
                 nonNullValue_0 = static_cast>(params.userType.unsignedCharValue);
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45540,6 +45637,7 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             DoorLockClusterGetCredentialStatusResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::GetCredentialStatus::Type request;
@@ -45552,8 +45650,8 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara
                 params.credential.credentialType.unsignedCharValue);
             request.credential.credentialIndex = params.credential.credentialIndex.unsignedShortValue;
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -45569,6 +45667,7 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             DoorLock::Commands::ClearCredential::Type request;
@@ -45589,8 +45688,8 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par
                 nonNullValue_0.credentialIndex = params.credential.credentialIndex.unsignedShortValue;
             }
 
-            chip::Controller::DoorLockCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50236,6 +50335,7 @@ - (void)upOrOpenWithParams:(MTRWindowCoveringClusterUpOrOpenParams * _Nullable)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::UpOrOpen::Type request;
@@ -50245,8 +50345,8 @@ - (void)upOrOpenWithParams:(MTRWindowCoveringClusterUpOrOpenParams * _Nullable)p
                 }
             }
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50267,6 +50367,7 @@ - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Null
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::DownOrClose::Type request;
@@ -50276,8 +50377,8 @@ - (void)downOrCloseWithParams:(MTRWindowCoveringClusterDownOrCloseParams * _Null
                 }
             }
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50297,6 +50398,7 @@ - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullab
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::StopMotion::Type request;
@@ -50306,8 +50408,8 @@ - (void)stopMotionWithParams:(MTRWindowCoveringClusterStopMotionParams * _Nullab
                 }
             }
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50323,6 +50425,7 @@ - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::GoToLiftValue::Type request;
@@ -50333,8 +50436,8 @@ - (void)goToLiftValueWithParams:(MTRWindowCoveringClusterGoToLiftValueParams *)p
             }
             request.liftValue = params.liftValue.unsignedShortValue;
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50351,6 +50454,7 @@ - (void)goToLiftPercentageWithParams:(MTRWindowCoveringClusterGoToLiftPercentage
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::GoToLiftPercentage::Type request;
@@ -50361,8 +50465,8 @@ - (void)goToLiftPercentageWithParams:(MTRWindowCoveringClusterGoToLiftPercentage
             }
             request.liftPercent100thsValue = params.liftPercent100thsValue.unsignedShortValue;
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50378,6 +50482,7 @@ - (void)goToTiltValueWithParams:(MTRWindowCoveringClusterGoToTiltValueParams *)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::GoToTiltValue::Type request;
@@ -50388,8 +50493,8 @@ - (void)goToTiltValueWithParams:(MTRWindowCoveringClusterGoToTiltValueParams *)p
             }
             request.tiltValue = params.tiltValue.unsignedShortValue;
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -50406,6 +50511,7 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             WindowCovering::Commands::GoToTiltPercentage::Type request;
@@ -50416,8 +50522,8 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage
             }
             request.tiltPercent100thsValue = params.tiltPercent100thsValue.unsignedShortValue;
 
-            chip::Controller::WindowCoveringCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -52946,6 +53052,7 @@ - (void)barrierControlGoToPercentWithParams:(MTRBarrierControlClusterBarrierCont
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             BarrierControl::Commands::BarrierControlGoToPercent::Type request;
@@ -52956,8 +53063,8 @@ - (void)barrierControlGoToPercentWithParams:(MTRBarrierControlClusterBarrierCont
             }
             request.percentOpen = params.percentOpen.unsignedCharValue;
 
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -52978,6 +53085,7 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             BarrierControl::Commands::BarrierControlStop::Type request;
@@ -52987,8 +53095,8 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop
                 }
             }
 
-            chip::Controller::BarrierControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -57298,6 +57406,7 @@ - (void)setpointRaiseLowerWithParams:(MTRThermostatClusterSetpointRaiseLowerPara
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Thermostat::Commands::SetpointRaiseLower::Type request;
@@ -57309,8 +57418,8 @@ - (void)setpointRaiseLowerWithParams:(MTRThermostatClusterSetpointRaiseLowerPara
             request.mode = static_cast>(params.mode.unsignedCharValue);
             request.amount = params.amount.charValue;
 
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -57326,6 +57435,7 @@ - (void)setWeeklyScheduleWithParams:(MTRThermostatClusterSetWeeklyScheduleParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Thermostat::Commands::SetWeeklySchedule::Type request;
@@ -57374,8 +57484,8 @@ - (void)setWeeklyScheduleWithParams:(MTRThermostatClusterSetWeeklyScheduleParams
                 }
             }
 
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -57390,6 +57500,7 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ThermostatClusterGetWeeklyScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Thermostat::Commands::GetWeeklySchedule::Type request;
@@ -57403,8 +57514,8 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams
             request.modeToReturn
                 = static_cast>(params.modeToReturn.unsignedCharValue);
 
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -57425,6 +57536,7 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Thermostat::Commands::ClearWeeklySchedule::Type request;
@@ -57434,8 +57546,8 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa
                 }
             }
 
-            chip::Controller::ThermostatCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66136,6 +66248,7 @@ - (void)moveToHueWithParams:(MTRColorControlClusterMoveToHueParams *)params comp
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveToHue::Type request;
@@ -66151,8 +66264,8 @@ - (void)moveToHueWithParams:(MTRColorControlClusterMoveToHueParams *)params comp
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66168,6 +66281,7 @@ - (void)moveHueWithParams:(MTRColorControlClusterMoveHueParams *)params completi
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveHue::Type request;
@@ -66181,8 +66295,8 @@ - (void)moveHueWithParams:(MTRColorControlClusterMoveHueParams *)params completi
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66198,6 +66312,7 @@ - (void)stepHueWithParams:(MTRColorControlClusterStepHueParams *)params completi
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::StepHue::Type request;
@@ -66212,8 +66327,8 @@ - (void)stepHueWithParams:(MTRColorControlClusterStepHueParams *)params completi
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66229,6 +66344,7 @@ - (void)moveToSaturationWithParams:(MTRColorControlClusterMoveToSaturationParams
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveToSaturation::Type request;
@@ -66242,8 +66358,8 @@ - (void)moveToSaturationWithParams:(MTRColorControlClusterMoveToSaturationParams
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66259,6 +66375,7 @@ - (void)moveSaturationWithParams:(MTRColorControlClusterMoveSaturationParams *)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveSaturation::Type request;
@@ -66272,8 +66389,8 @@ - (void)moveSaturationWithParams:(MTRColorControlClusterMoveSaturationParams *)p
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66289,6 +66406,7 @@ - (void)stepSaturationWithParams:(MTRColorControlClusterStepSaturationParams *)p
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::StepSaturation::Type request;
@@ -66303,8 +66421,8 @@ - (void)stepSaturationWithParams:(MTRColorControlClusterStepSaturationParams *)p
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66321,6 +66439,7 @@ - (void)moveToHueAndSaturationWithParams:(MTRColorControlClusterMoveToHueAndSatu
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveToHueAndSaturation::Type request;
@@ -66335,8 +66454,8 @@ - (void)moveToHueAndSaturationWithParams:(MTRColorControlClusterMoveToHueAndSatu
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66352,6 +66471,7 @@ - (void)moveToColorWithParams:(MTRColorControlClusterMoveToColorParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveToColor::Type request;
@@ -66366,8 +66486,8 @@ - (void)moveToColorWithParams:(MTRColorControlClusterMoveToColorParams *)params
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66383,6 +66503,7 @@ - (void)moveColorWithParams:(MTRColorControlClusterMoveColorParams *)params comp
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveColor::Type request;
@@ -66396,8 +66517,8 @@ - (void)moveColorWithParams:(MTRColorControlClusterMoveColorParams *)params comp
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66413,6 +66534,7 @@ - (void)stepColorWithParams:(MTRColorControlClusterStepColorParams *)params comp
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::StepColor::Type request;
@@ -66427,8 +66549,8 @@ - (void)stepColorWithParams:(MTRColorControlClusterStepColorParams *)params comp
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66445,6 +66567,7 @@ - (void)moveToColorTemperatureWithParams:(MTRColorControlClusterMoveToColorTempe
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveToColorTemperature::Type request;
@@ -66458,8 +66581,8 @@ - (void)moveToColorTemperatureWithParams:(MTRColorControlClusterMoveToColorTempe
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66476,6 +66599,7 @@ - (void)enhancedMoveToHueWithParams:(MTRColorControlClusterEnhancedMoveToHuePara
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::EnhancedMoveToHue::Type request;
@@ -66491,8 +66615,8 @@ - (void)enhancedMoveToHueWithParams:(MTRColorControlClusterEnhancedMoveToHuePara
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66508,6 +66632,7 @@ - (void)enhancedMoveHueWithParams:(MTRColorControlClusterEnhancedMoveHueParams *
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::EnhancedMoveHue::Type request;
@@ -66521,8 +66646,8 @@ - (void)enhancedMoveHueWithParams:(MTRColorControlClusterEnhancedMoveHueParams *
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66538,6 +66663,7 @@ - (void)enhancedStepHueWithParams:(MTRColorControlClusterEnhancedStepHueParams *
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::EnhancedStepHue::Type request;
@@ -66552,8 +66678,8 @@ - (void)enhancedStepHueWithParams:(MTRColorControlClusterEnhancedStepHueParams *
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66570,6 +66696,7 @@ - (void)enhancedMoveToHueAndSaturationWithParams:(MTRColorControlClusterEnhanced
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::EnhancedMoveToHueAndSaturation::Type request;
@@ -66584,8 +66711,8 @@ - (void)enhancedMoveToHueAndSaturationWithParams:(MTRColorControlClusterEnhanced
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66601,6 +66728,7 @@ - (void)colorLoopSetWithParams:(MTRColorControlClusterColorLoopSetParams *)param
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::ColorLoopSet::Type request;
@@ -66619,8 +66747,8 @@ - (void)colorLoopSetWithParams:(MTRColorControlClusterColorLoopSetParams *)param
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66636,6 +66764,7 @@ - (void)stopMoveStepWithParams:(MTRColorControlClusterStopMoveStepParams *)param
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::StopMoveStep::Type request;
@@ -66647,8 +66776,8 @@ - (void)stopMoveStepWithParams:(MTRColorControlClusterStopMoveStepParams *)param
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66665,6 +66794,7 @@ - (void)moveColorTemperatureWithParams:(MTRColorControlClusterMoveColorTemperatu
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::MoveColorTemperature::Type request;
@@ -66680,8 +66810,8 @@ - (void)moveColorTemperatureWithParams:(MTRColorControlClusterMoveColorTemperatu
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -66698,6 +66828,7 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ColorControl::Commands::StepColorTemperature::Type request;
@@ -66714,8 +66845,8 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu
             request.optionsMask = params.optionsMask.unsignedCharValue;
             request.optionsOverride = params.optionsOverride.unsignedCharValue;
 
-            chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -81674,6 +81805,7 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params
     auto * bridge = new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ChannelClusterChangeChannelResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Channel::Commands::ChangeChannel::Type request;
@@ -81684,8 +81816,8 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params
             }
             request.match = [self asCharSpan:params.match];
 
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -81702,6 +81834,7 @@ - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberP
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Channel::Commands::ChangeChannelByNumber::Type request;
@@ -81713,8 +81846,8 @@ - (void)changeChannelByNumberWithParams:(MTRChannelClusterChangeChannelByNumberP
             request.majorNumber = params.majorNumber.unsignedShortValue;
             request.minorNumber = params.minorNumber.unsignedShortValue;
 
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -81730,6 +81863,7 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params compl
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             Channel::Commands::SkipChannel::Type request;
@@ -81740,8 +81874,8 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params compl
             }
             request.count = params.count.unsignedShortValue;
 
-            chip::Controller::ChannelCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -82501,6 +82635,7 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             TargetNavigatorClusterNavigateTargetResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             TargetNavigator::Commands::NavigateTarget::Type request;
@@ -82515,8 +82650,8 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
                 definedValue_0 = [self asCharSpan:params.data];
             }
 
-            chip::Controller::TargetNavigatorCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83180,6 +83315,7 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Play::Type request;
@@ -83189,8 +83325,8 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83210,6 +83346,7 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Pause::Type request;
@@ -83219,8 +83356,8 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83240,6 +83377,7 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::StopPlayback::Type request;
@@ -83249,8 +83387,8 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83270,6 +83408,7 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::StartOver::Type request;
@@ -83279,8 +83418,8 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83300,6 +83439,7 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Previous::Type request;
@@ -83309,8 +83449,8 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83330,6 +83470,7 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Next::Type request;
@@ -83339,8 +83480,8 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83360,6 +83501,7 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Rewind::Type request;
@@ -83369,8 +83511,8 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83390,6 +83532,7 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::FastForward::Type request;
@@ -83399,8 +83542,8 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla
                 }
             }
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83415,6 +83558,7 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::SkipForward::Type request;
@@ -83425,8 +83569,8 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
             }
             request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue;
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83441,6 +83585,7 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::SkipBackward::Type request;
@@ -83451,8 +83596,8 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para
             }
             request.deltaPositionMilliseconds = params.deltaPositionMilliseconds.unsignedLongLongValue;
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -83467,6 +83612,7 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaPlayback::Commands::Seek::Type request;
@@ -83477,8 +83623,8 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
             }
             request.position = params.position.unsignedLongLongValue;
 
-            chip::Controller::MediaPlaybackCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -84713,6 +84859,7 @@ - (void)selectInputWithParams:(MTRMediaInputClusterSelectInputParams *)params co
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaInput::Commands::SelectInput::Type request;
@@ -84723,8 +84870,8 @@ - (void)selectInputWithParams:(MTRMediaInputClusterSelectInputParams *)params co
             }
             request.index = params.index.unsignedCharValue;
 
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -84745,6 +84892,7 @@ - (void)showInputStatusWithParams:(MTRMediaInputClusterShowInputStatusParams * _
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaInput::Commands::ShowInputStatus::Type request;
@@ -84754,8 +84902,8 @@ - (void)showInputStatusWithParams:(MTRMediaInputClusterShowInputStatusParams * _
                 }
             }
 
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -84776,6 +84924,7 @@ - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaInput::Commands::HideInputStatus::Type request;
@@ -84785,8 +84934,8 @@ - (void)hideInputStatusWithParams:(MTRMediaInputClusterHideInputStatusParams * _
                 }
             }
 
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -84802,6 +84951,7 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params co
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             MediaInput::Commands::RenameInput::Type request;
@@ -84813,8 +84963,8 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params co
             request.index = params.index.unsignedCharValue;
             request.name = [self asCharSpan:params.name];
 
-            chip::Controller::MediaInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -85493,6 +85643,7 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params comple
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             LowPower::Commands::Sleep::Type request;
@@ -85502,8 +85653,8 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params comple
                 }
             }
 
-            chip::Controller::LowPowerCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -85987,6 +86138,7 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
     auto * bridge = new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, KeypadInputClusterSendKeyResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             KeypadInput::Commands::SendKey::Type request;
@@ -85997,8 +86149,8 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
             }
             request.keyCode = static_cast>(params.keyCode.unsignedCharValue);
 
-            chip::Controller::KeypadInputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -86485,6 +86637,7 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *)
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ContentLauncher::Commands::LaunchContent::Type request;
@@ -86551,8 +86704,8 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *)
                 definedValue_0 = [self asCharSpan:params.data];
             }
 
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -86567,6 +86720,7 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ContentLauncher::Commands::LaunchURL::Type request;
@@ -86675,8 +86829,8 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
                 }
             }
 
-            chip::Controller::ContentLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -87399,6 +87553,7 @@ - (void)selectOutputWithParams:(MTRAudioOutputClusterSelectOutputParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AudioOutput::Commands::SelectOutput::Type request;
@@ -87409,8 +87564,8 @@ - (void)selectOutputWithParams:(MTRAudioOutputClusterSelectOutputParams *)params
             }
             request.index = params.index.unsignedCharValue;
 
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -87426,6 +87581,7 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AudioOutput::Commands::RenameOutput::Type request;
@@ -87437,8 +87593,8 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params
             request.index = params.index.unsignedCharValue;
             request.name = [self asCharSpan:params.name];
 
-            chip::Controller::AudioOutputCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -88095,6 +88251,7 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ApplicationLauncher::Commands::LaunchApp::Type request;
@@ -88110,8 +88267,8 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para
                 definedValue_0 = [self asByteSpan:params.data];
             }
 
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -88126,6 +88283,7 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ApplicationLauncher::Commands::StopApp::Type request;
@@ -88137,8 +88295,8 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
             request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue;
             request.application.applicationId = [self asCharSpan:params.application.applicationId];
 
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -88153,6 +88311,7 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ApplicationLauncher::Commands::HideApp::Type request;
@@ -88164,8 +88323,8 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
             request.application.catalogVendorId = params.application.catalogVendorId.unsignedShortValue;
             request.application.applicationId = [self asCharSpan:params.application.applicationId];
 
-            chip::Controller::ApplicationLauncherCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -90076,6 +90235,7 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             AccountLoginClusterGetSetupPINResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AccountLogin::Commands::GetSetupPIN::Type request;
@@ -90089,8 +90249,8 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params
             }
             request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier];
 
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -90106,6 +90266,7 @@ - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params completion:(
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AccountLogin::Commands::Login::Type request;
@@ -90120,8 +90281,8 @@ - (void)loginWithParams:(MTRAccountLoginClusterLoginParams *)params completion:(
             request.tempAccountIdentifier = [self asCharSpan:params.tempAccountIdentifier];
             request.setupPIN = [self asCharSpan:params.setupPIN];
 
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -90141,6 +90302,7 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             AccountLogin::Commands::Logout::Type request;
@@ -90153,8 +90315,8 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params
                 timedInvokeTimeoutMs.SetValue(10000);
             }
 
-            chip::Controller::AccountLoginCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -90660,6 +90822,7 @@ - (void)getProfileInfoCommandWithParams:(MTRElectricalMeasurementClusterGetProfi
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ElectricalMeasurement::Commands::GetProfileInfoCommand::Type request;
@@ -90669,8 +90832,8 @@ - (void)getProfileInfoCommandWithParams:(MTRElectricalMeasurementClusterGetProfi
                 }
             }
 
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -90687,6 +90850,7 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             ElectricalMeasurement::Commands::GetMeasurementProfileCommand::Type request;
@@ -90699,8 +90863,8 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
             request.startTime = params.startTime.unsignedIntValue;
             request.numberOfIntervals = params.numberOfIntervals.unsignedCharValue;
 
-            chip::Controller::ElectricalMeasurementCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -102884,6 +103048,7 @@ - (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params compl
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::Test::Type request;
@@ -102893,8 +103058,8 @@ - (void)testWithParams:(MTRUnitTestingClusterTestParams * _Nullable)params compl
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -102915,6 +103080,7 @@ - (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _N
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestNotHandled::Type request;
@@ -102924,8 +103090,8 @@ - (void)testNotHandledWithParams:(MTRUnitTestingClusterTestNotHandledParams * _N
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -102945,6 +103111,7 @@ - (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nulla
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestSpecific::Type request;
@@ -102954,8 +103121,8 @@ - (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nulla
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -102976,6 +103143,7 @@ - (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandPar
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestUnknownCommand::Type request;
@@ -102985,8 +103153,8 @@ - (void)testUnknownCommandWithParams:(MTRUnitTestingClusterTestUnknownCommandPar
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103001,6 +103169,7 @@ - (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestAddArguments::Type request;
@@ -103012,8 +103181,8 @@ - (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams
             request.arg1 = params.arg1.unsignedCharValue;
             request.arg2 = params.arg2.unsignedCharValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103028,6 +103197,7 @@ - (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgu
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestSimpleArgumentRequest::Type request;
@@ -103038,8 +103208,8 @@ - (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgu
             }
             request.arg1 = params.arg1.boolValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103055,6 +103225,7 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStruc
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestStructArrayArgumentRequest::Type request;
@@ -103274,8 +103445,8 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStruc
             request.arg5 = static_cast>(params.arg5.unsignedCharValue);
             request.arg6 = params.arg6.boolValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103289,6 +103460,7 @@ - (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgu
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestStructArgumentRequest::Type request;
@@ -103306,8 +103478,8 @@ - (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgu
             request.arg1.g = params.arg1.g.floatValue;
             request.arg1.h = params.arg1.h.doubleValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103321,6 +103493,7 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNest
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestNestedStructArgumentRequest::Type request;
@@ -103340,8 +103513,8 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNest
             request.arg1.c.g = params.arg1.c.g.floatValue;
             request.arg1.c.h = params.arg1.c.h.doubleValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103355,6 +103528,7 @@ - (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListSt
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestListStructArgumentRequest::Type request;
@@ -103395,8 +103569,8 @@ - (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListSt
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103410,6 +103584,7 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestListInt8UArgumentRequest::Type request;
@@ -103441,8 +103616,8 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103456,6 +103631,7 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTest
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestNestedStructListArgumentRequest::Type request;
@@ -103572,8 +103748,8 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTest
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103588,6 +103764,7 @@ - (void)testListNestedStructListArgumentRequestWithParams:
     auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, UnitTestingClusterBooleanResponseCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestListNestedStructListArgumentRequest::Type request;
@@ -103729,8 +103906,8 @@ - (void)testListNestedStructListArgumentRequestWithParams:
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103745,6 +103922,7 @@ - (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestListInt8UReverseRequest::Type request;
@@ -103776,8 +103954,8 @@ - (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103791,6 +103969,7 @@ - (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams
     auto * bridge = new MTRUnitTestingClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestEnumsRequest::Type request;
@@ -103802,8 +103981,8 @@ - (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams
             request.arg1 = static_cast>(params.arg1.unsignedShortValue);
             request.arg2 = static_cast>(params.arg2.unsignedCharValue);
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103818,6 +103997,7 @@ - (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullable
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestNullableOptionalRequest::Type request;
@@ -103838,8 +104018,8 @@ - (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullable
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -103856,6 +104036,7 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestC
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestComplexNullableOptionalRequest::Type request;
@@ -104034,8 +104215,8 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestC
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -104050,6 +104231,7 @@ - (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEcho
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::SimpleStructEchoRequest::Type request;
@@ -104067,8 +104249,8 @@ - (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEcho
             request.arg1.g = params.arg1.g.floatValue;
             request.arg1.h = params.arg1.h.doubleValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -104089,6 +104271,7 @@ - (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestPar
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TimedInvokeRequest::Type request;
@@ -104101,8 +104284,8 @@ - (void)timedInvokeRequestWithParams:(MTRUnitTestingClusterTimedInvokeRequestPar
                 timedInvokeTimeoutMs.SetValue(10000);
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -104119,6 +104302,7 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSi
         },
         ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
             MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestSimpleOptionalArgumentRequest::Type request;
@@ -104134,8 +104318,8 @@ - (void)testSimpleOptionalArgumentRequestWithParams:(MTRUnitTestingClusterTestSi
                 }
             }
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -104150,6 +104334,7 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestEmitTestEventRequest::Type request;
@@ -104162,8 +104347,8 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
             request.arg2 = static_cast>(params.arg2.unsignedCharValue);
             request.arg3 = params.arg3.boolValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }
@@ -104181,6 +104366,7 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
         ^(ExchangeManager & exchangeManager, const SessionHandle & session,
             UnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
             MTRCallbackBridgeBase * bridge) {
+            auto * typedBridge = static_cast(bridge);
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
             UnitTesting::Commands::TestEmitTestFabricScopedEventRequest::Type request;
@@ -104191,8 +104377,8 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
             }
             request.arg1 = params.arg1.unsignedCharValue;
 
-            chip::Controller::UnitTestingCluster cppCluster(exchangeManager, session, self->_endpoint);
-            return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            return MTRStartInvokeInteraction(
+                typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint, timedInvokeTimeoutMs);
         });
     std::move(*bridge).DispatchAction(self.device);
 }

From 406bdfe658142b55fb6a5418f0891887069b25c2 Mon Sep 17 00:00:00 2001
From: Evgeny Margolis 
Date: Wed, 16 Nov 2022 16:00:52 -0800
Subject: [PATCH 13/36] Fix Logging When Trying to Log Nullptr To Strings
 (#23604)

This PR attempts to identify all cases where %s specifiers in the logging APIs
(ChipLogError(), ChipLogProgress(), ChipLogDetail()) don't have a guaranteed
non-null string parameter.

In all identified cases the issue is fixed using StringOrNullMarker() helper
method to guarantee it doesn't happen.
---
 .../credentials/TestHarnessDACProvider.cpp    |  4 +-
 .../tests/suites/include/ConstraintsChecker.h |  3 +-
 src/app/tests/suites/include/PICSChecker.h    |  2 +-
 src/app/tests/suites/include/TestRunner.h     |  4 +-
 .../java/AndroidDeviceControllerWrapper.cpp   |  6 +--
 .../ChipDeviceController-StorageDelegate.cpp  | 11 ++---
 src/credentials/LastKnownGoodTime.cpp         |  2 +-
 src/crypto/CHIPCryptoPALOpenSSL.cpp           |  3 +-
 src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp  | 12 +++--
 src/lib/dnssd/Discovery_ImplPlatform.cpp      |  8 +--
 src/lib/support/JniReferences.cpp             |  6 +--
 .../support/TestPersistentStorageDelegate.h   | 21 +++++---
 src/platform/Ameba/AmebaConfig.cpp            | 49 ++++++++++++-------
 src/platform/Beken/BekenConfig.cpp            | 39 +++++++++------
 .../Beken/NetworkCommissioningWiFiDriver.cpp  |  2 +-
 src/platform/Darwin/DnssdImpl.cpp             | 25 +++++-----
 src/platform/ESP32/ESP32Config.cpp            | 17 ++++---
 .../ESP32/KeyValueStoreManagerImpl.cpp        |  4 +-
 src/platform/Linux/CHIPLinuxStorage.cpp       |  7 +--
 .../Linux/ConnectivityManagerImpl.cpp         | 14 +++---
 .../Linux/DiagnosticDataProviderImpl.cpp      |  8 +--
 src/platform/Linux/DnssdImpl.cpp              |  6 +--
 .../Linux/NetworkCommissioningWiFiDriver.cpp  |  5 +-
 src/platform/Linux/PosixConfig.cpp            | 21 +++++---
 src/platform/Linux/ThreadStackManagerImpl.cpp |  4 +-
 src/platform/Linux/bluez/AdapterIterator.cpp  |  4 +-
 .../Linux/bluez/ChipDeviceScanner.cpp         |  4 +-
 src/platform/Linux/bluez/Helper.cpp           |  8 +--
 src/platform/LockTracker.cpp                  |  4 +-
 src/platform/OpenThread/DnssdImpl.cpp         |  4 +-
 src/platform/OpenThread/OpenThreadUtils.cpp   |  6 +--
 src/platform/Tizen/AppPreference.cpp          |  8 +--
 src/platform/Tizen/BLEManagerImpl.cpp         | 37 +++++++-------
 src/platform/Tizen/DnssdImpl.cpp              | 11 +++--
 .../Zephyr/KeyValueStoreManagerImpl.cpp       |  4 +-
 .../bouffalolab/BL602/BL602Config.cpp         |  4 +-
 .../bouffalolab/BL602/BLEManagerImpl.cpp      |  2 +-
 src/platform/mt793x/DnssdImpl.cpp             |  8 +--
 src/platform/telink/BLEManagerImpl.cpp        |  2 +-
 src/platform/webos/CHIPWebOSStorage.cpp       |  7 +--
 .../webos/ConnectivityManagerImpl.cpp         | 12 +++--
 .../webos/DiagnosticDataProviderImpl.cpp      |  8 +--
 src/platform/webos/DnssdImpl.cpp              |  6 +--
 src/platform/webos/PosixConfig.cpp            | 21 +++++---
 src/platform/webos/ThreadStackManagerImpl.cpp |  6 +--
 .../UserDirectedCommissioningServer.cpp       |  4 +-
 src/qrcodetool/qrcodetool.cpp                 |  5 +-
 src/system/tests/TestSystemPacketBuffer.cpp   | 10 ++--
 48 files changed, 267 insertions(+), 201 deletions(-)

diff --git a/src/app/tests/suites/credentials/TestHarnessDACProvider.cpp b/src/app/tests/suites/credentials/TestHarnessDACProvider.cpp
index 2940ec6c3d54a1..bd7d644e47c555 100644
--- a/src/app/tests/suites/credentials/TestHarnessDACProvider.cpp
+++ b/src/app/tests/suites/credentials/TestHarnessDACProvider.cpp
@@ -147,7 +147,7 @@ void TestHarnessDACProvider::Init(const char * filepath)
     std::ifstream json(filepath, std::ifstream::binary);
     if (!json)
     {
-        ChipLogError(AppServer, "Error opening json file: %s", filepath);
+        ChipLogError(AppServer, "Error opening json file: %s", StringOrNullMarker(filepath));
         return;
     }
 
@@ -155,7 +155,7 @@ void TestHarnessDACProvider::Init(const char * filepath)
     Json::Value root;
     if (!reader.parse(json, root))
     {
-        ChipLogError(AppServer, "Error parsing json file: %s", filepath);
+        ChipLogError(AppServer, "Error parsing json file: %s", StringOrNullMarker(filepath));
         return;
     }
 
diff --git a/src/app/tests/suites/include/ConstraintsChecker.h b/src/app/tests/suites/include/ConstraintsChecker.h
index 6578a4d7610e61..2298ac422d2ddd 100644
--- a/src/app/tests/suites/include/ConstraintsChecker.h
+++ b/src/app/tests/suites/include/ConstraintsChecker.h
@@ -46,7 +46,8 @@ class ConstraintsChecker
 
     bool CheckConstraintFormat(const char * itemName, const char * current, const char * expected)
     {
-        ChipLogError(chipTool, "Warning: %s format checking is not implemented yet. Expected format: '%s'", itemName, expected);
+        ChipLogError(chipTool, "Warning: %s format checking is not implemented yet. Expected format: '%s'",
+                     StringOrNullMarker(itemName), StringOrNullMarker(expected));
         return true;
     }
 
diff --git a/src/app/tests/suites/include/PICSChecker.h b/src/app/tests/suites/include/PICSChecker.h
index e7c7b7deb9fd11..0423e583ebd522 100644
--- a/src/app/tests/suites/include/PICSChecker.h
+++ b/src/app/tests/suites/include/PICSChecker.h
@@ -40,7 +40,7 @@ class PICSChecker
         bool shouldSkip = !PICSBooleanExpressionParser::Eval(expression, pics);
         if (shouldSkip)
         {
-            ChipLogProgress(chipTool, " **** Skipping: %s == false\n", expression);
+            ChipLogProgress(chipTool, " **** Skipping: %s == false\n", StringOrNullMarker(expression));
         }
         return shouldSkip;
     }
diff --git a/src/app/tests/suites/include/TestRunner.h b/src/app/tests/suites/include/TestRunner.h
index 9fd5450f14bc01..719f758c01e641 100644
--- a/src/app/tests/suites/include/TestRunner.h
+++ b/src/app/tests/suites/include/TestRunner.h
@@ -30,11 +30,11 @@ class TestRunner
     TestRunner(const char * name, uint16_t testCount) : mTestName(name), mTestCount(testCount), mTestIndex(0) {}
     virtual ~TestRunner(){};
 
-    void LogStart() { ChipLogProgress(chipTool, " ***** Test Start : %s\n", mTestName); }
+    void LogStart() { ChipLogProgress(chipTool, " ***** Test Start : %s\n", StringOrNullMarker(mTestName)); }
 
     void LogStep(uint32_t stepNumber, const char * stepName)
     {
-        ChipLogProgress(chipTool, " ***** Test Step %u : %s\n", stepNumber, stepName);
+        ChipLogProgress(chipTool, " ***** Test Step %u : %s\n", stepNumber, StringOrNullMarker(stepName));
     }
 
     void LogEnd(std::string message, CHIP_ERROR err)
diff --git a/src/controller/java/AndroidDeviceControllerWrapper.cpp b/src/controller/java/AndroidDeviceControllerWrapper.cpp
index 922ad281936e00..80feffeeaeabd4 100644
--- a/src/controller/java/AndroidDeviceControllerWrapper.cpp
+++ b/src/controller/java/AndroidDeviceControllerWrapper.cpp
@@ -649,7 +649,7 @@ void AndroidDeviceControllerWrapper::OnScanNetworksFailure(CHIP_ERROR error)
 
 CHIP_ERROR AndroidDeviceControllerWrapper::SyncGetKeyValue(const char * key, void * value, uint16_t & size)
 {
-    ChipLogProgress(chipTool, "KVS: Getting key %s", key);
+    ChipLogProgress(chipTool, "KVS: Getting key %s", StringOrNullMarker(key));
 
     size_t read_size = 0;
 
@@ -662,12 +662,12 @@ CHIP_ERROR AndroidDeviceControllerWrapper::SyncGetKeyValue(const char * key, voi
 
 CHIP_ERROR AndroidDeviceControllerWrapper::SyncSetKeyValue(const char * key, const void * value, uint16_t size)
 {
-    ChipLogProgress(chipTool, "KVS: Setting key %s", key);
+    ChipLogProgress(chipTool, "KVS: Setting key %s", StringOrNullMarker(key));
     return chip::DeviceLayer::PersistedStorage::KeyValueStoreMgr().Put(key, value, size);
 }
 
 CHIP_ERROR AndroidDeviceControllerWrapper::SyncDeleteKeyValue(const char * key)
 {
-    ChipLogProgress(chipTool, "KVS: Deleting key %s", key);
+    ChipLogProgress(chipTool, "KVS: Deleting key %s", StringOrNullMarker(key));
     return chip::DeviceLayer::PersistedStorage::KeyValueStoreMgr().Delete(key);
 }
diff --git a/src/controller/python/ChipDeviceController-StorageDelegate.cpp b/src/controller/python/ChipDeviceController-StorageDelegate.cpp
index c9320a5eca531d..0c382e01c1a80d 100644
--- a/src/controller/python/ChipDeviceController-StorageDelegate.cpp
+++ b/src/controller/python/ChipDeviceController-StorageDelegate.cpp
@@ -1,7 +1,6 @@
-
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -58,7 +57,7 @@ CHIP_ERROR PythonPersistentStorageDelegate::SyncGetKeyValue(const char * key, vo
 CHIP_ERROR PythonPersistentStorageDelegate::SyncSetKeyValue(const char * key, const void * value, uint16_t size)
 {
     mStorage[key] = std::string(static_cast(value), size);
-    ChipLogDetail(Controller, "SyncSetKeyValue on %s", key);
+    ChipLogDetail(Controller, "SyncSetKeyValue on %s", StringOrNullMarker(key));
 
     return CHIP_NO_ERROR;
 }
@@ -79,7 +78,7 @@ namespace Python {
 
 CHIP_ERROR StorageAdapter::SyncGetKeyValue(const char * key, void * value, uint16_t & size)
 {
-    ChipLogDetail(Controller, "StorageAdapter::GetKeyValue: Key = %s, Value = %p (%u)", key, value, size);
+    ChipLogDetail(Controller, "StorageAdapter::GetKeyValue: Key = %s, Value = %p (%u)", StringOrNullMarker(key), value, size);
     if ((value == nullptr) && (size != 0))
     {
         return CHIP_ERROR_INVALID_ARGUMENT;
@@ -109,7 +108,7 @@ CHIP_ERROR StorageAdapter::SyncGetKeyValue(const char * key, void * value, uint1
 CHIP_ERROR StorageAdapter::SyncSetKeyValue(const char * key, const void * value, uint16_t size)
 {
     ReturnErrorCodeIf(((value == nullptr) && (size != 0)), CHIP_ERROR_INVALID_ARGUMENT);
-    ChipLogDetail(Controller, "StorageAdapter::SetKeyValue: Key = %s, Value = %p (%u)", key, value, size);
+    ChipLogDetail(Controller, "StorageAdapter::SetKeyValue: Key = %s, Value = %p (%u)", StringOrNullMarker(key), value, size);
     mSetKeyCb(mContext, key, value, size);
     return CHIP_NO_ERROR;
 }
@@ -124,7 +123,7 @@ CHIP_ERROR StorageAdapter::SyncDeleteKeyValue(const char * key)
         return err;
     }
 
-    ChipLogDetail(Controller, "StorageAdapter::DeleteKeyValue: Key = %s", key);
+    ChipLogDetail(Controller, "StorageAdapter::DeleteKeyValue: Key = %s", StringOrNullMarker(key));
     mDeleteKeyCb(mContext, key);
     return CHIP_NO_ERROR;
 }
diff --git a/src/credentials/LastKnownGoodTime.cpp b/src/credentials/LastKnownGoodTime.cpp
index a6b0c4c5e66094..b8906a89bdb951 100644
--- a/src/credentials/LastKnownGoodTime.cpp
+++ b/src/credentials/LastKnownGoodTime.cpp
@@ -44,7 +44,7 @@ void LastKnownGoodTime::LogTime(const char * msg, System::Clock::Seconds32 chipE
     uint8_t second;
     ChipEpochToCalendarTime(chipEpochTime.count(), year, month, day, hour, minute, second);
     snprintf(buf, sizeof(buf), "%04u-%02u-%02uT%02u:%02u:%02u", year, month, day, hour, minute, second);
-    ChipLogProgress(TimeService, "%s%s", msg, buf);
+    ChipLogProgress(TimeService, "%s%s", StringOrNullMarker(msg), buf);
 }
 
 CHIP_ERROR LastKnownGoodTime::LoadLastKnownGoodChipEpochTime(System::Clock::Seconds32 & lastKnownGoodChipEpochTime) const
diff --git a/src/crypto/CHIPCryptoPALOpenSSL.cpp b/src/crypto/CHIPCryptoPALOpenSSL.cpp
index 693f87c3cd95df..d0bb7997f46555 100644
--- a/src/crypto/CHIPCryptoPALOpenSSL.cpp
+++ b/src/crypto/CHIPCryptoPALOpenSSL.cpp
@@ -115,7 +115,8 @@ static void _logSSLError()
         const char * err_str_reason  = ERR_reason_error_string(static_cast(ssl_err_code));
         if (err_str_lib)
         {
-            ChipLogError(Crypto, " ssl err  %s %s %s\n", err_str_lib, err_str_routine, err_str_reason);
+            ChipLogError(Crypto, " ssl err  %s %s %s\n", StringOrNullMarker(err_str_lib), StringOrNullMarker(err_str_routine),
+                         StringOrNullMarker(err_str_reason));
         }
 #endif // CHIP_ERROR_LOGGING
         ssl_err_code = ERR_get_error();
diff --git a/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp b/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp
index ba59e1000a2764..19975187a2937c 100644
--- a/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp
+++ b/src/lib/dnssd/Advertiser_ImplMinimalMdns.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -531,7 +531,8 @@ CHIP_ERROR AdvertiserMinMdns::Advertise(const OperationalAdvertisingParameters &
 
     AdvertiseRecords(BroadcastAdvertiseType::kStarted);
 
-    ChipLogProgress(Discovery, "mDNS service published: %s.%s", instanceName.names[1], instanceName.names[2]);
+    ChipLogProgress(Discovery, "mDNS service published: %s.%s", StringOrNullMarker(instanceName.names[1]),
+                    StringOrNullMarker(instanceName.names[2]));
 
     return CHIP_NO_ERROR;
 }
@@ -725,17 +726,18 @@ CHIP_ERROR AdvertiserMinMdns::Advertise(const CommissionAdvertisingParameters &
     if (params.GetCommissionAdvertiseMode() == CommssionAdvertiseMode::kCommissionableNode)
     {
         ChipLogProgress(Discovery, "CHIP minimal mDNS configured as 'Commissionable node device'; instance name: %s.",
-                        instanceName.names[0]);
+                        StringOrNullMarker(instanceName.names[0]));
     }
     else
     {
         ChipLogProgress(Discovery, "CHIP minimal mDNS configured as 'Commissioner device'; instance name: %s.",
-                        instanceName.names[0]);
+                        StringOrNullMarker(instanceName.names[0]));
     }
 
     AdvertiseRecords(BroadcastAdvertiseType::kStarted);
 
-    ChipLogProgress(Discovery, "mDNS service published: %s.%s", instanceName.names[1], instanceName.names[2]);
+    ChipLogProgress(Discovery, "mDNS service published: %s.%s", StringOrNullMarker(instanceName.names[1]),
+                    StringOrNullMarker(instanceName.names[2]));
 
     return CHIP_NO_ERROR;
 }
diff --git a/src/lib/dnssd/Discovery_ImplPlatform.cpp b/src/lib/dnssd/Discovery_ImplPlatform.cpp
index 6d4b775f16f675..d664275c54b005 100644
--- a/src/lib/dnssd/Discovery_ImplPlatform.cpp
+++ b/src/lib/dnssd/Discovery_ImplPlatform.cpp
@@ -466,7 +466,8 @@ void DiscoveryImplPlatform::HandleDnssdPublish(void * context, const char * type
 {
     if (CHIP_NO_ERROR == error)
     {
-        ChipLogProgress(Discovery, "mDNS service published: %s; instance name: %s", type, instanceName);
+        ChipLogProgress(Discovery, "mDNS service published: %s; instance name: %s", StringOrNullMarker(type),
+                        StringOrNullMarker(instanceName));
     }
     else
     {
@@ -520,12 +521,13 @@ CHIP_ERROR DiscoveryImplPlatform::PublishService(const char * serviceType, TextE
 
     for (size_t i = 0; i < textEntrySize; i++)
     {
-        printf(" entry [%u] : %s %s\n", static_cast(i), textEntries[i].mKey, (char *) (textEntries[i].mData));
+        printf(" entry [%u] : %s %s\n", static_cast(i), StringOrNullMarker(textEntries[i].mKey),
+               StringOrNullMarker((char *) (textEntries[i].mData)));
     }
 
     for (size_t i = 0; i < subTypeSize; i++)
     {
-        printf(" type [%u] : %s\n", static_cast(i), subTypes[i]);
+        printf(" type [%u] : %s\n", static_cast(i), StringOrNullMarker(subTypes[i]));
     }
 #endif
 
diff --git a/src/lib/support/JniReferences.cpp b/src/lib/support/JniReferences.cpp
index 654af73e94cd1d..50568e3438aaf5 100644
--- a/src/lib/support/JniReferences.cpp
+++ b/src/lib/support/JniReferences.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -145,7 +145,7 @@ void JniReferences::ReportError(JNIEnv * env, CHIP_ERROR cbErr, const char * fun
 {
     if (cbErr == CHIP_JNI_ERROR_EXCEPTION_THROWN)
     {
-        ChipLogError(Support, "Java exception thrown in %s", functName);
+        ChipLogError(Support, "Java exception thrown in %s", StringOrNullMarker(functName));
         env->ExceptionDescribe();
     }
     else
@@ -166,7 +166,7 @@ void JniReferences::ReportError(JNIEnv * env, CHIP_ERROR cbErr, const char * fun
             errStr = ErrorStr(cbErr);
             break;
         }
-        ChipLogError(Support, "Error in %s : %s", functName, errStr);
+        ChipLogError(Support, "Error in %s : %s", StringOrNullMarker(functName), errStr);
     }
 }
 
diff --git a/src/lib/support/TestPersistentStorageDelegate.h b/src/lib/support/TestPersistentStorageDelegate.h
index 8fb05ca939e976..8d3bfd63e11bb2 100644
--- a/src/lib/support/TestPersistentStorageDelegate.h
+++ b/src/lib/support/TestPersistentStorageDelegate.h
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -57,7 +57,7 @@ class TestPersistentStorageDelegate : public PersistentStorageDelegate
     {
         if (mLoggingLevel >= LoggingLevel::kLogMutationAndReads)
         {
-            ChipLogDetail(Test, "TestPersistentStorageDelegate::SyncGetKeyValue: Get key '%s'", key);
+            ChipLogDetail(Test, "TestPersistentStorageDelegate::SyncGetKeyValue: Get key '%s'", StringOrNullMarker(key));
         }
 
         CHIP_ERROR err = SyncGetKeyValueInternal(key, buffer, size);
@@ -66,11 +66,13 @@ class TestPersistentStorageDelegate : public PersistentStorageDelegate
         {
             if (err == CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND)
             {
-                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncGetKeyValue: Key '%s' not found", key);
+                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncGetKeyValue: Key '%s' not found",
+                              StringOrNullMarker(key));
             }
             else if (err == CHIP_ERROR_PERSISTED_STORAGE_FAILED)
             {
-                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncGetKeyValue: Key '%s' is a poison key", key);
+                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncGetKeyValue: Key '%s' is a poison key",
+                              StringOrNullMarker(key));
             }
         }
 
@@ -91,7 +93,8 @@ class TestPersistentStorageDelegate : public PersistentStorageDelegate
         {
             if (err == CHIP_ERROR_PERSISTED_STORAGE_FAILED)
             {
-                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncSetKeyValue: Key '%s' is a poison key", key);
+                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncSetKeyValue: Key '%s' is a poison key",
+                              StringOrNullMarker(key));
             }
         }
 
@@ -102,7 +105,7 @@ class TestPersistentStorageDelegate : public PersistentStorageDelegate
     {
         if (mLoggingLevel >= LoggingLevel::kLogMutation)
         {
-            ChipLogDetail(Test, "TestPersistentStorageDelegate::SyncDeleteKeyValue, Delete key '%s'", key);
+            ChipLogDetail(Test, "TestPersistentStorageDelegate::SyncDeleteKeyValue, Delete key '%s'", StringOrNullMarker(key));
         }
         CHIP_ERROR err = SyncDeleteKeyValueInternal(key);
 
@@ -110,11 +113,13 @@ class TestPersistentStorageDelegate : public PersistentStorageDelegate
         {
             if (err == CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND)
             {
-                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncDeleteKeyValue: Key '%s' not found", key);
+                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncDeleteKeyValue: Key '%s' not found",
+                              StringOrNullMarker(key));
             }
             else if (err == CHIP_ERROR_PERSISTED_STORAGE_FAILED)
             {
-                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncDeleteKeyValue: Key '%s' is a poison key", key);
+                ChipLogDetail(Test, "--> TestPersistentStorageDelegate::SyncDeleteKeyValue: Key '%s' is a poison key",
+                              StringOrNullMarker(key));
             }
         }
 
diff --git a/src/platform/Ameba/AmebaConfig.cpp b/src/platform/Ameba/AmebaConfig.cpp
index cd03445fd0f63c..f5b1ae97faa387 100644
--- a/src/platform/Ameba/AmebaConfig.cpp
+++ b/src/platform/Ameba/AmebaConfig.cpp
@@ -104,7 +104,8 @@ CHIP_ERROR AmebaConfig::ReadConfigValue(Key key, bool & val)
 
     success = getPref_bool_new(key.Namespace, key.Name, &intVal);
     if (success != 0)
-        ChipLogProgress(DeviceLayer, "getPref_bool_new: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "getPref_bool_new: %s/%s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     val = (intVal != 0);
 
@@ -120,7 +121,8 @@ CHIP_ERROR AmebaConfig::ReadConfigValue(Key key, uint32_t & val)
 
     success = getPref_u32_new(key.Namespace, key.Name, &val);
     if (success != 0)
-        ChipLogProgress(DeviceLayer, "getPref_u32_new: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "getPref_u32_new: %s/%s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (success == 0)
         return CHIP_NO_ERROR;
@@ -134,7 +136,8 @@ CHIP_ERROR AmebaConfig::ReadConfigValue(Key key, uint64_t & val)
 
     success = getPref_u64_new(key.Namespace, key.Name, &val);
     if (success != 0)
-        ChipLogProgress(DeviceLayer, "getPref_u32_new: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "getPref_u32_new: %s/%s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (success == 0)
         return CHIP_NO_ERROR;
@@ -148,7 +151,8 @@ CHIP_ERROR AmebaConfig::ReadConfigValueStr(Key key, char * buf, size_t bufSize,
 
     success = getPref_str_new(key.Namespace, key.Name, buf, bufSize, &outLen);
     if (success != 0)
-        ChipLogProgress(DeviceLayer, "getPref_str_new: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "getPref_str_new: %s/%s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (success == 0)
     {
@@ -168,7 +172,8 @@ CHIP_ERROR AmebaConfig::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSiz
 
     success = getPref_bin_new(key.Namespace, key.Name, buf, bufSize, &outLen);
     if (success != 0)
-        ChipLogProgress(DeviceLayer, "getPref_bin_new: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "getPref_bin_new: %s/%s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (success == 0)
     {
@@ -192,9 +197,11 @@ CHIP_ERROR AmebaConfig::WriteConfigValue(Key key, bool val)
         value = 0;
     success = setPref_new(key.Namespace, key.Name, &value, 1);
     if (!success)
-        ChipLogError(DeviceLayer, "setPref: %s/%s = %s failed\n", key.Namespace, key.Name, value ? "true" : "false");
+        ChipLogError(DeviceLayer, "setPref: %s/%s = %s failed\n", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                     value ? "true" : "false");
     else
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", key.Namespace, key.Name, val ? "true" : "false");
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                        val ? "true" : "false");
 
     return CHIP_NO_ERROR;
 }
@@ -205,9 +212,11 @@ CHIP_ERROR AmebaConfig::WriteConfigValue(Key key, uint32_t val)
 
     success = setPref_new(key.Namespace, key.Name, (uint8_t *) &val, sizeof(uint32_t));
     if (!success)
-        ChipLogError(DeviceLayer, "setPref: %s/%s = %d(0x%x) failed\n", key.Namespace, key.Name, val, val);
+        ChipLogError(DeviceLayer, "setPref: %s/%s = %d(0x%x) failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), val, val);
     else
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", key.Namespace, key.Name, val, val);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), val, val);
 
     return CHIP_NO_ERROR;
 }
@@ -218,9 +227,11 @@ CHIP_ERROR AmebaConfig::WriteConfigValue(Key key, uint64_t val)
 
     success = setPref_new(key.Namespace, key.Name, (uint8_t *) &val, sizeof(uint64_t));
     if (!success)
-        ChipLogError(DeviceLayer, "setPref: %s/%s = %d(0x%x) failed\n", key.Namespace, key.Name, val, val);
+        ChipLogError(DeviceLayer, "setPref: %s/%s = %d(0x%x) failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), val, val);
     else
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", key.Namespace, key.Name, val, val);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), val, val);
 
     return CHIP_NO_ERROR;
 }
@@ -231,9 +242,11 @@ CHIP_ERROR AmebaConfig::WriteConfigValueStr(Key key, const char * str)
 
     success = setPref_new(key.Namespace, key.Name, (uint8_t *) str, strlen(str) + 1);
     if (!success)
-        ChipLogError(DeviceLayer, "setPref: %s/%s = %s failed\n", key.Namespace, key.Name, str);
+        ChipLogError(DeviceLayer, "setPref: %s/%s = %s failed\n", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                     StringOrNullMarker(str));
     else
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", key.Namespace, key.Name, str);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                        StringOrNullMarker(str));
     return CHIP_NO_ERROR;
 }
 
@@ -259,9 +272,10 @@ CHIP_ERROR AmebaConfig::WriteConfigValueBin(Key key, const uint8_t * data, size_
 
     success = setPref_new(key.Namespace, key.Name, (uint8_t *) data, dataLen);
     if (!success)
-        ChipLogError(DeviceLayer, "setPref: %s/%s failed\n", key.Namespace, key.Name);
+        ChipLogError(DeviceLayer, "setPref: %s/%s failed\n", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name));
     else
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %" PRId32 ")", key.Namespace, key.Name, dataLen);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %" PRId32 ")", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), dataLen);
 
     return CHIP_NO_ERROR;
 }
@@ -272,9 +286,10 @@ CHIP_ERROR AmebaConfig::ClearConfigValue(Key key)
 
     success = deleteKey(key.Namespace, key.Name);
     if (!success)
-        ChipLogProgress(DeviceLayer, "%s : %s/%s failed\n", __FUNCTION__, key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "%s : %s/%s failed\n", __FUNCTION__, StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
     else
-        ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name));
 
     return CHIP_NO_ERROR;
 }
diff --git a/src/platform/Beken/BekenConfig.cpp b/src/platform/Beken/BekenConfig.cpp
index ab2fdcac05e8fb..8fd6fd604edb68 100644
--- a/src/platform/Beken/BekenConfig.cpp
+++ b/src/platform/Beken/BekenConfig.cpp
@@ -94,7 +94,8 @@ CHIP_ERROR BekenConfig::ReadConfigValue(Key key, bool & val)
     success             = bk_read_data(key.Namespace, key.Name, (char *) &intval, 1, &out_length);
 
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", (char *) key.Namespace, (char *) key.Name);
+        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     val = (intval != 0);
     if (kNoErr == success)
@@ -112,7 +113,8 @@ CHIP_ERROR BekenConfig::ReadConfigValue(Key key, uint32_t & val)
     success = bk_read_data(key.Namespace, key.Name, (char *) &temp_data, sizeof(uint32_t), &out_length);
 
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", (char *) key.Namespace, (char *) key.Name);
+        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
     val = temp_data;
 
     if (kNoErr == success)
@@ -130,7 +132,8 @@ CHIP_ERROR BekenConfig::ReadConfigValue(Key key, uint64_t & val)
     success = bk_read_data(key.Namespace, key.Name, (char *) &temp_data, sizeof(uint64_t), &out_length);
 
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", (char *) key.Namespace, (char *) key.Name);
+        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
     val = temp_data;
 
     if (kNoErr == success)
@@ -148,7 +151,8 @@ CHIP_ERROR BekenConfig::ReadConfigValueStr(Key key, char * buf, size_t bufSize,
     outLen  = out_length;
 
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", (char *) key.Namespace, (char *) key.Name);
+        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (kNoErr == success)
     {
@@ -170,7 +174,8 @@ CHIP_ERROR BekenConfig::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSiz
     outLen  = out_length;
 
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", (char *) key.Namespace, (char *) key.Name);
+        ChipLogProgress(DeviceLayer, "bk_read_data: %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
 
     if (kNoErr == success)
     {
@@ -199,8 +204,8 @@ CHIP_ERROR BekenConfig::WriteConfigValue(Key key, bool val)
 
     success = bk_write_data(key.Namespace, key.Name, (char *) &value, 1);
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s  %s  %s failed\n", (char *) key.Namespace, (char *) key.Name,
-                     value ? "true" : "false");
+        ChipLogError(DeviceLayer, "bk_write_data: %s  %s  %s failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), value ? "true" : "false");
 
     return CHIP_NO_ERROR;
 }
@@ -211,8 +216,8 @@ CHIP_ERROR BekenConfig::WriteConfigValue(Key key, uint32_t val)
 
     success = bk_write_data(key.Namespace, key.Name, (char *) &val, sizeof(val));
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s  %s = %lu(0x%lx) failed\n", (char *) key.Namespace, (char *) key.Name, val,
-                     val);
+        ChipLogError(DeviceLayer, "bk_write_data: %s  %s = %lu(0x%lx) failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), val, val);
 
     return CHIP_NO_ERROR;
 }
@@ -223,8 +228,8 @@ CHIP_ERROR BekenConfig::WriteConfigValue(Key key, uint64_t val)
 
     success = bk_write_data(key.Namespace, key.Name, (char *) &val, sizeof(val));
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s  %s = %llu(0x%llx) failed\n", (char *) key.Namespace, (char *) key.Name, val,
-                     val);
+        ChipLogError(DeviceLayer, "bk_write_data: %s  %s = %llu(0x%llx) failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), val, val);
 
     return CHIP_NO_ERROR;
 }
@@ -235,7 +240,8 @@ CHIP_ERROR BekenConfig::WriteConfigValueStr(Key key, const char * str)
 
     success = bk_write_data(key.Namespace, key.Name, (char *) str, strlen(str));
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s %s %s failed\n", (char *) key.Namespace, (char *) key.Name, (char *) str);
+        ChipLogError(DeviceLayer, "bk_write_data: %s %s %s failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), StringOrNullMarker(str));
 
     return CHIP_NO_ERROR;
 }
@@ -247,7 +253,8 @@ CHIP_ERROR BekenConfig::WriteConfigValueStr(Key key, const char * str, size_t st
 
     success = bk_write_data(key.Namespace, key.Name, (char *) str, strLen);
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s %s %s failed\n", (char *) key.Namespace, (char *) key.Name, (char *) str);
+        ChipLogError(DeviceLayer, "bk_write_data: %s %s %s failed\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name), StringOrNullMarker(str));
 
     return CHIP_NO_ERROR;
 }
@@ -258,7 +265,8 @@ CHIP_ERROR BekenConfig::WriteConfigValueBin(Key key, const uint8_t * data, size_
 
     success = bk_write_data(key.Namespace, key.Name, (char *) data, dataLen);
     if (kNoErr != success)
-        ChipLogError(DeviceLayer, "bk_write_data: %s  %s failed \r\n", key.Namespace, key.Name);
+        ChipLogError(DeviceLayer, "bk_write_data: %s  %s failed \r\n", StringOrNullMarker(key.Namespace),
+                     StringOrNullMarker(key.Name));
 
     return CHIP_NO_ERROR;
 }
@@ -269,7 +277,8 @@ CHIP_ERROR BekenConfig::ClearConfigValue(Key key)
 
     success = bk_clean_data(key.Namespace, key.Name);
     if (kNoErr != success)
-        ChipLogProgress(DeviceLayer, "%s : %s  %s failed\n", __FUNCTION__, key.Namespace, key.Name);
+        ChipLogProgress(DeviceLayer, "%s : %s  %s failed\n", __FUNCTION__, StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name));
     return CHIP_NO_ERROR;
 }
 
diff --git a/src/platform/Beken/NetworkCommissioningWiFiDriver.cpp b/src/platform/Beken/NetworkCommissioningWiFiDriver.cpp
index 03378b55e67da1..94f8b4e9110ef2 100644
--- a/src/platform/Beken/NetworkCommissioningWiFiDriver.cpp
+++ b/src/platform/Beken/NetworkCommissioningWiFiDriver.cpp
@@ -147,7 +147,7 @@ Status BekenWiFiDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, Mutabl
 
 CHIP_ERROR BekenWiFiDriver::ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, const char * key, uint8_t keyLen)
 {
-    ChipLogProgress(NetworkProvisioning, "BekenWiFiDriver::ConnectWiFiNetwork....ssid:%s", ssid);
+    ChipLogProgress(NetworkProvisioning, "BekenWiFiDriver::ConnectWiFiNetwork....ssid:%s", StringOrNullMarker(ssid));
     ReturnErrorOnFailure(ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Disabled));
 
     wifi_sta_config_t sta_config;
diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp
index 8d08b4c3f3daca..c29a9c33b87ba3 100644
--- a/src/platform/Darwin/DnssdImpl.cpp
+++ b/src/platform/Darwin/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -106,7 +106,7 @@ void LogOnFailure(const char * name, DNSServiceErrorType err)
 {
     if (kDNSServiceErr_NoError != err)
     {
-        ChipLogError(Discovery, "%s (%s)", name, Error::ToString(err));
+        ChipLogError(Discovery, "%s (%s)", StringOrNullMarker(name), Error::ToString(err));
     }
 }
 
@@ -171,7 +171,8 @@ namespace {
 static void OnRegister(DNSServiceRef sdRef, DNSServiceFlags flags, DNSServiceErrorType err, const char * name, const char * type,
                        const char * domain, void * context)
 {
-    ChipLogDetail(Discovery, "Mdns: %s name: %s, type: %s, domain: %s, flags: %d", __func__, name, type, domain, flags);
+    ChipLogDetail(Discovery, "Mdns: %s name: %s, type: %s, domain: %s, flags: %d", __func__, StringOrNullMarker(name),
+                  StringOrNullMarker(type), StringOrNullMarker(domain), flags);
 
     auto sdCtx = reinterpret_cast(context);
     sdCtx->Finalize(err);
@@ -180,8 +181,8 @@ static void OnRegister(DNSServiceRef sdRef, DNSServiceFlags flags, DNSServiceErr
 CHIP_ERROR Register(void * context, DnssdPublishCallback callback, uint32_t interfaceId, const char * type, const char * name,
                     uint16_t port, ScopedTXTRecord & record, Inet::IPAddressType addressType, const char * hostname)
 {
-    ChipLogDetail(Discovery, "Registering service %s on host %s with port %u and type: %s on interface id: %" PRIu32, name,
-                  hostname, port, type, interfaceId);
+    ChipLogDetail(Discovery, "Registering service %s on host %s with port %u and type: %s on interface id: %" PRIu32,
+                  StringOrNullMarker(name), StringOrNullMarker(hostname), port, StringOrNullMarker(type), interfaceId);
 
     RegisterContext * sdCtx = nullptr;
     if (CHIP_NO_ERROR == MdnsContexts::GetInstance().GetRegisterContextOfType(type, &sdCtx))
@@ -206,8 +207,8 @@ CHIP_ERROR Register(void * context, DnssdPublishCallback callback, uint32_t inte
 
 void OnBrowseAdd(BrowseContext * context, const char * name, const char * type, const char * domain, uint32_t interfaceId)
 {
-    ChipLogDetail(Discovery, "Mdns: %s  name: %s, type: %s, domain: %s, interface: %" PRIu32, __func__, name, type, domain,
-                  interfaceId);
+    ChipLogDetail(Discovery, "Mdns: %s  name: %s, type: %s, domain: %s, interface: %" PRIu32, __func__, StringOrNullMarker(name),
+                  StringOrNullMarker(type), StringOrNullMarker(domain), interfaceId);
 
     VerifyOrReturn(strcmp(kLocalDot, domain) == 0);
 
@@ -233,9 +234,10 @@ void OnBrowseAdd(BrowseContext * context, const char * name, const char * type,
 
 void OnBrowseRemove(BrowseContext * context, const char * name, const char * type, const char * domain, uint32_t interfaceId)
 {
-    ChipLogDetail(Discovery, "Mdns: %s  name: %s, type: %s, domain: %s, interface: %" PRIu32, __func__, name, type, domain,
-                  interfaceId);
+    ChipLogDetail(Discovery, "Mdns: %s  name: %s, type: %s, domain: %s, interface: %" PRIu32, __func__, StringOrNullMarker(name),
+                  StringOrNullMarker(type), StringOrNullMarker(domain), interfaceId);
 
+    VerifyOrReturn(name != nullptr);
     VerifyOrReturn(strcmp(kLocalDot, domain) == 0);
 
     context->services.erase(std::remove_if(context->services.begin(), context->services.end(),
@@ -267,7 +269,7 @@ CHIP_ERROR Browse(void * context, DnssdBrowseCallback callback, uint32_t interfa
     auto sdCtx = chip::Platform::New(context, callback, protocol);
     VerifyOrReturnError(nullptr != sdCtx, CHIP_ERROR_NO_MEMORY);
 
-    ChipLogProgress(Discovery, "Browsing for: %s", type);
+    ChipLogProgress(Discovery, "Browsing for: %s", StringOrNullMarker(type));
     DNSServiceRef sdRef;
     auto err = DNSServiceBrowse(&sdRef, kBrowseFlags, interfaceId, type, kLocalDot, OnBrowse, sdCtx);
     VerifyOrReturnError(kDNSServiceErr_NoError == err, sdCtx->Finalize(err));
@@ -339,7 +341,8 @@ static void OnResolve(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t inter
 static CHIP_ERROR Resolve(void * context, DnssdResolveCallback callback, uint32_t interfaceId,
                           chip::Inet::IPAddressType addressType, const char * type, const char * name)
 {
-    ChipLogDetail(Discovery, "Resolve type=%s name=%s interface=%" PRIu32, type, name, interfaceId);
+    ChipLogDetail(Discovery, "Resolve type=%s name=%s interface=%" PRIu32, StringOrNullMarker(type), StringOrNullMarker(name),
+                  interfaceId);
 
     auto sdCtx = chip::Platform::New(context, callback, addressType);
     VerifyOrReturnError(nullptr != sdCtx, CHIP_ERROR_NO_MEMORY);
diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp
index 92c8946b75fc75..8f57055cb27e5f 100644
--- a/src/platform/ESP32/ESP32Config.cpp
+++ b/src/platform/ESP32/ESP32Config.cpp
@@ -250,7 +250,8 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, bool val)
     // Commit the value to the persistent store.
     ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", key.Namespace, key.Name, val ? "true" : "false");
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                    val ? "true" : "false");
     return CHIP_NO_ERROR;
 }
 
@@ -264,7 +265,8 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, uint32_t val)
     // Commit the value to the persistent store.
     ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
     return CHIP_NO_ERROR;
 }
 
@@ -278,7 +280,8 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, uint64_t val)
     // Commit the value to the persistent store.
     ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
     return CHIP_NO_ERROR;
 }
 
@@ -294,7 +297,8 @@ CHIP_ERROR ESP32Config::WriteConfigValueStr(Key key, const char * str)
         // Commit the value to the persistent store.
         ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", key.Namespace, key.Name, str);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                        str);
         return CHIP_NO_ERROR;
     }
 
@@ -326,7 +330,8 @@ CHIP_ERROR ESP32Config::WriteConfigValueBin(Key key, const uint8_t * data, size_
         // Commit the value to the persistent store.
         ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %" PRId32 ")", key.Namespace, key.Name, dataLen);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %" PRId32 ")", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), dataLen);
         return CHIP_NO_ERROR;
     }
 
@@ -349,7 +354,7 @@ CHIP_ERROR ESP32Config::ClearConfigValue(Key key)
     // Commit the value to the persistent store.
     ReturnMappedErrorOnFailure(nvs_commit(handle));
 
-    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", key.Namespace, key.Name);
+    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name));
     return CHIP_NO_ERROR;
 }
 
diff --git a/src/platform/ESP32/KeyValueStoreManagerImpl.cpp b/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
index 9b2ee12e000a01..5cd113e3e65c63 100644
--- a/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
+++ b/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -58,7 +58,7 @@ bool HashIfLongKey(const char * key, char * keyHash)
     Encoding::BytesToHex(hashBuffer, NVS_KEY_NAME_MAX_SIZE / 2, keyHash, NVS_KEY_NAME_MAX_SIZE, flags);
     keyHash[NVS_KEY_NAME_MAX_SIZE - 1] = 0;
 
-    ChipLogDetail(DeviceLayer, "Using hash:%s for nvs key:%s", keyHash, key);
+    ChipLogDetail(DeviceLayer, "Using hash:%s for nvs key:%s", keyHash, StringOrNullMarker(key));
     return true;
 }
 } // namespace
diff --git a/src/platform/Linux/CHIPLinuxStorage.cpp b/src/platform/Linux/CHIPLinuxStorage.cpp
index 03c681c5e1a76d..9a8afb59d706fa 100644
--- a/src/platform/Linux/CHIPLinuxStorage.cpp
+++ b/src/platform/Linux/CHIPLinuxStorage.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -53,10 +53,11 @@ CHIP_ERROR ChipLinuxStorage::Init(const char * configFile)
 {
     CHIP_ERROR retval = CHIP_NO_ERROR;
 
-    ChipLogDetail(DeviceLayer, "ChipLinuxStorage::Init: Using KVS config file: %s", configFile);
+    ChipLogDetail(DeviceLayer, "ChipLinuxStorage::Init: Using KVS config file: %s", StringOrNullMarker(configFile));
     if (mInitialized)
     {
-        ChipLogError(DeviceLayer, "ChipLinuxStorage::Init: Attempt to re-initialize with KVS config file: %s", configFile);
+        ChipLogError(DeviceLayer, "ChipLinuxStorage::Init: Attempt to re-initialize with KVS config file: %s",
+                     StringOrNullMarker(configFile));
         return CHIP_NO_ERROR;
     }
 
diff --git a/src/platform/Linux/ConnectivityManagerImpl.cpp b/src/platform/Linux/ConnectivityManagerImpl.cpp
index 41b8af50158bd9..866d1aec1485fa 100644
--- a/src/platform/Linux/ConnectivityManagerImpl.cpp
+++ b/src/platform/Linux/ConnectivityManagerImpl.cpp
@@ -390,7 +390,8 @@ void ConnectivityManagerImpl::_OnWpaPropertiesChanged(WpaFiW1Wpa_supplicant1Inte
         {
             gchar * value_str;
             value_str = g_variant_print(value, TRUE);
-            ChipLogProgress(DeviceLayer, "wpa_supplicant:PropertiesChanged:key:%s -> %s", key, value_str);
+            ChipLogProgress(DeviceLayer, "wpa_supplicant:PropertiesChanged:key:%s -> %s", StringOrNullMarker(key),
+                            StringOrNullMarker(value_str));
 
             if (g_strcmp0(key, "State") == 0)
             {
@@ -665,7 +666,7 @@ void ConnectivityManagerImpl::_OnWpaInterfaceRemoved(WpaFiW1Wpa_supplicant1 * pr
 
     if (g_strcmp0(mWpaSupplicant.interfacePath, path) == 0)
     {
-        ChipLogProgress(DeviceLayer, "wpa_supplicant: WiFi interface removed: %s", path);
+        ChipLogProgress(DeviceLayer, "wpa_supplicant: WiFi interface removed: %s", StringOrNullMarker(path));
 
         mWpaSupplicant.state = GDBusWpaSupplicant::WPA_NO_INTERFACE_PATH;
 
@@ -1199,7 +1200,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(uint8_t & securityType)
     }
 
     mode = wpa_fi_w1_wpa_supplicant1_interface_get_current_auth_mode(mWpaSupplicant.iface);
-    ChipLogProgress(DeviceLayer, "wpa_supplicant: current Wi-Fi security type: %s", mode);
+    ChipLogProgress(DeviceLayer, "wpa_supplicant: current Wi-Fi security type: %s", StringOrNullMarker(mode));
 
     if (strncmp(mode, "WPA-PSK", 7) == 0)
     {
@@ -1292,7 +1293,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetConfiguredNetwork(NetworkCommissioning::N
     // TODO: wpa_supplicant will return ssid with quotes! We should have a better way to get the actual ssid in bytes.
     gsize length_actual = length - 2;
     VerifyOrReturnError(length_actual <= sizeof(network.networkID), CHIP_ERROR_INTERNAL);
-    ChipLogDetail(DeviceLayer, "Current connected network: %s", ssidStr);
+    ChipLogDetail(DeviceLayer, "Current connected network: %s", StringOrNullMarker(ssidStr));
     memcpy(network.networkID, ssidStr + 1, length_actual);
     network.networkIDLen = length_actual;
     return CHIP_NO_ERROR;
@@ -1461,7 +1462,7 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
     // may be gone when we try to get the properties.
     if (ssid == nullptr || bssid == nullptr)
     {
-        ChipLogDetail(DeviceLayer, "wpa_supplicant: BSS not found: %s", bssPath);
+        ChipLogDetail(DeviceLayer, "wpa_supplicant: BSS not found: %s", StringOrNullMarker(bssPath));
         return false;
     }
 
@@ -1486,7 +1487,8 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
         bssidLen = 0;
         ChipLogError(DeviceLayer, "Got a network with bssid not equals to 6");
     }
-    ChipLogDetail(DeviceLayer, "Network Found: %.*s (%s) Signal:%d", int(ssidLen), ssidStr, bssidStr, signal);
+    ChipLogDetail(DeviceLayer, "Network Found: %.*s (%s) Signal:%d", int(ssidLen), StringOrNullMarker((const gchar *) ssidStr),
+                  bssidStr, signal);
 
     // A flag for enterprise encryption option to avoid returning open for these networks by mistake
     // TODO: The following code will mistakenly recognize WEP encryption as OPEN network, this should be fixed by reading
diff --git a/src/platform/Linux/DiagnosticDataProviderImpl.cpp b/src/platform/Linux/DiagnosticDataProviderImpl.cpp
index 9f039bd4ab3434..d70b074456677c 100644
--- a/src/platform/Linux/DiagnosticDataProviderImpl.cpp
+++ b/src/platform/Linux/DiagnosticDataProviderImpl.cpp
@@ -93,7 +93,7 @@ CHIP_ERROR GetEthernetStatsCount(EthernetStatsCountType type, uint64_t & count)
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -157,7 +157,7 @@ CHIP_ERROR GetWiFiStatsCount(WiFiStatsCountType type, uint64_t & count)
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -615,7 +615,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::ResetEthNetworkDiagnosticsCounts()
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -780,7 +780,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::ResetWiFiNetworkDiagnosticsCounts()
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
diff --git a/src/platform/Linux/DnssdImpl.cpp b/src/platform/Linux/DnssdImpl.cpp
index c813177729ebcb..29665881efdcee 100644
--- a/src/platform/Linux/DnssdImpl.cpp
+++ b/src/platform/Linux/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -572,7 +572,7 @@ DnssdServiceProtocol GetProtocolInType(const char * type)
 
     if (deliminator == nullptr)
     {
-        ChipLogError(Discovery, "Failed to find protocol in type: %s", type);
+        ChipLogError(Discovery, "Failed to find protocol in type: %s", StringOrNullMarker(type));
         return DnssdServiceProtocol::kDnssdProtocolUnknown;
     }
 
@@ -585,7 +585,7 @@ DnssdServiceProtocol GetProtocolInType(const char * type)
         return DnssdServiceProtocol::kDnssdProtocolUdp;
     }
 
-    ChipLogError(Discovery, "Unknown protocol in type: %s", type);
+    ChipLogError(Discovery, "Unknown protocol in type: %s", StringOrNullMarker(type));
     return DnssdServiceProtocol::kDnssdProtocolUnknown;
 }
 
diff --git a/src/platform/Linux/NetworkCommissioningWiFiDriver.cpp b/src/platform/Linux/NetworkCommissioningWiFiDriver.cpp
index 2e51be5fef2b1d..fa7b8322cff5ce 100644
--- a/src/platform/Linux/NetworkCommissioningWiFiDriver.cpp
+++ b/src/platform/Linux/NetworkCommissioningWiFiDriver.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -156,7 +156,8 @@ void LinuxWiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callb
 
     VerifyOrExit(NetworkMatch(mStagingNetwork, networkId), networkingStatus = Status::kNetworkIDNotFound);
 
-    ChipLogProgress(NetworkProvisioning, "LinuxNetworkCommissioningDelegate: SSID: %s", networkId.data());
+    ChipLogProgress(NetworkProvisioning, "LinuxNetworkCommissioningDelegate: SSID: %s",
+                    StringOrNullMarker((char *) networkId.data()));
 
     err = ConnectivityMgrImpl().ConnectWiFiNetworkAsync(ByteSpan(mStagingNetwork.ssid, mStagingNetwork.ssidLen),
                                                         ByteSpan(mStagingNetwork.credentials, mStagingNetwork.credentialsLen),
diff --git a/src/platform/Linux/PosixConfig.cpp b/src/platform/Linux/PosixConfig.cpp
index 69a570a8f6e242..6daa22e4f78525 100644
--- a/src/platform/Linux/PosixConfig.cpp
+++ b/src/platform/Linux/PosixConfig.cpp
@@ -259,7 +259,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, bool val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", key.Namespace, key.Name, val ? "true" : "false");
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                    val ? "true" : "false");
 
 exit:
     return err;
@@ -280,7 +281,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint16_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %u (0x%X)", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %u (0x%X)", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name), val,
+                    val);
 
 exit:
     return err;
@@ -301,7 +303,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint32_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
 
 exit:
     return err;
@@ -322,7 +325,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint64_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
 
 exit:
     return err;
@@ -345,7 +349,8 @@ CHIP_ERROR PosixConfig::WriteConfigValueStr(Key key, const char * str)
         err = storage->Commit();
         SuccessOrExit(err);
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", key.Namespace, key.Name, str);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                        str);
     }
 
     else
@@ -400,8 +405,8 @@ CHIP_ERROR PosixConfig::WriteConfigValueBin(Key key, const uint8_t * data, size_
         err = storage->Commit();
         SuccessOrExit(err);
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %u)", key.Namespace, key.Name,
-                        static_cast(dataLen));
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %u)", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), static_cast(dataLen));
     }
     else
     {
@@ -432,7 +437,7 @@ CHIP_ERROR PosixConfig::ClearConfigValue(Key key)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", key.Namespace, key.Name);
+    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name));
 
 exit:
     return err;
diff --git a/src/platform/Linux/ThreadStackManagerImpl.cpp b/src/platform/Linux/ThreadStackManagerImpl.cpp
index 2f9f869d7a666c..75a6d28c803ef1 100644
--- a/src/platform/Linux/ThreadStackManagerImpl.cpp
+++ b/src/platform/Linux/ThreadStackManagerImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -101,7 +101,7 @@ void ThreadStackManagerImpl::OnDbusPropertiesChanged(OpenthreadIoOpenthreadBorde
                 const gchar * value_str = g_variant_get_string(value, nullptr);
                 if (value_str == nullptr)
                     continue;
-                ChipLogProgress(DeviceLayer, "Thread role changed to: %s", value_str);
+                ChipLogProgress(DeviceLayer, "Thread role changed to: %s", StringOrNullMarker(value_str));
                 me->ThreadDevcieRoleChangedHandler(value_str);
             }
         }
diff --git a/src/platform/Linux/bluez/AdapterIterator.cpp b/src/platform/Linux/bluez/AdapterIterator.cpp
index 4f9cc0af1dc462..ec2b58b6bfe6de 100644
--- a/src/platform/Linux/bluez/AdapterIterator.cpp
+++ b/src/platform/Linux/bluez/AdapterIterator.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -91,7 +91,7 @@ bool AdapterIterator::Advance()
 
         if (sscanf(path, BLUEZ_PATH "/hci%u", &index) != 1)
         {
-            ChipLogError(DeviceLayer, "Failed to extract HCI index from '%s'", path);
+            ChipLogError(DeviceLayer, "Failed to extract HCI index from '%s'", StringOrNullMarker(path));
             index = 0;
         }
 
diff --git a/src/platform/Linux/bluez/ChipDeviceScanner.cpp b/src/platform/Linux/bluez/ChipDeviceScanner.cpp
index 0d18e9273136af..46e17ce5b17089 100644
--- a/src/platform/Linux/bluez/ChipDeviceScanner.cpp
+++ b/src/platform/Linux/bluez/ChipDeviceScanner.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -259,7 +259,7 @@ void ChipDeviceScanner::RemoveDevice(BluezDevice1 * device)
 
     if (!bluez_adapter1_call_remove_device_sync(mAdapter, devicePath, nullptr, &error))
     {
-        ChipLogDetail(Ble, "Failed to remove device %s: %s", devicePath, error->message);
+        ChipLogDetail(Ble, "Failed to remove device %s: %s", StringOrNullMarker(devicePath), error->message);
         g_error_free(error);
     }
 }
diff --git a/src/platform/Linux/bluez/Helper.cpp b/src/platform/Linux/bluez/Helper.cpp
index dbf088168e1fcc..b00ca750aadac9 100644
--- a/src/platform/Linux/bluez/Helper.cpp
+++ b/src/platform/Linux/bluez/Helper.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020-2021 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -155,7 +155,7 @@ static BluezLEAdvertisement1 * BluezAdvertisingCreate(BluezEndpoint * apEndpoint
     serviceUUID = g_variant_builder_end(&serviceUUIDsBuilder);
 
     debugStr = g_variant_print(serviceData, TRUE);
-    ChipLogDetail(DeviceLayer, "SET service data to %s", debugStr);
+    ChipLogDetail(DeviceLayer, "SET service data to %s", StringOrNullMarker(debugStr));
     g_free(debugStr);
 
     bluez_leadvertisement1_set_type_(adv, (apEndpoint->mType & BLUEZ_ADV_TYPE_CONNECTABLE) ? "peripheral" : "broadcast");
@@ -463,7 +463,7 @@ static gboolean BluezCharacteristicAcquireWrite(BluezGattCharacteristic1 * aChar
 #if CHIP_ERROR_LOGGING
         errStr = strerror(errno);
 #endif // CHIP_ERROR_LOGGING
-        ChipLogError(DeviceLayer, "FAIL: socketpair: %s in %s", errStr, __func__);
+        ChipLogError(DeviceLayer, "FAIL: socketpair: %s in %s", StringOrNullMarker(errStr), __func__);
         g_dbus_method_invocation_return_dbus_error(aInvocation, "org.bluez.Error.Failed", "FD creation failed");
         goto exit;
     }
@@ -544,7 +544,7 @@ static gboolean BluezCharacteristicAcquireNotify(BluezGattCharacteristic1 * aCha
 #if CHIP_ERROR_LOGGING
         errStr = strerror(errno);
 #endif // CHIP_ERROR_LOGGING
-        ChipLogError(DeviceLayer, "FAIL: socketpair: %s in %s", errStr, __func__);
+        ChipLogError(DeviceLayer, "FAIL: socketpair: %s in %s", StringOrNullMarker(errStr), __func__);
         g_dbus_method_invocation_return_dbus_error(aInvocation, "org.bluez.Error.Failed", "FD creation failed");
         goto exit;
     }
diff --git a/src/platform/LockTracker.cpp b/src/platform/LockTracker.cpp
index ab0f9b8d501f22..671f45d2efe33e 100644
--- a/src/platform/LockTracker.cpp
+++ b/src/platform/LockTracker.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -31,7 +31,7 @@ void AssertChipStackLockedByCurrentThread(const char * file, int line)
 {
     if (!chip::DeviceLayer::PlatformMgr().IsChipStackLockedByCurrentThread())
     {
-        ChipLogError(DeviceLayer, "Chip stack locking error at '%s:%d'. Code is unsafe/racy", file, line);
+        ChipLogError(DeviceLayer, "Chip stack locking error at '%s:%d'. Code is unsafe/racy", StringOrNullMarker(file), line);
 #if CHIP_STACK_LOCK_TRACKING_ERROR_FATAL
         chipDie();
 #endif
diff --git a/src/platform/OpenThread/DnssdImpl.cpp b/src/platform/OpenThread/DnssdImpl.cpp
index 5800afa202198b..c85fba514f085a 100644
--- a/src/platform/OpenThread/DnssdImpl.cpp
+++ b/src/platform/OpenThread/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -93,7 +93,7 @@ CHIP_ERROR ChipDnssdBrowse(const char * type, DnssdServiceProtocol protocol, Ine
         return CHIP_ERROR_INVALID_ARGUMENT;
 
     char serviceType[Dnssd::kDnssdFullTypeAndProtocolMaxSize + 1]; // +1 for null-terminator
-    snprintf(serviceType, sizeof(serviceType), "%s.%s", type, GetProtocolString(protocol));
+    snprintf(serviceType, sizeof(serviceType), "%s.%s", StringOrNullMarker(type), GetProtocolString(protocol));
 
     *browseIdentifier = reinterpret_cast(nullptr);
     return ThreadStackMgr().DnsBrowse(serviceType, callback, context);
diff --git a/src/platform/OpenThread/OpenThreadUtils.cpp b/src/platform/OpenThread/OpenThreadUtils.cpp
index daeae32d0e62f8..662b55eac60133 100644
--- a/src/platform/OpenThread/OpenThreadUtils.cpp
+++ b/src/platform/OpenThread/OpenThreadUtils.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *    Copyright (c) 2019 Nest Labs, Inc.
  *    All rights reserved.
  *
@@ -237,13 +237,13 @@ void LogOpenThreadPacket(const char * titleStr, otMessage * pkt)
             snprintf(destStr + strlen(destStr), 13, ", port %u", Encoding::BigEndian::Get16(IPv6_DestPort));
         }
 
-        ChipLogDetail(DeviceLayer, "%s: %s, len %u", titleStr, type, pktLen);
+        ChipLogDetail(DeviceLayer, "%s: %s, len %u", StringOrNullMarker(titleStr), type, pktLen);
         ChipLogDetail(DeviceLayer, "    src  %s", srcStr);
         ChipLogDetail(DeviceLayer, "    dest %s", destStr);
     }
     else
     {
-        ChipLogDetail(DeviceLayer, "%s: %s, len %u", titleStr, "(decode error)", pktLen);
+        ChipLogDetail(DeviceLayer, "%s: %s, len %u", StringOrNullMarker(titleStr), "(decode error)", pktLen);
     }
 
 #endif // CHIP_DETAIL_LOGGING
diff --git a/src/platform/Tizen/AppPreference.cpp b/src/platform/Tizen/AppPreference.cpp
index d10efac30f399b..722a0fd9eb9f54 100644
--- a/src/platform/Tizen/AppPreference.cpp
+++ b/src/platform/Tizen/AppPreference.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -54,7 +54,7 @@ CHIP_ERROR GetData(const char * key, void * data, size_t dataSize, size_t * getD
     }
     if (err != PREFERENCE_ERROR_NONE)
     {
-        ChipLogError(DeviceLayer, "Failed to get preference [%s]: %s", key, get_error_message(err));
+        ChipLogError(DeviceLayer, "Failed to get preference [%s]: %s", StringOrNullMarker(key), get_error_message(err));
         return CHIP_ERROR_INCORRECT_STATE;
     }
 
@@ -96,7 +96,7 @@ CHIP_ERROR SaveData(const char * key, const void * data, size_t dataSize)
     }
     if (err != PREFERENCE_ERROR_NONE)
     {
-        ChipLogError(DeviceLayer, "Failed to set preference [%s]: %s", key, get_error_message(err));
+        ChipLogError(DeviceLayer, "Failed to set preference [%s]: %s", StringOrNullMarker(key), get_error_message(err));
         return CHIP_ERROR_INCORRECT_STATE;
     }
 
@@ -113,7 +113,7 @@ CHIP_ERROR RemoveData(const char * key)
     }
     if (err != PREFERENCE_ERROR_NONE)
     {
-        ChipLogError(DeviceLayer, "Failed to remove preference [%s]: %s", key, get_error_message(err));
+        ChipLogError(DeviceLayer, "Failed to remove preference [%s]: %s", StringOrNullMarker(key), get_error_message(err));
         return CHIP_ERROR_INCORRECT_STATE;
     }
 
diff --git a/src/platform/Tizen/BLEManagerImpl.cpp b/src/platform/Tizen/BLEManagerImpl.cpp
index 8faed467de1463..7bb738fe40ea34 100644
--- a/src/platform/Tizen/BLEManagerImpl.cpp
+++ b/src/platform/Tizen/BLEManagerImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020-2021 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *    Copyright (c) 2018 Nest Labs, Inc.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -151,7 +151,7 @@ static void __ReadValueRequestedCb(const char * remoteAddress, int requestId, bt
 
     VerifyOrReturn(__GetAttInfo(gattHandle, &uuid, &type) == BT_ERROR_NONE,
                    ChipLogError(DeviceLayer, "Failed to fetch GATT Attribute from GATT handle"));
-    ChipLogProgress(DeviceLayer, "Read Requested on %s: %s", __ConvertAttTypeToStr(type), uuid);
+    ChipLogProgress(DeviceLayer, "Read Requested on %s: %s", __ConvertAttTypeToStr(type), StringOrNullMarker(uuid));
     g_free(uuid);
 
     ret = bt_gatt_get_value(gattHandle, &value, &len);
@@ -178,7 +178,7 @@ void BLEManagerImpl::WriteValueRequestedCb(const char * remoteAddress, int reque
     VerifyOrReturn(__GetAttInfo(gattHandle, &uuid, &type) == BT_ERROR_NONE,
                    ChipLogError(DeviceLayer, "Failed to fetch GATT Attribute from GATT handle"));
 
-    ChipLogProgress(DeviceLayer, "Write Requested on %s: %s", __ConvertAttTypeToStr(type), uuid);
+    ChipLogProgress(DeviceLayer, "Write Requested on %s: %s", __ConvertAttTypeToStr(type), StringOrNullMarker(uuid));
     ChipLogProgress(DeviceLayer, "Write Value (len: %d): %.*s ", len, len, value);
     g_free(uuid);
 
@@ -212,7 +212,8 @@ void BLEManagerImpl::NotificationStateChangedCb(bool notify, bt_gatt_server_h se
     VerifyOrReturn(__GetAttInfo(gattHandle, &uuid, &type) == BT_ERROR_NONE,
                    ChipLogError(DeviceLayer, "Failed to fetch GATT Attribute from GATT handle"));
 
-    ChipLogProgress(DeviceLayer, "Notification State Changed %d on %s: %s", notify, __ConvertAttTypeToStr(type), uuid);
+    ChipLogProgress(DeviceLayer, "Notification State Changed %d on %s: %s", notify, __ConvertAttTypeToStr(type),
+                    StringOrNullMarker(uuid));
     g_free(uuid);
     sInstance.NotifyBLESubscribed(notify ? true : false, conn);
 }
@@ -249,7 +250,8 @@ void BLEManagerImpl::IndicationConfirmationCb(int result, const char * remoteAdd
 
     conn = static_cast(g_hash_table_lookup(sInstance.mConnectionMap, remoteAddress));
 
-    VerifyOrReturn(conn != nullptr, ChipLogError(DeviceLayer, "Could not find connection for [%s]", remoteAddress));
+    VerifyOrReturn(conn != nullptr,
+                   ChipLogError(DeviceLayer, "Could not find connection for [%s]", StringOrNullMarker(remoteAddress)));
     VerifyOrReturn(sInstance.mGattCharC2Handle == characteristic,
                    ChipLogError(DeviceLayer, "Gatt characteristic handle did not match"));
 
@@ -418,7 +420,7 @@ gboolean BLEManagerImpl::ConnectChipThing(gpointer userData)
     int ret = BT_ERROR_NONE;
 
     char * address = reinterpret_cast(userData);
-    ChipLogProgress(DeviceLayer, "ConnectRequest: Addr [%s]", address);
+    ChipLogProgress(DeviceLayer, "ConnectRequest: Addr [%s]", StringOrNullMarker(address));
 
     ret = bt_gatt_client_create(address, &sInstance.mGattClient);
     VerifyOrExit(ret == BT_ERROR_NONE, ChipLogError(DeviceLayer, "Failed to create GATT client. ret [%d]", ret));
@@ -685,12 +687,12 @@ static bool __GattClientForeachCharCb(int total, int index, bt_gatt_h charHandle
 
     if (strcasecmp(uuid, chip_ble_char_c1_tx_uuid) == 0)
     {
-        ChipLogProgress(DeviceLayer, "CHIP Char C1 TX Found [%s]", uuid);
+        ChipLogProgress(DeviceLayer, "CHIP Char C1 TX Found [%s]", StringOrNullMarker(uuid));
         conn->gattCharC1Handle = charHandle;
     }
     else if (strcasecmp(uuid, chip_ble_char_c2_rx_uuid) == 0)
     {
-        ChipLogProgress(DeviceLayer, "CHIP Char C2 RX Found [%s]", uuid);
+        ChipLogProgress(DeviceLayer, "CHIP Char C2 RX Found [%s]", StringOrNullMarker(uuid));
         conn->gattCharC2Handle = charHandle;
     }
     g_free(uuid);
@@ -712,7 +714,7 @@ static bool __GattClientForeachServiceCb(int total, int index, bt_gatt_h svcHand
 
     if (strcasecmp(uuid, chip_ble_service_uuid) == 0)
     {
-        ChipLogProgress(DeviceLayer, "CHIP Service UUID Found [%s]", uuid);
+        ChipLogProgress(DeviceLayer, "CHIP Service UUID Found [%s]", StringOrNullMarker(uuid));
 
         if (bt_gatt_service_foreach_characteristics(svcHandle, __GattClientForeachCharCb, conn) == BT_ERROR_NONE)
             conn->isChipDevice = true;
@@ -741,11 +743,11 @@ bool BLEManagerImpl::IsDeviceChipPeripheral(BLE_CONNECTION_OBJECT conId)
 void BLEManagerImpl::AddConnectionData(const char * remoteAddr)
 {
     BLEConnection * conn;
-    ChipLogProgress(DeviceLayer, "AddConnectionData for [%s]", remoteAddr);
+    ChipLogProgress(DeviceLayer, "AddConnectionData for [%s]", StringOrNullMarker(remoteAddr));
 
     if (!g_hash_table_lookup(mConnectionMap, remoteAddr))
     {
-        ChipLogProgress(DeviceLayer, "Connection not found in map [%s]", remoteAddr);
+        ChipLogProgress(DeviceLayer, "Connection not found in map [%s]", StringOrNullMarker(remoteAddr));
         conn           = static_cast(g_malloc0(sizeof(BLEConnection)));
         conn->peerAddr = g_strdup(remoteAddr);
 
@@ -755,7 +757,7 @@ void BLEManagerImpl::AddConnectionData(const char * remoteAddr)
             if (IsDeviceChipPeripheral(conn))
             {
                 g_hash_table_insert(mConnectionMap, (gpointer) conn->peerAddr, conn);
-                ChipLogProgress(DeviceLayer, "New Connection Added for [%s]", remoteAddr);
+                ChipLogProgress(DeviceLayer, "New Connection Added for [%s]", StringOrNullMarker(remoteAddr));
                 NotifyHandleNewConnection(conn);
             }
             else
@@ -774,7 +776,7 @@ void BLEManagerImpl::AddConnectionData(const char * remoteAddr)
             conn->gattCharC2Handle = mGattCharC2Handle;
 
             g_hash_table_insert(mConnectionMap, (gpointer) conn->peerAddr, conn);
-            ChipLogProgress(DeviceLayer, "New Connection Added for [%s]", remoteAddr);
+            ChipLogProgress(DeviceLayer, "New Connection Added for [%s]", StringOrNullMarker(remoteAddr));
         }
     }
 }
@@ -782,12 +784,13 @@ void BLEManagerImpl::AddConnectionData(const char * remoteAddr)
 void BLEManagerImpl::RemoveConnectionData(const char * remoteAddr)
 {
     BLEConnection * conn = nullptr;
-    ChipLogProgress(DeviceLayer, "Connection Remove Request for [%s]", remoteAddr);
+    ChipLogProgress(DeviceLayer, "Connection Remove Request for [%s]", StringOrNullMarker(remoteAddr));
 
     VerifyOrReturn(mConnectionMap != nullptr, ChipLogError(DeviceLayer, "Connection map does not exist"));
 
     conn = static_cast(g_hash_table_lookup(mConnectionMap, remoteAddr));
-    VerifyOrReturn(conn != nullptr, ChipLogError(DeviceLayer, "Connection does not exist for [%s]", remoteAddr));
+    VerifyOrReturn(conn != nullptr,
+                   ChipLogError(DeviceLayer, "Connection does not exist for [%s]", StringOrNullMarker(remoteAddr)));
 
     g_hash_table_remove(mConnectionMap, conn->peerAddr);
 
@@ -842,12 +845,12 @@ void BLEManagerImpl::HandleConnectionEvent(bool connected, const char * remoteAd
 {
     if (connected)
     {
-        ChipLogProgress(DeviceLayer, "Device Connected [%s]", remoteAddress);
+        ChipLogProgress(DeviceLayer, "Device Connected [%s]", StringOrNullMarker(remoteAddress));
         AddConnectionData(remoteAddress);
     }
     else
     {
-        ChipLogProgress(DeviceLayer, "Device DisConnected [%s]", remoteAddress);
+        ChipLogProgress(DeviceLayer, "Device DisConnected [%s]", StringOrNullMarker(remoteAddress));
         RemoveConnectionData(remoteAddress);
     }
 }
diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp
index d1c4632625de70..479e561e81dd6a 100644
--- a/src/platform/Tizen/DnssdImpl.cpp
+++ b/src/platform/Tizen/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -136,7 +136,8 @@ gboolean OnBrowseTimeout(void * userData)
 
 void OnBrowseAdd(BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
 {
-    ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, name, type, interfaceId);
+    ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, StringOrNullMarker(name),
+                  StringOrNullMarker(type), interfaceId);
 
     char * tokens  = strdup(type);
     char * regtype = strtok(tokens, ".");
@@ -154,7 +155,8 @@ void OnBrowseAdd(BrowseContext * context, const char * type, const char * name,
 
 void OnBrowseRemove(BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
 {
-    ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, name, type, interfaceId);
+    ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, StringOrNullMarker(name),
+                  StringOrNullMarker(type), interfaceId);
     context->mServices.erase(std::remove_if(
         context->mServices.begin(), context->mServices.end(), [name, type, interfaceId](const DnssdService & service) {
             return strcmp(name, service.mName) == 0 && type == GetFullType(service.mType, service.mProtocol) &&
@@ -343,7 +345,8 @@ void OnResolve(dnssd_error_e result, dnssd_service_h service, void * data)
     }
 #endif
 
-    ChipLogDetail(DeviceLayer, "DNSsd %s: IPv4: %s, IPv6: %s, ret: %d", __func__, ipv4, ipv6, ret);
+    ChipLogDetail(DeviceLayer, "DNSsd %s: IPv4: %s, IPv6: %s, ret: %d", __func__, StringOrNullMarker(ipv4),
+                  StringOrNullMarker(ipv6), ret);
 
     g_free(ipv4);
     g_free(ipv6);
diff --git a/src/platform/Zephyr/KeyValueStoreManagerImpl.cpp b/src/platform/Zephyr/KeyValueStoreManagerImpl.cpp
index d99239b20c726c..03c82341a8fc31 100644
--- a/src/platform/Zephyr/KeyValueStoreManagerImpl.cpp
+++ b/src/platform/Zephyr/KeyValueStoreManagerImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -131,7 +131,7 @@ int DeleteSubtreeCallback(const char * name, size_t /* entrySize */, settings_re
     char fullKey[SETTINGS_MAX_NAME_LEN + 1];
 
     // name comes from Zephyr settings subsystem so it is guaranteed to fit in the buffer.
-    (void) snprintf(fullKey, sizeof(fullKey), CHIP_DEVICE_CONFIG_SETTINGS_KEY "/%s", name);
+    (void) snprintf(fullKey, sizeof(fullKey), CHIP_DEVICE_CONFIG_SETTINGS_KEY "/%s", StringOrNullMarker(name));
     const int result = settings_delete(fullKey);
 
     // Return the first error, but continue removing remaining keys anyway.
diff --git a/src/platform/bouffalolab/BL602/BL602Config.cpp b/src/platform/bouffalolab/BL602/BL602Config.cpp
index 2fc3cc5c2a84fa..6f0d93f4b85b89 100644
--- a/src/platform/bouffalolab/BL602/BL602Config.cpp
+++ b/src/platform/bouffalolab/BL602/BL602Config.cpp
@@ -216,7 +216,7 @@ CHIP_ERROR BL602Config::WriteConfigValue(Key key, uint64_t val)
     EfErrCode ret = ef_set_env_blob(key.name, &val, sizeof(val));
     if (ret != EF_NO_ERR)
     {
-        log_error("WriteConfigValue() failed. key: %s, ret: %d\r\n", key.name, ret);
+        log_error("WriteConfigValue() failed. key: %s, ret: %d\r\n", StringOrNullMarker(key.name), ret);
         err = CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND;
     }
     SuccessOrExit(err);
@@ -339,7 +339,7 @@ CHIP_ERROR BL602Config::ClearConfigValue(Key key)
 
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "Easyflash erase: %s", key.name);
+    ChipLogProgress(DeviceLayer, "Easyflash erase: %s", StringOrNullMarker(key.name));
 
 exit:
     return err;
diff --git a/src/platform/bouffalolab/BL602/BLEManagerImpl.cpp b/src/platform/bouffalolab/BL602/BLEManagerImpl.cpp
index 825a28f4cdb1e1..20d5bc9006d81d 100644
--- a/src/platform/bouffalolab/BL602/BLEManagerImpl.cpp
+++ b/src/platform/bouffalolab/BL602/BLEManagerImpl.cpp
@@ -384,7 +384,7 @@ CHIP_ERROR BLEManagerImpl::_SetDeviceName(const char * deviceName)
         return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE;
     }
 
-    ChipLogDetail(DeviceLayer, "Device name set to: %s", deviceName);
+    ChipLogDetail(DeviceLayer, "Device name set to: %s", StringOrNullMarker(deviceName));
     return MapErrorZephyr(bt_set_name(deviceName));
 }
 
diff --git a/src/platform/mt793x/DnssdImpl.cpp b/src/platform/mt793x/DnssdImpl.cpp
index efcd82c1016a3e..8fd7683191b22b 100644
--- a/src/platform/mt793x/DnssdImpl.cpp
+++ b/src/platform/mt793x/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -60,7 +60,7 @@ static TXTRecordRef PublishTxtRecord;
 
 void ChipDnssdMdnsLog(const char * level, const char * msg)
 {
-    ChipLogProgress(ServiceProvisioning, "%s %s", level, msg);
+    ChipLogProgress(ServiceProvisioning, "%s %s", StringOrNullMarker(level), StringOrNullMarker(msg));
 }
 
 /**
@@ -225,7 +225,7 @@ void ChipDNSServiceBrowseReply(DNSServiceRef sdRef, DNSServiceFlags flags, uint3
     DnssdBrowseCallback ChipBrowseHandler = (DnssdBrowseCallback) context;
     DnssdService service;
 
-    ChipLogProgress(ServiceProvisioning, "ChipDNSServiceBrowseReply %s", serviceName);
+    ChipLogProgress(ServiceProvisioning, "ChipDNSServiceBrowseReply %s", StringOrNullMarker(serviceName));
     strcpy(service.mName, serviceName);
 
     ChipBrowseHandler(NULL, &service, 1, true, CHIP_NO_ERROR);
@@ -240,7 +240,7 @@ CHIP_ERROR ChipDnssdBrowse(const char * type, DnssdServiceProtocol protocol, chi
     char ServiceType[kDnssdTypeMaxSize + 10] = { 0 };
 
     (void) addressType;
-    ChipLogProgress(ServiceProvisioning, "ChipDnssdBrowse %s", type);
+    ChipLogProgress(ServiceProvisioning, "ChipDnssdBrowse %s", StringOrNullMarker(type));
     strcpy(ServiceType, type);
     strcat(ServiceType, ".");
     strcat(ServiceType, GetProtocolString(protocol));
diff --git a/src/platform/telink/BLEManagerImpl.cpp b/src/platform/telink/BLEManagerImpl.cpp
index 5f7fc1c09c77c4..d07b2ca3a30459 100644
--- a/src/platform/telink/BLEManagerImpl.cpp
+++ b/src/platform/telink/BLEManagerImpl.cpp
@@ -774,7 +774,7 @@ CHIP_ERROR BLEManagerImpl::_SetDeviceName(const char * devName)
         return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE;
     }
 
-    if (devName == NULL && devName[0] == 0)
+    if (devName == NULL || devName[0] == 0)
     {
         ChipLogError(DeviceLayer, "Invalid name");
 
diff --git a/src/platform/webos/CHIPWebOSStorage.cpp b/src/platform/webos/CHIPWebOSStorage.cpp
index 9bf46394b004bf..f89c4b60783509 100644
--- a/src/platform/webos/CHIPWebOSStorage.cpp
+++ b/src/platform/webos/CHIPWebOSStorage.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -53,10 +53,11 @@ CHIP_ERROR ChipLinuxStorage::Init(const char * configFile)
 {
     CHIP_ERROR retval = CHIP_NO_ERROR;
 
-    ChipLogDetail(DeviceLayer, "ChipLinuxStorage::Init: Using KVS config file: %s", configFile);
+    ChipLogDetail(DeviceLayer, "ChipLinuxStorage::Init: Using KVS config file: %s", StringOrNullMarker(configFile));
     if (mInitialized)
     {
-        ChipLogError(DeviceLayer, "ChipLinuxStorage::Init: Attempt to re-initialize with KVS config file: %s", configFile);
+        ChipLogError(DeviceLayer, "ChipLinuxStorage::Init: Attempt to re-initialize with KVS config file: %s",
+                     StringOrNullMarker(configFile));
         return CHIP_NO_ERROR;
     }
 
diff --git a/src/platform/webos/ConnectivityManagerImpl.cpp b/src/platform/webos/ConnectivityManagerImpl.cpp
index 50fcb22fc3de53..a4c54484cc9728 100644
--- a/src/platform/webos/ConnectivityManagerImpl.cpp
+++ b/src/platform/webos/ConnectivityManagerImpl.cpp
@@ -386,7 +386,8 @@ void ConnectivityManagerImpl::_OnWpaPropertiesChanged(WpaFiW1Wpa_supplicant1Inte
         {
             gchar * value_str;
             value_str = g_variant_print(value, TRUE);
-            ChipLogProgress(DeviceLayer, "wpa_supplicant:PropertiesChanged:key:%s -> %s", key, value_str);
+            ChipLogProgress(DeviceLayer, "wpa_supplicant:PropertiesChanged:key:%s -> %s", StringOrNullMarker(key),
+                            StringOrNullMarker(value_str));
 
             if (g_strcmp0(key, "State") == 0)
             {
@@ -638,7 +639,7 @@ void ConnectivityManagerImpl::_OnWpaInterfaceRemoved(WpaFiW1Wpa_supplicant1 * pr
 
     if (g_strcmp0(mWpaSupplicant.interfacePath, path) == 0)
     {
-        ChipLogProgress(DeviceLayer, "wpa_supplicant: WiFi interface removed: %s", path);
+        ChipLogProgress(DeviceLayer, "wpa_supplicant: WiFi interface removed: %s", StringOrNullMarker(path));
 
         mWpaSupplicant.state = GDBusWpaSupplicant::WPA_NO_INTERFACE_PATH;
 
@@ -1161,7 +1162,7 @@ CHIP_ERROR ConnectivityManagerImpl::GetWiFiSecurityType(uint8_t & securityType)
     }
 
     mode = wpa_fi_w1_wpa_supplicant1_interface_get_current_auth_mode(mWpaSupplicant.iface);
-    ChipLogProgress(DeviceLayer, "wpa_supplicant: current Wi-Fi security type: %s", mode);
+    ChipLogProgress(DeviceLayer, "wpa_supplicant: current Wi-Fi security type: %s", StringOrNullMarker(mode));
 
     if (strncmp(mode, "WPA-PSK", 7) == 0)
     {
@@ -1413,7 +1414,7 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
     // may be gone when we try to get the properties.
     if (ssid == nullptr || bssid == nullptr)
     {
-        ChipLogDetail(DeviceLayer, "wpa_supplicant: BSS not found: %s", bssPath);
+        ChipLogDetail(DeviceLayer, "wpa_supplicant: BSS not found: %s", StringOrNullMarker(bssPath));
         return false;
     }
 
@@ -1438,7 +1439,8 @@ bool ConnectivityManagerImpl::_GetBssInfo(const gchar * bssPath, NetworkCommissi
         bssidLen = 0;
         ChipLogError(DeviceLayer, "Got a network with bssid not equals to 6");
     }
-    ChipLogDetail(DeviceLayer, "Network Found: %.*s (%s) Signal:%d", int(ssidLen), ssidStr, bssidStr, signal);
+    ChipLogDetail(DeviceLayer, "Network Found: %.*s (%s) Signal:%d", int(ssidLen), StringOrNullMarker((const gchar *) ssidStr),
+                  bssidStr, signal);
 
     // A flag for enterprise encryption option to avoid returning open for these networks by mistake
     // TODO: The following code will mistakenly recognize WEP encryption as OPEN network, this should be fixed by reading
diff --git a/src/platform/webos/DiagnosticDataProviderImpl.cpp b/src/platform/webos/DiagnosticDataProviderImpl.cpp
index 990bd5226f875d..c6047ec7c6bc1a 100644
--- a/src/platform/webos/DiagnosticDataProviderImpl.cpp
+++ b/src/platform/webos/DiagnosticDataProviderImpl.cpp
@@ -90,7 +90,7 @@ CHIP_ERROR GetEthernetStatsCount(EthernetStatsCountType type, uint64_t & count)
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -154,7 +154,7 @@ CHIP_ERROR GetWiFiStatsCount(WiFiStatsCountType type, uint64_t & count)
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -584,7 +584,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::ResetEthNetworkDiagnosticsCounts()
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary Ethernet interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
@@ -749,7 +749,7 @@ CHIP_ERROR DiagnosticDataProviderImpl::ResetWiFiNetworkDiagnosticsCounts()
         {
             if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI)
             {
-                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", ifa->ifa_name);
+                ChipLogProgress(DeviceLayer, "Found the primary WiFi interface:%s", StringOrNullMarker(ifa->ifa_name));
                 break;
             }
         }
diff --git a/src/platform/webos/DnssdImpl.cpp b/src/platform/webos/DnssdImpl.cpp
index 97ce39bad012aa..6d5f4a2f15e53e 100644
--- a/src/platform/webos/DnssdImpl.cpp
+++ b/src/platform/webos/DnssdImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -570,7 +570,7 @@ DnssdServiceProtocol GetProtocolInType(const char * type)
 
     if (deliminator == nullptr)
     {
-        ChipLogError(Discovery, "Failed to find protocol in type: %s", type);
+        ChipLogError(Discovery, "Failed to find protocol in type: %s", StringOrNullMarker(type));
         return DnssdServiceProtocol::kDnssdProtocolUnknown;
     }
 
@@ -583,7 +583,7 @@ DnssdServiceProtocol GetProtocolInType(const char * type)
         return DnssdServiceProtocol::kDnssdProtocolUdp;
     }
 
-    ChipLogError(Discovery, "Unknown protocol in type: %s", type);
+    ChipLogError(Discovery, "Unknown protocol in type: %s", StringOrNullMarker(type));
     return DnssdServiceProtocol::kDnssdProtocolUnknown;
 }
 
diff --git a/src/platform/webos/PosixConfig.cpp b/src/platform/webos/PosixConfig.cpp
index 4f43a092358550..b35ab54cf8c029 100644
--- a/src/platform/webos/PosixConfig.cpp
+++ b/src/platform/webos/PosixConfig.cpp
@@ -266,7 +266,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, bool val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", key.Namespace, key.Name, val ? "true" : "false");
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                    val ? "true" : "false");
 
 exit:
     return err;
@@ -287,7 +288,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint16_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %u (0x%X)", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %u (0x%X)", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name), val,
+                    val);
 
 exit:
     return err;
@@ -308,7 +310,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint32_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu32 " (0x%" PRIX32 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
 
 exit:
     return err;
@@ -329,7 +332,8 @@ CHIP_ERROR PosixConfig::WriteConfigValue(Key key, uint64_t val)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", key.Namespace, key.Name, val, val);
+    ChipLogProgress(DeviceLayer, "NVS set: %s/%s = %" PRIu64 " (0x%" PRIX64 ")", StringOrNullMarker(key.Namespace),
+                    StringOrNullMarker(key.Name), val, val);
 
 exit:
     return err;
@@ -352,7 +356,8 @@ CHIP_ERROR PosixConfig::WriteConfigValueStr(Key key, const char * str)
         err = storage->Commit();
         SuccessOrExit(err);
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", key.Namespace, key.Name, str);
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = \"%s\"", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name),
+                        str);
     }
 
     else
@@ -407,8 +412,8 @@ CHIP_ERROR PosixConfig::WriteConfigValueBin(Key key, const uint8_t * data, size_
         err = storage->Commit();
         SuccessOrExit(err);
 
-        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %u)", key.Namespace, key.Name,
-                        static_cast(dataLen));
+        ChipLogProgress(DeviceLayer, "NVS set: %s/%s = (blob length %u)", StringOrNullMarker(key.Namespace),
+                        StringOrNullMarker(key.Name), static_cast(dataLen));
     }
     else
     {
@@ -439,7 +444,7 @@ CHIP_ERROR PosixConfig::ClearConfigValue(Key key)
     err = storage->Commit();
     SuccessOrExit(err);
 
-    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", key.Namespace, key.Name);
+    ChipLogProgress(DeviceLayer, "NVS erase: %s/%s", StringOrNullMarker(key.Namespace), StringOrNullMarker(key.Name));
 
 exit:
     return err;
diff --git a/src/platform/webos/ThreadStackManagerImpl.cpp b/src/platform/webos/ThreadStackManagerImpl.cpp
index 1bb53384c82810..d16a465f36aedf 100644
--- a/src/platform/webos/ThreadStackManagerImpl.cpp
+++ b/src/platform/webos/ThreadStackManagerImpl.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -101,7 +101,7 @@ void ThreadStackManagerImpl::OnDbusPropertiesChanged(OpenthreadIoOpenthreadBorde
                 const gchar * value_str = g_variant_get_string(value, nullptr);
                 if (value_str == nullptr)
                     continue;
-                ChipLogProgress(DeviceLayer, "Thread role changed to: %s", value_str);
+                ChipLogProgress(DeviceLayer, "Thread role changed to: %s", StringOrNullMarker(value_str));
                 me->ThreadDevcieRoleChangedHandler(value_str);
             }
         }
@@ -632,7 +632,7 @@ void ThreadStackManagerImpl::_OnNetworkScanFinished(GAsyncResult * res)
             ChipLogProgress(DeviceLayer,
                             "Thread Network: %s (%016" PRIx64 ") ExtPanId(%016" PRIx64 ") RSSI %u LQI %u"
                             " Version %u",
-                            network_name, ext_address, ext_panid, rssi, lqi, version);
+                            StringOrNullMarker(network_name), ext_address, ext_panid, rssi, lqi, version);
             NetworkCommissioning::ThreadScanResponse networkScanned;
             networkScanned.panId         = panid;
             networkScanned.extendedPanId = ext_panid;
diff --git a/src/protocols/user_directed_commissioning/UserDirectedCommissioningServer.cpp b/src/protocols/user_directed_commissioning/UserDirectedCommissioningServer.cpp
index ef18a52190d141..0b11f622d850b5 100644
--- a/src/protocols/user_directed_commissioning/UserDirectedCommissioningServer.cpp
+++ b/src/protocols/user_directed_commissioning/UserDirectedCommissioningServer.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2021-2022 Project CHIP Authors
  *    All rights reserved.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@ void UserDirectedCommissioningServer::SetUDCClientProcessingState(char * instanc
         }
     }
 
-    ChipLogDetail(AppServer, "SetUDCClientProcessingState instance=%s new state=%d", instanceName, (int) state);
+    ChipLogDetail(AppServer, "SetUDCClientProcessingState instance=%s new state=%d", StringOrNullMarker(instanceName), (int) state);
 
     client->SetUDCClientProcessingState(state);
 
diff --git a/src/qrcodetool/qrcodetool.cpp b/src/qrcodetool/qrcodetool.cpp
index 7f0584d14dad44..fc861f3a92e334 100644
--- a/src/qrcodetool/qrcodetool.cpp
+++ b/src/qrcodetool/qrcodetool.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -15,6 +15,7 @@
  *    limitations under the License.
  */
 
+#include 
 #include 
 
 #include 
@@ -43,7 +44,7 @@ static int usage(const char * prog_name)
     ChipLogDetail(chipTool,
                   "Usage: %s [-h] [command] [opt ...]\n"
                   "%s commands are:\n",
-                  prog_name, prog_name);
+                  StringOrNullMarker(prog_name), StringOrNullMarker(prog_name));
     help(0, nullptr);
     return 2;
 }
diff --git a/src/system/tests/TestSystemPacketBuffer.cpp b/src/system/tests/TestSystemPacketBuffer.cpp
index cc462769d7f9dd..f1f584e26f31f1 100644
--- a/src/system/tests/TestSystemPacketBuffer.cpp
+++ b/src/system/tests/TestSystemPacketBuffer.cpp
@@ -1,6 +1,6 @@
 /*
  *
- *    Copyright (c) 2020-2021 Project CHIP Authors
+ *    Copyright (c) 2020-2022 Project CHIP Authors
  *    Copyright (c) 2016-2017 Nest Labs, Inc.
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -137,8 +137,8 @@ class PacketBufferTest
 
     static void PrintHandle(const char * tag, const PacketBuffer * buffer)
     {
-        printf("%s %p ref=%u len=%-4u next=%p\n", tag, buffer, buffer ? buffer->ref : 0, buffer ? buffer->len : 0,
-               buffer ? buffer->next : nullptr);
+        printf("%s %p ref=%u len=%-4u next=%p\n", StringOrNullMarker(tag), buffer, buffer ? buffer->ref : 0,
+               buffer ? buffer->len : 0, buffer ? buffer->next : nullptr);
     }
     static void PrintHandle(const char * tag, const PacketBufferHandle & handle) { PrintHandle(tag, handle.mBuffer); }
 
@@ -163,8 +163,8 @@ class PacketBufferTest
     static void PrintHandle(const char * tag, const BufferConfiguration & config) { PrintHandle(tag, config.handle); }
     static void PrintConfig(const char * tag, const BufferConfiguration & config)
     {
-        printf("%s pay=%-4zu len=%-4u res=%-4u:", tag, config.payload_ptr - config.start_buffer, config.init_len,
-               config.reserved_size);
+        printf("%s pay=%-4zu len=%-4u res=%-4u:", StringOrNullMarker(tag), config.payload_ptr - config.start_buffer,
+               config.init_len, config.reserved_size);
         PrintHandle("", config.handle);
     }
 

From 6221fe146582ef91e84d9acc3437e421b112e397 Mon Sep 17 00:00:00 2001
From: Arkadiusz Bokowy 
Date: Thu, 17 Nov 2022 01:20:07 +0100
Subject: [PATCH 14/36] [Tizen] Check app options by iterate over given set
 (#23634)

Instead of iterating over available options and trying to get them from
app extra data, iterate over extra data and match them with available
options. This approach will fix errors generated by Tizen API call
app_control_get_extra_data() when used with not available key.
---
 examples/platform/tizen/OptionsProxy.cpp | 39 +++++++++++++++++-------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/examples/platform/tizen/OptionsProxy.cpp b/examples/platform/tizen/OptionsProxy.cpp
index 8d4bfb029f922e..590580d48a50ba 100644
--- a/examples/platform/tizen/OptionsProxy.cpp
+++ b/examples/platform/tizen/OptionsProxy.cpp
@@ -20,6 +20,8 @@
 
 #include 
 
+#include 
+
 #include 
 
 namespace {
@@ -65,35 +67,50 @@ static constexpr Option sOptions[] = {
 #endif
 };
 
-}; // namespace
-
-void OptionsProxy::Parse(const char * argv0, app_control_h app_control)
+bool ParseAppExtraData(app_control_h app_control, const char * key, void * userData)
 {
-    // Insert argv[0] commonly used as a process name
-    if (argv0 != nullptr)
-    {
-        mArgs.push_back(argv0);
-    }
+    auto * args = static_cast *>(userData);
 
     for (const auto & option : sOptions)
     {
+        if (strcmp(key, option.name) != 0)
+        {
+            continue;
+        }
+
         char * value = nullptr;
         if (app_control_get_extra_data(app_control, option.name, &value) == APP_CONTROL_ERROR_NONE && value != nullptr)
         {
             if (!option.isBoolean)
             {
-                mArgs.push_back(std::string("--") + option.name);
-                mArgs.push_back(value);
+                args->push_back(std::string("--") + option.name);
+                args->push_back(value);
             }
             else if (strcmp(value, "true") == 0)
             {
-                mArgs.push_back(std::string("--") + option.name);
+                args->push_back(std::string("--") + option.name);
             }
             // Release memory allocated by app_control_get_extra_data()
             free(value);
         }
     }
 
+    // Continue iterating over all extra data
+    return true;
+}
+
+}; // namespace
+
+void OptionsProxy::Parse(const char * argv0, app_control_h app_control)
+{
+    // Insert argv[0] commonly used as a process name
+    if (argv0 != nullptr)
+    {
+        mArgs.push_back(argv0);
+    }
+
+    app_control_foreach_extra_data(app_control, ParseAppExtraData, &mArgs);
+
     // Convert vector of strings into NULL-terminated vector of char pointers
     mArgv.reserve(mArgs.size() + 1);
     for (auto & arg : mArgs)

From 751d0dd43cf86c12e2878b5b6aac84bde9a2050d Mon Sep 17 00:00:00 2001
From: yunhanw-google 
Date: Wed, 16 Nov 2022 19:09:58 -0800
Subject: [PATCH 15/36] Repurpose the checkSchemaValidity to PrettyPrint only
 (#21987)

--Remove the necessary elemnt check in im pretty print
--Rename CheckSchemaValidity to PrettyPrint
--Don't process the returned error for prettyPrint in IM client/server
code
---
 config/esp32/components/chip/CMakeLists.txt   |   4 +-
 config/esp32/components/chip/Kconfig          |   7 +-
 .../decoder/interaction_model/Decoder.cpp     |  40 ++--
 src/app/BUILD.gn                              |   4 +-
 src/app/CommandHandler.cpp                    |   4 +-
 src/app/CommandSender.cpp                     |   4 +-
 src/app/MessageDef/AttributeDataIB.cpp        |  42 ++--
 src/app/MessageDef/AttributeDataIB.h          |  20 +-
 src/app/MessageDef/AttributeDataIBs.cpp       |   8 +-
 src/app/MessageDef/AttributeDataIBs.h         |  19 +-
 src/app/MessageDef/AttributePathIB.cpp        |  51 +----
 src/app/MessageDef/AttributePathIB.h          |  20 +-
 src/app/MessageDef/AttributePathIBs.cpp       |   8 +-
 src/app/MessageDef/AttributePathIBs.h         |  19 +-
 src/app/MessageDef/AttributeReportIB.cpp      |  72 ++----
 src/app/MessageDef/AttributeReportIB.h        |  19 +-
 src/app/MessageDef/AttributeReportIBs.cpp     |   8 +-
 src/app/MessageDef/AttributeReportIBs.h       |  19 +-
 src/app/MessageDef/AttributeStatusIB.cpp      |  56 ++---
 src/app/MessageDef/AttributeStatusIB.h        |  19 +-
 src/app/MessageDef/AttributeStatusIBs.cpp     |  12 +-
 src/app/MessageDef/AttributeStatusIBs.h       |  19 +-
 src/app/MessageDef/ClusterPathIB.cpp          |  24 +-
 src/app/MessageDef/ClusterPathIB.h            |  19 +-
 src/app/MessageDef/CommandDataIB.cpp          |  36 ++-
 src/app/MessageDef/CommandDataIB.h            |  19 +-
 src/app/MessageDef/CommandPathIB.cpp          |  23 +-
 src/app/MessageDef/CommandPathIB.h            |  19 +-
 src/app/MessageDef/CommandStatusIB.cpp        |  13 +-
 src/app/MessageDef/CommandStatusIB.h          |  19 +-
 src/app/MessageDef/DataVersionFilterIB.cpp    |  36 ++-
 src/app/MessageDef/DataVersionFilterIB.h      |  19 +-
 src/app/MessageDef/DataVersionFilterIBs.cpp   |   8 +-
 src/app/MessageDef/DataVersionFilterIBs.h     |  19 +-
 src/app/MessageDef/EventDataIB.cpp            |  60 ++---
 src/app/MessageDef/EventDataIB.h              |  19 +-
 src/app/MessageDef/EventFilterIB.cpp          |  42 ++--
 src/app/MessageDef/EventFilterIB.h            |  19 +-
 src/app/MessageDef/EventFilterIBs.cpp         |   8 +-
 src/app/MessageDef/EventFilterIBs.h           |  19 +-
 src/app/MessageDef/EventPathIB.cpp            |  24 +-
 src/app/MessageDef/EventPathIB.h              |  19 +-
 src/app/MessageDef/EventPathIBs.cpp           |   8 +-
 src/app/MessageDef/EventPathIBs.h             |  19 +-
 src/app/MessageDef/EventReportIB.cpp          |  72 ++----
 src/app/MessageDef/EventReportIB.h            |  19 +-
 src/app/MessageDef/EventReportIBs.cpp         |   8 +-
 src/app/MessageDef/EventReportIBs.h           |  19 +-
 src/app/MessageDef/EventStatusIB.cpp          |  56 ++---
 src/app/MessageDef/EventStatusIB.h            |  19 +-
 src/app/MessageDef/InvokeRequestMessage.cpp   |  65 +++---
 src/app/MessageDef/InvokeRequestMessage.h     |  19 +-
 src/app/MessageDef/InvokeRequests.cpp         |   8 +-
 src/app/MessageDef/InvokeRequests.h           |  19 +-
 src/app/MessageDef/InvokeResponseIB.cpp       |  73 ++----
 src/app/MessageDef/InvokeResponseIB.h         |  19 +-
 src/app/MessageDef/InvokeResponseIBs.cpp      |   8 +-
 src/app/MessageDef/InvokeResponseIBs.h        |  19 +-
 src/app/MessageDef/InvokeResponseMessage.cpp  |  50 ++---
 src/app/MessageDef/InvokeResponseMessage.h    |  19 +-
 src/app/MessageDef/MessageDefHelper.cpp       |   7 +-
 src/app/MessageDef/MessageDefHelper.h         |   6 +-
 src/app/MessageDef/MessageParser.cpp          |   4 +-
 src/app/MessageDef/MessageParser.h            |   4 +-
 src/app/MessageDef/ReadRequestMessage.cpp     | 115 ++++------
 src/app/MessageDef/ReadRequestMessage.h       |  19 +-
 src/app/MessageDef/ReportDataMessage.cpp      |  25 +--
 src/app/MessageDef/ReportDataMessage.h        |  19 +-
 src/app/MessageDef/StatusIB.cpp               |  55 ++---
 src/app/MessageDef/StatusIB.h                 |  20 +-
 src/app/MessageDef/StatusResponseMessage.cpp  |  15 +-
 src/app/MessageDef/StatusResponseMessage.h    |  19 +-
 .../MessageDef/SubscribeRequestMessage.cpp    | 118 ++++------
 src/app/MessageDef/SubscribeRequestMessage.h  |  18 +-
 .../MessageDef/SubscribeResponseMessage.cpp   |  17 +-
 src/app/MessageDef/SubscribeResponseMessage.h |  18 +-
 src/app/MessageDef/TimedRequestMessage.cpp    |  14 +-
 src/app/MessageDef/TimedRequestMessage.h      |  17 +-
 src/app/MessageDef/WriteRequestMessage.cpp    |  79 +++----
 src/app/MessageDef/WriteRequestMessage.h      |  16 +-
 src/app/MessageDef/WriteResponseMessage.cpp   |  13 +-
 src/app/MessageDef/WriteResponseMessage.h     |  16 +-
 src/app/ReadClient.cpp                        |   9 +-
 src/app/ReadHandler.cpp                       |   8 +-
 src/app/StatusResponse.cpp                    |   4 +-
 src/app/TimedHandler.cpp                      |   4 +-
 src/app/WriteClient.cpp                       |   4 +-
 src/app/WriteHandler.cpp                      |   5 +-
 src/app/tests/TestCommandInteraction.cpp      |  20 +-
 src/app/tests/TestMessageDef.cpp              | 207 +++++++-----------
 src/app/tests/TestReadInteraction.cpp         |  14 +-
 src/app/tests/TestStatusResponseMessage.cpp   |   5 +-
 src/platform/nxp/mw320/args.gni               |   2 +-
 93 files changed, 732 insertions(+), 1641 deletions(-)

diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt
index a8b1be9bab9a53..44f923808e17e6 100644
--- a/config/esp32/components/chip/CMakeLists.txt
+++ b/config/esp32/components/chip/CMakeLists.txt
@@ -119,8 +119,8 @@ if (CONFIG_BUILD_CHIP_TESTS)
     chip_gn_arg_bool("chip_build_tests"     "true")
 endif()
 
-if (CONFIG_CHIP_ENABLE_SCHEMA_CHECK)
-    chip_gn_arg_bool("chip_enable_schema_check"	"true")
+if (CONFIG_IM_PRETTY_PRINT)
+    chip_gn_arg_bool("enable_im_pretty_print"	"true")
 endif()
 
 if (NOT CONFIG_USE_MINIMAL_MDNS)
diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig
index 7a9e3ab54323c6..fdcdf9e43fb66f 100644
--- a/config/esp32/components/chip/Kconfig
+++ b/config/esp32/components/chip/Kconfig
@@ -787,12 +787,11 @@ menu "CHIP Device Layer"
                 for the debug level events are disabled.
 
 
-	config CHIP_ENABLE_SCHEMA_CHECK
-	   bool "Enable Schema Check"
+	config CHIP_CONFIG_IM_PRETTY_PRINT
+	   bool "Enable IM Pretty Print"
 	   default y
 	   help
-	     If enabled, it checks incoming messages are following the expected schema,
-             and incoming message payloads are logged in detail.
+	     If enabled, incoming message payloads are logged in detail.
 	     To see detailed logging please set default log level to Debug.
 	     (Component config --> Log output --> Default log verbosity --> Debug)
 
diff --git a/examples/common/tracing/decoder/interaction_model/Decoder.cpp b/examples/common/tracing/decoder/interaction_model/Decoder.cpp
index 5400b773418666..36f05b3c59d6ec 100644
--- a/examples/common/tracing/decoder/interaction_model/Decoder.cpp
+++ b/examples/common/tracing/decoder/interaction_model/Decoder.cpp
@@ -132,12 +132,12 @@ CHIP_ERROR LogAsProtocolMessage(uint8_t protocolCode, const uint8_t * data, size
 
 CHIP_ERROR DecodeStatusResponse(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::StatusResponseMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        parser.PrettyPrint();
     }
 #endif
 
@@ -146,12 +146,12 @@ CHIP_ERROR DecodeStatusResponse(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeReadRequest(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::ReadRequestMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        return parser.PrettyPrint();
     }
 #endif
 
@@ -160,12 +160,12 @@ CHIP_ERROR DecodeReadRequest(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeSubscribeRequest(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::SubscribeRequestMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        return parser.PrettyPrint();
     }
 #endif
 
@@ -174,12 +174,12 @@ CHIP_ERROR DecodeSubscribeRequest(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeSubscribeResponse(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::SubscribeResponseMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        parser.PrettyPrint();
     }
 #endif
 
@@ -190,12 +190,12 @@ CHIP_ERROR DecodeReportData(TLV::TLVReader & reader, bool decode)
 {
     ReturnErrorOnFailure(MaybeDecodeNestedReadResponse(reader.GetReadPoint(), reader.GetTotalLength()));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::ReportDataMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        parser.PrettyPrint();
     }
 #endif
 
@@ -204,12 +204,12 @@ CHIP_ERROR DecodeReportData(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeWriteRequest(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::WriteRequestMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        return parser.PrettyPrint();
     }
 #endif
 
@@ -218,12 +218,12 @@ CHIP_ERROR DecodeWriteRequest(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeWriteResponse(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::WriteResponseMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        return parser.PrettyPrint();
     }
 #endif
 
@@ -234,12 +234,12 @@ CHIP_ERROR DecodeInvokeCommandRequest(TLV::TLVReader & reader, bool decode)
 {
     ReturnErrorOnFailure(MaybeDecodeNestedCommandRequest(reader.GetReadPoint(), reader.GetTotalLength()));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::InvokeRequestMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        return parser.PrettyPrint();
     }
 #endif
 
@@ -250,12 +250,12 @@ CHIP_ERROR DecodeInvokeCommandResponse(TLV::TLVReader & reader, bool decode)
 {
     ReturnErrorOnFailure(MaybeDecodeNestedCommandResponse(reader.GetReadPoint(), reader.GetTotalLength()));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::InvokeResponseMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        parser.PrettyPrint();
     }
 #endif
 
@@ -264,12 +264,12 @@ CHIP_ERROR DecodeInvokeCommandResponse(TLV::TLVReader & reader, bool decode)
 
 CHIP_ERROR DecodeTimedRequest(TLV::TLVReader & reader, bool decode)
 {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     if (decode)
     {
         app::TimedRequestMessage::Parser parser;
         ReturnErrorOnFailure(parser.Init(reader));
-        return parser.CheckSchemaValidity();
+        parser.PrettyPrint();
     }
 #endif
 
diff --git a/src/app/BUILD.gn b/src/app/BUILD.gn
index 2d3c45228ab296..734baf6aaacbb3 100644
--- a/src/app/BUILD.gn
+++ b/src/app/BUILD.gn
@@ -20,7 +20,7 @@ import("common_flags.gni")
 
 declare_args() {
   # Enable strict schema checks.
-  chip_enable_schema_check =
+  enable_im_pretty_print =
       is_debug && (current_os == "linux" || current_os == "mac" ||
                    current_os == "ios" || current_os == "android")
 
@@ -46,7 +46,7 @@ buildconfig_header("app_buildconfig") {
   header_dir = "app"
 
   defines = [
-    "CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK=${chip_enable_schema_check}",
+    "CHIP_CONFIG_IM_PRETTY_PRINT=${enable_im_pretty_print}",
     "CHIP_CONFIG_IM_FORCE_FABRIC_QUOTA_CHECK=${chip_im_force_fabric_quota_check}",
     "CHIP_CONFIG_ENABLE_SESSION_RESUMPTION=${chip_enable_session_resumption}",
     "CHIP_CONFIG_ACCESS_CONTROL_POLICY_LOGGING_VERBOSITY=${chip_access_control_policy_logging_verbosity}",
diff --git a/src/app/CommandHandler.cpp b/src/app/CommandHandler.cpp
index 7e742b54cf8aff..2cf45b9171fde6 100644
--- a/src/app/CommandHandler.cpp
+++ b/src/app/CommandHandler.cpp
@@ -104,8 +104,8 @@ Status CommandHandler::ProcessInvokeRequest(System::PacketBufferHandle && payloa
     InvokeRequests::Parser invokeRequests;
     reader.Init(std::move(payload));
     VerifyOrReturnError(invokeRequestMessage.Init(reader) == CHIP_NO_ERROR, Status::InvalidAction);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    VerifyOrReturnError(invokeRequestMessage.CheckSchemaValidity() == CHIP_NO_ERROR, Status::InvalidAction);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeRequestMessage.PrettyPrint();
 #endif
 
     VerifyOrReturnError(invokeRequestMessage.GetSuppressResponse(&mSuppressResponse) == CHIP_NO_ERROR, Status::InvalidAction);
diff --git a/src/app/CommandSender.cpp b/src/app/CommandSender.cpp
index 7af043cf655a49..b68bad0883fef0 100644
--- a/src/app/CommandSender.cpp
+++ b/src/app/CommandSender.cpp
@@ -213,8 +213,8 @@ CHIP_ERROR CommandSender::ProcessInvokeResponse(System::PacketBufferHandle && pa
     reader.Init(std::move(payload));
     ReturnErrorOnFailure(invokeResponseMessage.Init(reader));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(invokeResponseMessage.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeResponseMessage.PrettyPrint();
 #endif
 
     ReturnErrorOnFailure(invokeResponseMessage.GetSuppressResponse(&suppressResponse));
diff --git a/src/app/MessageDef/AttributeDataIB.cpp b/src/app/MessageDef/AttributeDataIB.cpp
index 61f6bb88f0eb7e..31a36c06285aef 100644
--- a/src/app/MessageDef/AttributeDataIB.cpp
+++ b/src/app/MessageDef/AttributeDataIB.cpp
@@ -28,11 +28,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeDataIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeDataIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("AttributeDataIB =");
@@ -51,11 +50,7 @@ CHIP_ERROR AttributeDataIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kDataVersion):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDataVersion))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDataVersion));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
-
 #if CHIP_DETAIL_LOGGING
             {
                 chip::DataVersion version;
@@ -64,24 +59,16 @@ CHIP_ERROR AttributeDataIB::Parser::CheckSchemaValidity() const
             }
 #endif // CHIP_DETAIL_LOGGING
             break;
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                AttributePathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
+        case to_underlying(Tag::kPath): {
+            AttributePathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kData):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kData))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kData));
-
             PRETTY_PRINT_INCDEPTH();
             ReturnErrorOnFailure(CheckIMPayload(reader, 0, "Data"));
             PRETTY_PRINT_DECDEPTH();
@@ -97,15 +84,12 @@ CHIP_ERROR AttributeDataIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const int requiredFields = (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kData));
-
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_DATA_IB;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR AttributeDataIB::Parser::GetPath(AttributePathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/AttributeDataIB.h b/src/app/MessageDef/AttributeDataIB.h
index d2bec07b02b21b..06ef728a3e5805 100644
--- a/src/app/MessageDef/AttributeDataIB.h
+++ b/src/app/MessageDef/AttributeDataIB.h
@@ -42,23 +42,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Get the DataVersion.
      *
diff --git a/src/app/MessageDef/AttributeDataIBs.cpp b/src/app/MessageDef/AttributeDataIBs.cpp
index f0068a8838420c..5a736ad9d87cb1 100644
--- a/src/app/MessageDef/AttributeDataIBs.cpp
+++ b/src/app/MessageDef/AttributeDataIBs.cpp
@@ -36,8 +36,8 @@ using namespace chip::TLV;
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeDataIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeDataIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err        = CHIP_NO_ERROR;
     size_t numDataElement = 0;
@@ -59,7 +59,7 @@ CHIP_ERROR AttributeDataIBs::Parser::CheckSchemaValidity() const
             ReturnErrorOnFailure(data.Init(reader));
 
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(data.CheckSchemaValidity());
+            ReturnErrorOnFailure(data.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -81,7 +81,7 @@ CHIP_ERROR AttributeDataIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 AttributeDataIB::Builder & AttributeDataIBs::Builder::CreateAttributeDataIBBuilder()
 {
diff --git a/src/app/MessageDef/AttributeDataIBs.h b/src/app/MessageDef/AttributeDataIBs.h
index 67dabd1e1a096b..3f6a2dda517743 100644
--- a/src/app/MessageDef/AttributeDataIBs.h
+++ b/src/app/MessageDef/AttributeDataIBs.h
@@ -40,22 +40,9 @@ namespace AttributeDataIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/AttributePathIB.cpp b/src/app/MessageDef/AttributePathIB.cpp
index 97d7f60568af0e..bc79aa1c170789 100644
--- a/src/app/MessageDef/AttributePathIB.cpp
+++ b/src/app/MessageDef/AttributePathIB.cpp
@@ -29,11 +29,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributePathIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("AttributePathIB =");
@@ -52,22 +51,15 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kEnableTagCompression):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEnableTagCompression))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEnableTagCompression));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool enableTagCompression;
-                ReturnErrorOnFailure(reader.Get(enableTagCompression));
-                PRETTY_PRINT("\tenableTagCompression = %s, ", enableTagCompression ? "true" : "false");
-            }
+        {
+            bool enableTagCompression;
+            ReturnErrorOnFailure(reader.Get(enableTagCompression));
+            PRETTY_PRINT("\tenableTagCompression = %s, ", enableTagCompression ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         case to_underlying(Tag::kNode):
-            // check if this tag has appeared before
-
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kNode))), err = CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kNode));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), err = CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -79,9 +71,6 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEndpoint):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEndpoint))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEndpoint));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -92,9 +81,6 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kCluster):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kCluster))), err = CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kCluster));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), err = CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -106,9 +92,6 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kAttribute):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttribute))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttribute));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -119,9 +102,6 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kListIndex):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kListIndex))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kListIndex));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType() || TLV::kTLVType_Null == reader.GetType(),
                                 CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
@@ -149,21 +129,12 @@ CHIP_ERROR AttributePathIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        if ((tagPresenceMask & (1 << to_underlying(Tag::kAttribute))) == 0 &&
-            (tagPresenceMask & (1 << to_underlying(Tag::kListIndex))) != 0)
-        {
-            err = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
-        }
-        else
-        {
-            err = CHIP_NO_ERROR;
-        }
+        err = CHIP_NO_ERROR;
     }
-
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR AttributePathIB::Parser::GetEnableTagCompression(bool * const apEnableTagCompression) const
 {
diff --git a/src/app/MessageDef/AttributePathIB.h b/src/app/MessageDef/AttributePathIB.h
index 81b1a33e58a904..d9c322eeae2ebe 100644
--- a/src/app/MessageDef/AttributePathIB.h
+++ b/src/app/MessageDef/AttributePathIB.h
@@ -48,22 +48,10 @@ enum class Tag : uint8_t
 class Parser : public ListParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
+
     /**
      *  @brief Get the EnableTagCompression
      *
diff --git a/src/app/MessageDef/AttributePathIBs.cpp b/src/app/MessageDef/AttributePathIBs.cpp
index 8b88e7e9e3361d..2a171956fe9c40 100644
--- a/src/app/MessageDef/AttributePathIBs.cpp
+++ b/src/app/MessageDef/AttributePathIBs.cpp
@@ -27,8 +27,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributePathIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributePathIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err          = CHIP_NO_ERROR;
     size_t numAttributePath = 0;
@@ -48,7 +48,7 @@ CHIP_ERROR AttributePathIBs::Parser::CheckSchemaValidity() const
             AttributePathIB::Parser path;
             ReturnErrorOnFailure(path.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(path.CheckSchemaValidity());
+            ReturnErrorOnFailure(path.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -70,7 +70,7 @@ CHIP_ERROR AttributePathIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 AttributePathIB::Builder & AttributePathIBs::Builder::CreatePath()
 {
diff --git a/src/app/MessageDef/AttributePathIBs.h b/src/app/MessageDef/AttributePathIBs.h
index ad6929f64b69a4..e556be93de8d8b 100644
--- a/src/app/MessageDef/AttributePathIBs.h
+++ b/src/app/MessageDef/AttributePathIBs.h
@@ -35,22 +35,9 @@ namespace AttributePathIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/AttributeReportIB.cpp b/src/app/MessageDef/AttributeReportIB.cpp
index e08eb37ac77ce3..c8941c7ddbeb20 100644
--- a/src/app/MessageDef/AttributeReportIB.cpp
+++ b/src/app/MessageDef/AttributeReportIB.cpp
@@ -28,11 +28,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeReportIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeReportIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("AttributeReportIB =");
@@ -50,32 +49,24 @@ CHIP_ERROR AttributeReportIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kAttributeStatus):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttributeStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttributeStatus));
-            {
-                AttributeStatusIB::Parser attributeStatus;
-                ReturnErrorOnFailure(attributeStatus.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(attributeStatus.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kAttributeData):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttributeData))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttributeData));
-            {
-                AttributeDataIB::Parser attributeData;
-                ReturnErrorOnFailure(attributeData.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(attributeData.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kAttributeStatus): {
+            AttributeStatusIB::Parser attributeStatus;
+            ReturnErrorOnFailure(attributeStatus.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(attributeStatus.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kAttributeData): {
+            AttributeDataIB::Parser attributeData;
+            ReturnErrorOnFailure(attributeData.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(attributeData.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -87,30 +78,13 @@ CHIP_ERROR AttributeReportIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        // check for at most field:
-        const int CheckDataField   = 1 << to_underlying(Tag::kAttributeData);
-        const int CheckStatusField = (1 << to_underlying(Tag::kAttributeStatus));
-
-        if ((tagPresenceMask & CheckDataField) == CheckDataField && (tagPresenceMask & CheckStatusField) == CheckStatusField)
-        {
-            // kAttributeData and kAttributeStatus both exist
-            err = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_IB;
-        }
-        else if ((tagPresenceMask & CheckDataField) != CheckDataField && (tagPresenceMask & CheckStatusField) != CheckStatusField)
-        {
-            // kPath and kErrorStatus not exist
-            err = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_IB;
-        }
-        else
-        {
-            err = CHIP_NO_ERROR;
-        }
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR AttributeReportIB::Parser::GetAttributeStatus(AttributeStatusIB::Parser * const apAttributeStatus) const
 {
diff --git a/src/app/MessageDef/AttributeReportIB.h b/src/app/MessageDef/AttributeReportIB.h
index f237fb695ef620..62f6a2d2e52a93 100644
--- a/src/app/MessageDef/AttributeReportIB.h
+++ b/src/app/MessageDef/AttributeReportIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the StatusIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/AttributeReportIBs.cpp b/src/app/MessageDef/AttributeReportIBs.cpp
index 001fbff077acc9..144fc8102593f6 100644
--- a/src/app/MessageDef/AttributeReportIBs.cpp
+++ b/src/app/MessageDef/AttributeReportIBs.cpp
@@ -32,8 +32,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeReportIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeReportIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
@@ -51,7 +51,7 @@ CHIP_ERROR AttributeReportIBs::Parser::CheckSchemaValidity() const
             AttributeReportIB::Parser AttributeReport;
             ReturnErrorOnFailure(AttributeReport.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(AttributeReport.CheckSchemaValidity());
+            ReturnErrorOnFailure(AttributeReport.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
     }
@@ -67,7 +67,7 @@ CHIP_ERROR AttributeReportIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 AttributeReportIB::Builder & AttributeReportIBs::Builder::CreateAttributeReport()
 {
diff --git a/src/app/MessageDef/AttributeReportIBs.h b/src/app/MessageDef/AttributeReportIBs.h
index 16baa7b9ed3c5c..ddcf3e05a97ccf 100644
--- a/src/app/MessageDef/AttributeReportIBs.h
+++ b/src/app/MessageDef/AttributeReportIBs.h
@@ -42,22 +42,9 @@ namespace AttributeReportIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/AttributeStatusIB.cpp b/src/app/MessageDef/AttributeStatusIB.cpp
index 5c0e92b7020b03..ffd7e429847cb8 100644
--- a/src/app/MessageDef/AttributeStatusIB.cpp
+++ b/src/app/MessageDef/AttributeStatusIB.cpp
@@ -27,11 +27,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeStatusIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeStatusIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("AttributeStatusIB =");
@@ -49,32 +48,24 @@ CHIP_ERROR AttributeStatusIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                AttributePathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kErrorStatus):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kErrorStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kErrorStatus));
-            {
-                StatusIB::Parser errorStatus;
-                ReturnErrorOnFailure(errorStatus.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(errorStatus.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kPath): {
+            AttributePathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kErrorStatus): {
+            StatusIB::Parser errorStatus;
+            ReturnErrorOnFailure(errorStatus.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(errorStatus.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -86,14 +77,13 @@ CHIP_ERROR AttributeStatusIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kErrorStatus));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_STATUS_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR AttributeStatusIB::Parser::GetPath(AttributePathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/AttributeStatusIB.h b/src/app/MessageDef/AttributeStatusIB.h
index 35358fc2d2d8f5..d75497a25a5da6 100644
--- a/src/app/MessageDef/AttributeStatusIB.h
+++ b/src/app/MessageDef/AttributeStatusIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the AttributePathIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/AttributeStatusIBs.cpp b/src/app/MessageDef/AttributeStatusIBs.cpp
index a10106aad28c34..795c2805027a4c 100644
--- a/src/app/MessageDef/AttributeStatusIBs.cpp
+++ b/src/app/MessageDef/AttributeStatusIBs.cpp
@@ -44,8 +44,8 @@ AttributeStatusIBs::Builder & AttributeStatusIBs::Builder::EndOfAttributeStatuse
     return *this;
 }
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR AttributeStatusIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR AttributeStatusIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err            = CHIP_NO_ERROR;
     size_t NumAttributeStatus = 0;
@@ -65,7 +65,7 @@ CHIP_ERROR AttributeStatusIBs::Parser::CheckSchemaValidity() const
             ReturnErrorOnFailure(status.Init(reader));
 
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(status.CheckSchemaValidity());
+            ReturnErrorOnFailure(status.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -82,6 +82,6 @@ CHIP_ERROR AttributeStatusIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif
-}; // namespace app
-}; // namespace chip
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
+};     // namespace app
+};     // namespace chip
diff --git a/src/app/MessageDef/AttributeStatusIBs.h b/src/app/MessageDef/AttributeStatusIBs.h
index b6a70ab62c3a0e..bfed79945a4728 100644
--- a/src/app/MessageDef/AttributeStatusIBs.h
+++ b/src/app/MessageDef/AttributeStatusIBs.h
@@ -56,22 +56,9 @@ class Builder : public ArrayBuilder
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 } // namespace AttributeStatusIBs
 } // namespace app
diff --git a/src/app/MessageDef/ClusterPathIB.cpp b/src/app/MessageDef/ClusterPathIB.cpp
index 8223d63507a1cd..aedb16491367aa 100644
--- a/src/app/MessageDef/ClusterPathIB.cpp
+++ b/src/app/MessageDef/ClusterPathIB.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR ClusterPathIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR ClusterPathIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("ClusterPathIB =");
@@ -48,10 +47,6 @@ CHIP_ERROR ClusterPathIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kNode):
-            // check if this tag has appeared before
-
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kNode))), err = CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kNode));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), err = CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -63,9 +58,6 @@ CHIP_ERROR ClusterPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEndpoint):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEndpoint))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEndpoint));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -76,9 +68,6 @@ CHIP_ERROR ClusterPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kCluster):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kCluster))), err = CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kCluster));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), err = CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -100,16 +89,13 @@ CHIP_ERROR ClusterPathIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const int requiredFields = (1 << to_underlying(Tag::kCluster));
-
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_CLUSTER_PATH_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR ClusterPathIB::Parser::GetNode(NodeId * const apNode) const
 {
diff --git a/src/app/MessageDef/ClusterPathIB.h b/src/app/MessageDef/ClusterPathIB.h
index cfcb65ec69fc54..79a4f617ac3c7f 100644
--- a/src/app/MessageDef/ClusterPathIB.h
+++ b/src/app/MessageDef/ClusterPathIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public ListParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get the NodeId
diff --git a/src/app/MessageDef/CommandDataIB.cpp b/src/app/MessageDef/CommandDataIB.cpp
index 61978f2e564b52..196c33b920d17e 100644
--- a/src/app/MessageDef/CommandDataIB.cpp
+++ b/src/app/MessageDef/CommandDataIB.cpp
@@ -28,12 +28,10 @@
 
 namespace chip {
 namespace app {
-
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR CommandDataIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR CommandDataIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("CommandDataIB =");
@@ -52,23 +50,16 @@ CHIP_ERROR CommandDataIB::Parser::CheckSchemaValidity() const
 
         switch (tagNum)
         {
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                CommandPathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
+        case to_underlying(Tag::kPath): {
+            CommandPathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
 
-            break;
+        break;
         case to_underlying(Tag::kFields):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kFields))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kFields));
             PRETTY_PRINT_INCDEPTH();
             ReturnErrorOnFailure(CheckIMPayload(reader, 0, "CommandFields"));
             PRETTY_PRINT_DECDEPTH();
@@ -84,14 +75,13 @@ CHIP_ERROR CommandDataIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = 1 << to_underlying(Tag::kPath);
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR CommandDataIB::Parser::GetPath(CommandPathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/CommandDataIB.h b/src/app/MessageDef/CommandDataIB.h
index 1b8d361e0a8e0c..02e436e19aea2c 100644
--- a/src/app/MessageDef/CommandDataIB.h
+++ b/src/app/MessageDef/CommandDataIB.h
@@ -42,22 +42,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the CommandPathIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/CommandPathIB.cpp b/src/app/MessageDef/CommandPathIB.cpp
index be9117d3679613..830d4b1138795d 100644
--- a/src/app/MessageDef/CommandPathIB.cpp
+++ b/src/app/MessageDef/CommandPathIB.cpp
@@ -31,11 +31,10 @@ using namespace chip::TLV;
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR CommandPathIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR CommandPathIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     PRETTY_PRINT("CommandPathIB =");
     PRETTY_PRINT("{");
@@ -53,9 +52,6 @@ CHIP_ERROR CommandPathIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kEndpointId):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEndpointId))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEndpointId));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -67,9 +63,6 @@ CHIP_ERROR CommandPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kClusterId):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kClusterId))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kClusterId));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -80,9 +73,6 @@ CHIP_ERROR CommandPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kCommandId):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kCommandId))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kCommandId));
             VerifyOrReturnError(chip::TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -102,15 +92,12 @@ CHIP_ERROR CommandPathIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const uint16_t requiredFields = (1 << to_underlying(Tag::kCommandId)) | (1 << to_underlying(Tag::kClusterId));
-
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_COMMAND_PATH_IB;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR CommandPathIB::Parser::GetEndpointId(chip::EndpointId * const apEndpointID) const
 {
diff --git a/src/app/MessageDef/CommandPathIB.h b/src/app/MessageDef/CommandPathIB.h
index 1b823efb65e67b..d95068a5794d3a 100644
--- a/src/app/MessageDef/CommandPathIB.h
+++ b/src/app/MessageDef/CommandPathIB.h
@@ -43,22 +43,9 @@ enum class Tag : uint8_t
 class Parser : public ListParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the EndpointId. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/CommandStatusIB.cpp b/src/app/MessageDef/CommandStatusIB.cpp
index 797ec655e3eef4..831959e4d3e44a 100644
--- a/src/app/MessageDef/CommandStatusIB.cpp
+++ b/src/app/MessageDef/CommandStatusIB.cpp
@@ -27,8 +27,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR CommandStatusIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR CommandStatusIB::Parser::PrettyPrint() const
 {
     CHIP_ERROR err      = CHIP_NO_ERROR;
     int tagPresenceMask = 0;
@@ -58,7 +58,7 @@ CHIP_ERROR CommandStatusIB::Parser::CheckSchemaValidity() const
                 ReturnErrorOnFailure(path.Init(reader));
 
                 PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
+                ReturnErrorOnFailure(path.PrettyPrint());
                 PRETTY_PRINT_DECDEPTH();
             }
             break;
@@ -71,7 +71,7 @@ CHIP_ERROR CommandStatusIB::Parser::CheckSchemaValidity() const
                 ReturnErrorOnFailure(errorStatus.Init(reader));
 
                 PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(errorStatus.CheckSchemaValidity());
+                ReturnErrorOnFailure(errorStatus.PrettyPrint());
                 PRETTY_PRINT_DECDEPTH();
             }
             break;
@@ -86,14 +86,13 @@ CHIP_ERROR CommandStatusIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kErrorStatus));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_COMMAND_STATUS_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR CommandStatusIB::Parser::GetPath(CommandPathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/CommandStatusIB.h b/src/app/MessageDef/CommandStatusIB.h
index 2a785295984d09..bb4f8dc72ca65a 100644
--- a/src/app/MessageDef/CommandStatusIB.h
+++ b/src/app/MessageDef/CommandStatusIB.h
@@ -42,22 +42,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the CommandPathIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/DataVersionFilterIB.cpp b/src/app/MessageDef/DataVersionFilterIB.cpp
index 00d1d28b0ff927..53f75b4ee1d000 100644
--- a/src/app/MessageDef/DataVersionFilterIB.cpp
+++ b/src/app/MessageDef/DataVersionFilterIB.cpp
@@ -31,11 +31,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR DataVersionFilterIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR DataVersionFilterIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("DataVersionFilterIB =");
@@ -53,23 +52,16 @@ CHIP_ERROR DataVersionFilterIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                ClusterPathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
+        case to_underlying(Tag::kPath): {
+            ClusterPathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kDataVersion):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDataVersion))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDataVersion));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -91,14 +83,12 @@ CHIP_ERROR DataVersionFilterIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const int requiredFields = (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kDataVersion));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR DataVersionFilterIB::Parser::GetPath(ClusterPathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/DataVersionFilterIB.h b/src/app/MessageDef/DataVersionFilterIB.h
index f59be7c054ccf0..da15447375d97f 100644
--- a/src/app/MessageDef/DataVersionFilterIB.h
+++ b/src/app/MessageDef/DataVersionFilterIB.h
@@ -39,22 +39,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the AttributePathIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/DataVersionFilterIBs.cpp b/src/app/MessageDef/DataVersionFilterIBs.cpp
index eb6a18951ef6db..04eac1d1c24047 100644
--- a/src/app/MessageDef/DataVersionFilterIBs.cpp
+++ b/src/app/MessageDef/DataVersionFilterIBs.cpp
@@ -26,8 +26,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR DataVersionFilterIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR DataVersionFilterIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
@@ -45,7 +45,7 @@ CHIP_ERROR DataVersionFilterIBs::Parser::CheckSchemaValidity() const
             DataVersionFilterIB::Parser DataVersionFilter;
             ReturnErrorOnFailure(DataVersionFilter.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(DataVersionFilter.CheckSchemaValidity());
+            ReturnErrorOnFailure(DataVersionFilter.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
     }
@@ -61,7 +61,7 @@ CHIP_ERROR DataVersionFilterIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 DataVersionFilterIB::Builder & DataVersionFilterIBs::Builder::CreateDataVersionFilter()
 {
diff --git a/src/app/MessageDef/DataVersionFilterIBs.h b/src/app/MessageDef/DataVersionFilterIBs.h
index 8c7ae021f6899f..30ae8400173c5b 100644
--- a/src/app/MessageDef/DataVersionFilterIBs.h
+++ b/src/app/MessageDef/DataVersionFilterIBs.h
@@ -34,22 +34,9 @@ namespace DataVersionFilterIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/EventDataIB.cpp b/src/app/MessageDef/EventDataIB.cpp
index cd70cb4f38bda4..a404ca44ef77cc 100644
--- a/src/app/MessageDef/EventDataIB.cpp
+++ b/src/app/MessageDef/EventDataIB.cpp
@@ -33,12 +33,10 @@
 
 namespace chip {
 namespace app {
-
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventDataIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("EventDataIB =");
@@ -56,23 +54,16 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                EventPathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
+        case to_underlying(Tag::kPath): {
+            EventPathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kEventNumber):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventNumber))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventNumber));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -84,9 +75,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kPriority):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPriority))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPriority));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -98,10 +86,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEpochTimestamp):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEpochTimestamp))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEpochTimestamp));
-
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -114,10 +98,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
             break;
 
         case to_underlying(Tag::kSystemTimestamp):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSystemTimestamp))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSystemTimestamp));
-
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -129,9 +109,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kDeltaEpochTimestamp):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDeltaEpochTimestamp))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDeltaEpochTimestamp));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -143,10 +120,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kDeltaSystemTimestamp):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDeltaSystemTimestamp))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDeltaSystemTimestamp));
-
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -158,10 +131,6 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kData):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kData))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kData));
-
             PRETTY_PRINT_INCDEPTH();
             ReturnErrorOnFailure(CheckIMPayload(reader, 0, "EventData"));
             PRETTY_PRINT_DECDEPTH();
@@ -177,15 +146,12 @@ CHIP_ERROR EventDataIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const int requiredFields =
-            (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kPriority)) | (1 << to_underlying(Tag::kData));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR EventDataIB::Parser::GetPath(EventPathIB::Parser * const apPath)
 {
diff --git a/src/app/MessageDef/EventDataIB.h b/src/app/MessageDef/EventDataIB.h
index ca5f277bc20e4a..4f28914af7de0f 100644
--- a/src/app/MessageDef/EventDataIB.h
+++ b/src/app/MessageDef/EventDataIB.h
@@ -53,22 +53,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the EventPath. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/EventFilterIB.cpp b/src/app/MessageDef/EventFilterIB.cpp
index 9264c1d87d6f31..463738aea653fc 100644
--- a/src/app/MessageDef/EventFilterIB.cpp
+++ b/src/app/MessageDef/EventFilterIB.cpp
@@ -31,11 +31,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventFilterIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventFilterIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("EventFilterIB =");
@@ -54,29 +53,23 @@ CHIP_ERROR EventFilterIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kNode):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kNode))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kNode));
 #if CHIP_DETAIL_LOGGING
-            {
-                NodeId node;
-                ReturnErrorOnFailure(reader.Get(node));
-                PRETTY_PRINT("\tNode = 0x%" PRIx64 ",", node);
-            }
+        {
+            NodeId node;
+            ReturnErrorOnFailure(reader.Get(node));
+            PRETTY_PRINT("\tNode = 0x%" PRIx64 ",", node);
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         case to_underlying(Tag::kEventMin):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventMin))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventMin));
 #if CHIP_DETAIL_LOGGING
-            {
-                uint64_t eventMin;
-                ReturnErrorOnFailure(reader.Get(eventMin));
-                PRETTY_PRINT("\tEventMin = 0x%" PRIx64 ",", eventMin);
-            }
+        {
+            uint64_t eventMin;
+            ReturnErrorOnFailure(reader.Get(eventMin));
+            PRETTY_PRINT("\tEventMin = 0x%" PRIx64 ",", eventMin);
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -88,14 +81,13 @@ CHIP_ERROR EventFilterIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kEventMin));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_EVENT_FILTER_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR EventFilterIB::Parser::GetNode(NodeId * const apNode) const
 {
diff --git a/src/app/MessageDef/EventFilterIB.h b/src/app/MessageDef/EventFilterIB.h
index 518b20a301761f..ecf66cc92dbf60 100644
--- a/src/app/MessageDef/EventFilterIB.h
+++ b/src/app/MessageDef/EventFilterIB.h
@@ -45,22 +45,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the NodeId. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/EventFilterIBs.cpp b/src/app/MessageDef/EventFilterIBs.cpp
index 66023c856fa126..8bc51ff5d19edb 100644
--- a/src/app/MessageDef/EventFilterIBs.cpp
+++ b/src/app/MessageDef/EventFilterIBs.cpp
@@ -26,8 +26,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventFilterIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventFilterIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
@@ -45,7 +45,7 @@ CHIP_ERROR EventFilterIBs::Parser::CheckSchemaValidity() const
             EventFilterIB::Parser eventFilter;
             ReturnErrorOnFailure(eventFilter.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(eventFilter.CheckSchemaValidity());
+            ReturnErrorOnFailure(eventFilter.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
     }
@@ -61,7 +61,7 @@ CHIP_ERROR EventFilterIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 EventFilterIB::Builder & EventFilterIBs::Builder::CreateEventFilter()
 {
diff --git a/src/app/MessageDef/EventFilterIBs.h b/src/app/MessageDef/EventFilterIBs.h
index f480d3d26c612d..fd0b3e93add4a1 100644
--- a/src/app/MessageDef/EventFilterIBs.h
+++ b/src/app/MessageDef/EventFilterIBs.h
@@ -34,22 +34,9 @@ namespace EventFilterIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/EventPathIB.cpp b/src/app/MessageDef/EventPathIB.cpp
index 84c9f6680bf260..df9a24847e84d1 100644
--- a/src/app/MessageDef/EventPathIB.cpp
+++ b/src/app/MessageDef/EventPathIB.cpp
@@ -30,11 +30,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventPathIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("EventPath =");
@@ -53,9 +52,6 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kNode):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kNode))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kNode));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -66,9 +62,6 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEndpoint):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEndpoint))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEndpoint));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -79,9 +72,6 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kCluster):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kCluster))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kCluster));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -93,9 +83,6 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEvent):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEvent))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEvent));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -107,9 +94,6 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kIsUrgent):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kIsUrgent))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kIsUrgent));
             VerifyOrReturnError(TLV::kTLVType_Boolean == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 
 #if CHIP_DETAIL_LOGGING
@@ -138,7 +122,7 @@ CHIP_ERROR EventPathIB::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR EventPathIB::Parser::GetNode(NodeId * const apNode) const
 {
diff --git a/src/app/MessageDef/EventPathIB.h b/src/app/MessageDef/EventPathIB.h
index 0ad2000938ac86..34c60a2b8dbb28 100644
--- a/src/app/MessageDef/EventPathIB.h
+++ b/src/app/MessageDef/EventPathIB.h
@@ -46,22 +46,9 @@ enum class Tag : uint8_t
 class Parser : public ListParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the NodeId. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/EventPathIBs.cpp b/src/app/MessageDef/EventPathIBs.cpp
index 673141fcd8e1a1..40736baf97988b 100644
--- a/src/app/MessageDef/EventPathIBs.cpp
+++ b/src/app/MessageDef/EventPathIBs.cpp
@@ -28,8 +28,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventPathIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventPathIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     size_t NumPath = 0;
@@ -51,7 +51,7 @@ CHIP_ERROR EventPathIBs::Parser::CheckSchemaValidity() const
             ReturnErrorOnFailure(path.Init(reader));
 
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(path.CheckSchemaValidity());
+            ReturnErrorOnFailure(path.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -69,7 +69,7 @@ CHIP_ERROR EventPathIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 EventPathIB::Builder & EventPathIBs::Builder::CreatePath()
 {
diff --git a/src/app/MessageDef/EventPathIBs.h b/src/app/MessageDef/EventPathIBs.h
index 14a909a91b5a4d..7c7913eca52063 100644
--- a/src/app/MessageDef/EventPathIBs.h
+++ b/src/app/MessageDef/EventPathIBs.h
@@ -36,22 +36,9 @@ namespace EventPathIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/EventReportIB.cpp b/src/app/MessageDef/EventReportIB.cpp
index c9eaec4d98f85d..be8a595fba25d5 100644
--- a/src/app/MessageDef/EventReportIB.cpp
+++ b/src/app/MessageDef/EventReportIB.cpp
@@ -28,11 +28,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventReportIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventReportIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("EventReportIB =");
@@ -50,32 +49,24 @@ CHIP_ERROR EventReportIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kEventStatus):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventStatus));
-            {
-                EventStatusIB::Parser eventStatus;
-                ReturnErrorOnFailure(eventStatus.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventStatus.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kEventData):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventData))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventData));
-            {
-                EventDataIB::Parser eventData;
-                ReturnErrorOnFailure(eventData.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventData.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kEventStatus): {
+            EventStatusIB::Parser eventStatus;
+            ReturnErrorOnFailure(eventStatus.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventStatus.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kEventData): {
+            EventDataIB::Parser eventData;
+            ReturnErrorOnFailure(eventData.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventData.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -87,30 +78,13 @@ CHIP_ERROR EventReportIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        // check for at most field:
-        const int CheckDataField   = 1 << to_underlying(Tag::kEventData);
-        const int CheckStatusField = (1 << to_underlying(Tag::kEventStatus));
-
-        if ((tagPresenceMask & CheckDataField) == CheckDataField && (tagPresenceMask & CheckStatusField) == CheckStatusField)
-        {
-            // kEventData and kEventStatus both exist
-            err = CHIP_ERROR_IM_MALFORMED_EVENT_REPORT_IB;
-        }
-        else if ((tagPresenceMask & CheckDataField) != CheckDataField && (tagPresenceMask & CheckStatusField) != CheckStatusField)
-        {
-            // kEventData and kErrorStatus not exist
-            err = CHIP_ERROR_IM_MALFORMED_EVENT_REPORT_IB;
-        }
-        else
-        {
-            err = CHIP_NO_ERROR;
-        }
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR EventReportIB::Parser::GetEventStatus(EventStatusIB::Parser * const apEventStatus) const
 {
diff --git a/src/app/MessageDef/EventReportIB.h b/src/app/MessageDef/EventReportIB.h
index ee2a49d6c38e63..21d04267e76f79 100644
--- a/src/app/MessageDef/EventReportIB.h
+++ b/src/app/MessageDef/EventReportIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the StatusIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/EventReportIBs.cpp b/src/app/MessageDef/EventReportIBs.cpp
index 2a4099a0e09a62..57a61c164c11c6 100644
--- a/src/app/MessageDef/EventReportIBs.cpp
+++ b/src/app/MessageDef/EventReportIBs.cpp
@@ -32,8 +32,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventReportIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventReportIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
@@ -51,7 +51,7 @@ CHIP_ERROR EventReportIBs::Parser::CheckSchemaValidity() const
             EventReportIB::Parser eventReport;
             ReturnErrorOnFailure(eventReport.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(eventReport.CheckSchemaValidity());
+            ReturnErrorOnFailure(eventReport.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
     }
@@ -67,7 +67,7 @@ CHIP_ERROR EventReportIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 EventReportIB::Builder & EventReportIBs::Builder::CreateEventReport()
 {
diff --git a/src/app/MessageDef/EventReportIBs.h b/src/app/MessageDef/EventReportIBs.h
index d7a25c71ede439..bf9149ec2dd5ef 100644
--- a/src/app/MessageDef/EventReportIBs.h
+++ b/src/app/MessageDef/EventReportIBs.h
@@ -40,22 +40,9 @@ namespace EventReportIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/EventStatusIB.cpp b/src/app/MessageDef/EventStatusIB.cpp
index dd8c5f4b9f671b..0f0713a6556e4e 100644
--- a/src/app/MessageDef/EventStatusIB.cpp
+++ b/src/app/MessageDef/EventStatusIB.cpp
@@ -27,11 +27,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR EventStatusIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR EventStatusIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("EventStatusIB =");
@@ -49,32 +48,24 @@ CHIP_ERROR EventStatusIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kPath):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kPath))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kPath));
-            {
-                EventPathIB::Parser path;
-                ReturnErrorOnFailure(path.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(path.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kErrorStatus):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kErrorStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kErrorStatus));
-            {
-                StatusIB::Parser errorStatus;
-                ReturnErrorOnFailure(errorStatus.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(errorStatus.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kPath): {
+            EventPathIB::Parser path;
+            ReturnErrorOnFailure(path.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(path.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kErrorStatus): {
+            StatusIB::Parser errorStatus;
+            ReturnErrorOnFailure(errorStatus.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(errorStatus.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -86,14 +77,13 @@ CHIP_ERROR EventStatusIB::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kPath)) | (1 << to_underlying(Tag::kErrorStatus));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_EVENT_STATUS_IB;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR EventStatusIB::Parser::GetPath(EventPathIB::Parser * const apPath) const
 {
diff --git a/src/app/MessageDef/EventStatusIB.h b/src/app/MessageDef/EventStatusIB.h
index f51eae5e156d69..efe3d513c9c922 100644
--- a/src/app/MessageDef/EventStatusIB.h
+++ b/src/app/MessageDef/EventStatusIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a TLVReader for the EventPathIB. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/InvokeRequestMessage.cpp b/src/app/MessageDef/InvokeRequestMessage.cpp
index 13d54fc6fdabc9..e89217e0966ae5 100644
--- a/src/app/MessageDef/InvokeRequestMessage.cpp
+++ b/src/app/MessageDef/InvokeRequestMessage.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR InvokeRequestMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR InvokeRequestMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("InvokeRequestMessage =");
@@ -48,43 +47,33 @@ CHIP_ERROR InvokeRequestMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kSuppressResponse):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSuppressResponse))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSuppressResponse));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool suppressResponse;
-                ReturnErrorOnFailure(reader.Get(suppressResponse));
-                PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
-            }
+        {
+            bool suppressResponse;
+            ReturnErrorOnFailure(reader.Get(suppressResponse));
+            PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
 
         case to_underlying(Tag::kTimedRequest):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kTimedRequest))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kTimedRequest));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool timedRequest;
-                ReturnErrorOnFailure(reader.Get(timedRequest));
-                PRETTY_PRINT("\ttimedRequest = %s, ", timedRequest ? "true" : "false");
-            }
+        {
+            bool timedRequest;
+            ReturnErrorOnFailure(reader.Get(timedRequest));
+            PRETTY_PRINT("\ttimedRequest = %s, ", timedRequest ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
-        case to_underlying(Tag::kInvokeRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kInvokeRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kInvokeRequests));
-            {
-                InvokeRequests::Parser invokeRequests;
-                ReturnErrorOnFailure(invokeRequests.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(invokeRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        break;
+        case to_underlying(Tag::kInvokeRequests): {
+            InvokeRequests::Parser invokeRequests;
+            ReturnErrorOnFailure(invokeRequests.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(invokeRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case kInteractionModelRevisionTag:
             ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
             break;
@@ -99,15 +88,13 @@ CHIP_ERROR InvokeRequestMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kSuppressResponse)) | (1 << to_underlying(Tag::kTimedRequest)) |
-            (1 << to_underlying(Tag::kInvokeRequests));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_INVOKE_REQUEST_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR InvokeRequestMessage::Parser::GetSuppressResponse(bool * const apSuppressResponse) const
 {
diff --git a/src/app/MessageDef/InvokeRequestMessage.h b/src/app/MessageDef/InvokeRequestMessage.h
index 9cfd13ac89c86b..85b7483b8dfbf0 100644
--- a/src/app/MessageDef/InvokeRequestMessage.h
+++ b/src/app/MessageDef/InvokeRequestMessage.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get SuppressResponse. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/InvokeRequests.cpp b/src/app/MessageDef/InvokeRequests.cpp
index 5d140a6589c2ec..a50283d69fec80 100644
--- a/src/app/MessageDef/InvokeRequests.cpp
+++ b/src/app/MessageDef/InvokeRequests.cpp
@@ -26,8 +26,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR InvokeRequests::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR InvokeRequests::Parser::PrettyPrint() const
 {
     CHIP_ERROR err         = CHIP_NO_ERROR;
     size_t numCommandDatas = 0;
@@ -46,7 +46,7 @@ CHIP_ERROR InvokeRequests::Parser::CheckSchemaValidity() const
             CommandDataIB::Parser commandData;
             ReturnErrorOnFailure(commandData.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(commandData.CheckSchemaValidity());
+            ReturnErrorOnFailure(commandData.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -68,7 +68,7 @@ CHIP_ERROR InvokeRequests::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CommandDataIB::Builder & InvokeRequests::Builder::CreateCommandData()
 {
diff --git a/src/app/MessageDef/InvokeRequests.h b/src/app/MessageDef/InvokeRequests.h
index e81be842b1b530..ed80465400d3d0 100644
--- a/src/app/MessageDef/InvokeRequests.h
+++ b/src/app/MessageDef/InvokeRequests.h
@@ -34,22 +34,9 @@ namespace InvokeRequests {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/InvokeResponseIB.cpp b/src/app/MessageDef/InvokeResponseIB.cpp
index 1fbae7a7139c15..f61154de368955 100644
--- a/src/app/MessageDef/InvokeResponseIB.cpp
+++ b/src/app/MessageDef/InvokeResponseIB.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR InvokeResponseIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR InvokeResponseIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("InvokeResponseIB =");
@@ -47,32 +46,24 @@ CHIP_ERROR InvokeResponseIB::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kCommand):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kCommand))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kCommand));
-            {
-                CommandDataIB::Parser command;
-                ReturnErrorOnFailure(command.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(command.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kStatus):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kStatus));
-            {
-                CommandStatusIB::Parser status;
-                ReturnErrorOnFailure(status.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(status.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kCommand): {
+            CommandDataIB::Parser command;
+            ReturnErrorOnFailure(command.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(command.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kStatus): {
+            CommandStatusIB::Parser status;
+            ReturnErrorOnFailure(status.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(status.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         default:
             PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
             break;
@@ -85,30 +76,12 @@ CHIP_ERROR InvokeResponseIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for at most field:
-        const int CheckCommandField = 1 << to_underlying(Tag::kCommand);
-        const int CheckStatusField  = (1 << to_underlying(Tag::kStatus));
-
-        if ((tagPresenceMask & CheckCommandField) == CheckCommandField && (tagPresenceMask & CheckStatusField) == CheckStatusField)
-        {
-            // kPath and kErrorStatus both exist
-            err = CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_IB;
-        }
-        else if ((tagPresenceMask & CheckCommandField) != CheckCommandField &&
-                 (tagPresenceMask & CheckStatusField) != CheckStatusField)
-        {
-            // kPath and kErrorStatus not exist
-            err = CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_IB;
-        }
-        else
-        {
-            err = CHIP_NO_ERROR;
-        }
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR InvokeResponseIB::Parser::GetCommand(CommandDataIB::Parser * const apCommand) const
 {
diff --git a/src/app/MessageDef/InvokeResponseIB.h b/src/app/MessageDef/InvokeResponseIB.h
index 83e935ce6cfc07..a40b810707e939 100644
--- a/src/app/MessageDef/InvokeResponseIB.h
+++ b/src/app/MessageDef/InvokeResponseIB.h
@@ -41,22 +41,9 @@ enum class Tag : uint8_t
 class Parser : public StructParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get a parser for a Command.
diff --git a/src/app/MessageDef/InvokeResponseIBs.cpp b/src/app/MessageDef/InvokeResponseIBs.cpp
index 6ea80a27fd4b00..cdadf64d00043d 100644
--- a/src/app/MessageDef/InvokeResponseIBs.cpp
+++ b/src/app/MessageDef/InvokeResponseIBs.cpp
@@ -26,8 +26,8 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR InvokeResponseIBs::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR InvokeResponseIBs::Parser::PrettyPrint() const
 {
     CHIP_ERROR err            = CHIP_NO_ERROR;
     size_t numInvokeResponses = 0;
@@ -46,7 +46,7 @@ CHIP_ERROR InvokeResponseIBs::Parser::CheckSchemaValidity() const
             InvokeResponseIB::Parser invokeResponse;
             ReturnErrorOnFailure(invokeResponse.Init(reader));
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(invokeResponse.CheckSchemaValidity());
+            ReturnErrorOnFailure(invokeResponse.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
         }
 
@@ -68,7 +68,7 @@ CHIP_ERROR InvokeResponseIBs::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 InvokeResponseIB::Builder & InvokeResponseIBs::Builder::CreateInvokeResponse()
 {
diff --git a/src/app/MessageDef/InvokeResponseIBs.h b/src/app/MessageDef/InvokeResponseIBs.h
index 5b625f88c112fe..7830d7fbc803f8 100644
--- a/src/app/MessageDef/InvokeResponseIBs.h
+++ b/src/app/MessageDef/InvokeResponseIBs.h
@@ -34,22 +34,9 @@ namespace InvokeResponseIBs {
 class Parser : public ArrayParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 };
 
 class Builder : public ArrayBuilder
diff --git a/src/app/MessageDef/InvokeResponseMessage.cpp b/src/app/MessageDef/InvokeResponseMessage.cpp
index 50de3efa4959d6..619c17988dba9c 100644
--- a/src/app/MessageDef/InvokeResponseMessage.cpp
+++ b/src/app/MessageDef/InvokeResponseMessage.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR InvokeResponseMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR InvokeResponseMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("InvokeResponseMessage =");
@@ -48,30 +47,23 @@ CHIP_ERROR InvokeResponseMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kSuppressResponse):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSuppressResponse))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSuppressResponse));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool suppressResponse;
-                ReturnErrorOnFailure(reader.Get(suppressResponse));
-                PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
-            }
+        {
+            bool suppressResponse;
+            ReturnErrorOnFailure(reader.Get(suppressResponse));
+            PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
-        case to_underlying(Tag::kInvokeResponses):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kInvokeResponses))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kInvokeResponses));
-            {
-                InvokeResponseIBs::Parser invokeResponses;
-                ReturnErrorOnFailure(invokeResponses.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(invokeResponses.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        break;
+        case to_underlying(Tag::kInvokeResponses): {
+            InvokeResponseIBs::Parser invokeResponses;
+            ReturnErrorOnFailure(invokeResponses.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(invokeResponses.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case kInteractionModelRevisionTag:
             ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
             break;
@@ -86,15 +78,13 @@ CHIP_ERROR InvokeResponseMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kSuppressResponse)) | (1 << to_underlying(Tag::kInvokeResponses));
-        err =
-            (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR InvokeResponseMessage::Parser::GetSuppressResponse(bool * const apSuppressResponse) const
 {
diff --git a/src/app/MessageDef/InvokeResponseMessage.h b/src/app/MessageDef/InvokeResponseMessage.h
index 2d317a252a7858..989a5dca714c3d 100644
--- a/src/app/MessageDef/InvokeResponseMessage.h
+++ b/src/app/MessageDef/InvokeResponseMessage.h
@@ -40,22 +40,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get SuppressResponse. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/MessageDefHelper.cpp b/src/app/MessageDef/MessageDefHelper.cpp
index a8f0283968a85f..64d1f20ac0b3d8 100644
--- a/src/app/MessageDef/MessageDefHelper.cpp
+++ b/src/app/MessageDef/MessageDefHelper.cpp
@@ -33,7 +33,7 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK && CHIP_DETAIL_LOGGING
+#if CHIP_CONFIG_IM_PRETTY_PRINT && CHIP_DETAIL_LOGGING
 // this is used to run in signle thread for IM message debug purpose
 namespace {
 uint32_t gPrettyPrintingDepthLevel = 0;
@@ -98,7 +98,7 @@ void DecreaseDepth()
 }
 #endif
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
 CHIP_ERROR CheckIMPayload(TLV::TLVReader & aReader, int aDepth, const char * aLabel)
 {
     if (aDepth == 0)
@@ -260,8 +260,7 @@ CHIP_ERROR CheckIMPayload(TLV::TLVReader & aReader, int aDepth, const char * aLa
 
     return CHIP_NO_ERROR;
 }
-
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 }; // namespace app
 }; // namespace chip
diff --git a/src/app/MessageDef/MessageDefHelper.h b/src/app/MessageDef/MessageDefHelper.h
index bc6f8ec44294a3..15763c69314cd7 100644
--- a/src/app/MessageDef/MessageDefHelper.h
+++ b/src/app/MessageDef/MessageDefHelper.h
@@ -38,7 +38,7 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK && CHIP_DETAIL_LOGGING
+#if CHIP_CONFIG_IM_PRETTY_PRINT && CHIP_DETAIL_LOGGING
 /**
  * Start a new "blank" line.  This will actually print out whitespace to the
  * current indent level, which can be followed with PRETTY_PRINT_SAMELINE calls.
@@ -81,11 +81,11 @@ void DecreaseDepth();
 #define PRETTY_PRINT_DECDEPTH()
 #endif
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
 // Parse an IM payload (attribute value, command fields, event fields,
 // recursively parsing any complex types encountered.
 CHIP_ERROR CheckIMPayload(TLV::TLVReader & aReader, int aDepth, const char * aLabel);
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 }; // namespace app
 }; // namespace chip
diff --git a/src/app/MessageDef/MessageParser.cpp b/src/app/MessageDef/MessageParser.cpp
index 7cf8ea7d175e77..b855a93afcd7eb 100644
--- a/src/app/MessageDef/MessageParser.cpp
+++ b/src/app/MessageDef/MessageParser.cpp
@@ -36,7 +36,7 @@ CHIP_ERROR MessageParser::ExitContainer()
     return CHIP_NO_ERROR;
 }
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
 CHIP_ERROR MessageParser::CheckInteractionModelRevision(TLV::TLVReader & aReader) const
 {
 #if CHIP_DETAIL_LOGGING
@@ -48,7 +48,7 @@ CHIP_ERROR MessageParser::CheckInteractionModelRevision(TLV::TLVReader & aReader
 #endif // CHIP_DETAIL_LOGGING
     return CHIP_NO_ERROR;
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR MessageParser::GetInteractionModelRevision(InteractionModelRevision * const apInteractionModelRevision) const
 {
diff --git a/src/app/MessageDef/MessageParser.h b/src/app/MessageDef/MessageParser.h
index 7fcdaf7e81dbfe..6a2c3469f467a4 100644
--- a/src/app/MessageDef/MessageParser.h
+++ b/src/app/MessageDef/MessageParser.h
@@ -30,9 +30,9 @@ class MessageParser : public StructParser
 public:
     CHIP_ERROR Init(TLV::TLVReader & aReader);
     CHIP_ERROR ExitContainer();
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     CHIP_ERROR CheckInteractionModelRevision(TLV::TLVReader & aReader) const;
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     CHIP_ERROR GetInteractionModelRevision(InteractionModelRevision * const apInteractionModelRevision) const;
 };
diff --git a/src/app/MessageDef/ReadRequestMessage.cpp b/src/app/MessageDef/ReadRequestMessage.cpp
index dda2dbf62c7c84..d51aafd0efc8d3 100644
--- a/src/app/MessageDef/ReadRequestMessage.cpp
+++ b/src/app/MessageDef/ReadRequestMessage.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR ReadRequestMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR ReadRequestMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("ReadRequestMessage =");
@@ -47,70 +46,51 @@ CHIP_ERROR ReadRequestMessage::Parser::CheckSchemaValidity() const
         uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
         switch (tagNum)
         {
-        case to_underlying(Tag::kAttributeRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttributeRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttributeRequests));
-            {
-                AttributePathIBs::Parser attributeRequests;
-                ReturnErrorOnFailure(attributeRequests.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(attributeRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kDataVersionFilters):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDataVersionFilters))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDataVersionFilters));
-            {
-                DataVersionFilterIBs::Parser dataVersionFilters;
-                ReturnErrorOnFailure(dataVersionFilters.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(dataVersionFilters.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kEventRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventRequests));
-            {
-                EventPathIBs::Parser eventRequests;
-                ReturnErrorOnFailure(eventRequests.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kEventFilters):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventFilters))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventFilters));
-            {
-                EventFilterIBs::Parser eventFilters;
-                ReturnErrorOnFailure(eventFilters.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventFilters.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        case to_underlying(Tag::kAttributeRequests): {
+            AttributePathIBs::Parser attributeRequests;
+            ReturnErrorOnFailure(attributeRequests.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(attributeRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kDataVersionFilters): {
+            DataVersionFilterIBs::Parser dataVersionFilters;
+            ReturnErrorOnFailure(dataVersionFilters.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(dataVersionFilters.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kEventRequests): {
+            EventPathIBs::Parser eventRequests;
+            ReturnErrorOnFailure(eventRequests.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kEventFilters): {
+            EventFilterIBs::Parser eventFilters;
+            ReturnErrorOnFailure(eventFilters.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventFilters.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kIsFabricFiltered):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kIsFabricFiltered))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kIsFabricFiltered));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool isFabricFiltered;
-                ReturnErrorOnFailure(reader.Get(isFabricFiltered));
-                PRETTY_PRINT("\tisFabricFiltered = %s, ", isFabricFiltered ? "true" : "false");
-            }
+        {
+            bool isFabricFiltered;
+            ReturnErrorOnFailure(reader.Get(isFabricFiltered));
+            PRETTY_PRINT("\tisFabricFiltered = %s, ", isFabricFiltered ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         case kInteractionModelRevisionTag:
             ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
             break;
@@ -125,14 +105,13 @@ CHIP_ERROR ReadRequestMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kIsFabricFiltered));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_READ_REQUEST_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR ReadRequestMessage::Parser::GetAttributeRequests(AttributePathIBs::Parser * const apAttributeRequests) const
 {
diff --git a/src/app/MessageDef/ReadRequestMessage.h b/src/app/MessageDef/ReadRequestMessage.h
index 8e1465618420ff..27736e9842bd08 100644
--- a/src/app/MessageDef/ReadRequestMessage.h
+++ b/src/app/MessageDef/ReadRequestMessage.h
@@ -45,22 +45,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Get a TLVReader for the AttributePathIBs. Next() must be called before accessing them.
      *
diff --git a/src/app/MessageDef/ReportDataMessage.cpp b/src/app/MessageDef/ReportDataMessage.cpp
index de95a7532b7461..088c7c39516040 100644
--- a/src/app/MessageDef/ReportDataMessage.cpp
+++ b/src/app/MessageDef/ReportDataMessage.cpp
@@ -35,11 +35,10 @@ using namespace chip;
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR ReportDataMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR ReportDataMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     AttributeReportIBs::Parser attributeReportIBs;
     EventReportIBs::Parser eventReportIBs;
@@ -60,8 +59,6 @@ CHIP_ERROR ReportDataMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kSuppressResponse):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSuppressResponse))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSuppressResponse));
             VerifyOrReturnError(TLV::kTLVType_Boolean == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -72,8 +69,6 @@ CHIP_ERROR ReportDataMessage::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kSubscriptionId):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSubscriptionId))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSubscriptionId));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -84,38 +79,30 @@ CHIP_ERROR ReportDataMessage::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kAttributeReportIBs):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttributeReportIBs))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttributeReportIBs));
             VerifyOrReturnError(TLV::kTLVType_Array == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
                 attributeReportIBs.Init(reader);
 
                 PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(attributeReportIBs.CheckSchemaValidity());
+                ReturnErrorOnFailure(attributeReportIBs.PrettyPrint());
                 PRETTY_PRINT_DECDEPTH();
             }
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kEventReports):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventReports))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventReports));
             VerifyOrReturnError(TLV::kTLVType_Array == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
                 eventReportIBs.Init(reader);
 
                 PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventReportIBs.CheckSchemaValidity());
+                ReturnErrorOnFailure(eventReportIBs.PrettyPrint());
                 PRETTY_PRINT_DECDEPTH();
             }
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kMoreChunkedMessages):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kMoreChunkedMessages))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kMoreChunkedMessages));
             VerifyOrReturnError(TLV::kTLVType_Boolean == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -144,7 +131,7 @@ CHIP_ERROR ReportDataMessage::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR ReportDataMessage::Parser::GetSuppressResponse(bool * const apSuppressResponse) const
 {
diff --git a/src/app/MessageDef/ReportDataMessage.h b/src/app/MessageDef/ReportDataMessage.h
index 29fdbff29a00d2..bd970a133c58d0 100644
--- a/src/app/MessageDef/ReportDataMessage.h
+++ b/src/app/MessageDef/ReportDataMessage.h
@@ -50,22 +50,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Check whether a response (a StatusResponseMessage specifically) is to be sent back to the request.
diff --git a/src/app/MessageDef/StatusIB.cpp b/src/app/MessageDef/StatusIB.cpp
index d82c7da859b72d..315edfb1d0e11b 100644
--- a/src/app/MessageDef/StatusIB.cpp
+++ b/src/app/MessageDef/StatusIB.cpp
@@ -62,12 +62,10 @@ CHIP_ERROR StatusIB::Parser::DecodeStatusIB(StatusIB & aStatusIB) const
     }
     return CHIP_NO_ERROR;
 }
-
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR StatusIB::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR StatusIB::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("StatusIB =");
@@ -81,33 +79,30 @@ CHIP_ERROR StatusIB::Parser::CheckSchemaValidity() const
         {
             continue;
         }
-        if (!(tagPresenceMask & (1 << to_underlying(Tag::kStatus))))
+        uint32_t tagNum = TLV::TagNumFromTag(reader.GetTag());
+        switch (tagNum)
         {
-            tagPresenceMask |= (1 << to_underlying(Tag::kStatus));
-
+        case to_underlying(Tag::kStatus):
 #if CHIP_DETAIL_LOGGING
-            {
-                uint8_t status;
-                ReturnErrorOnFailure(reader.Get(status));
-                PRETTY_PRINT("\tstatus = " ChipLogFormatIMStatus ",", ChipLogValueIMStatus(static_cast(status)));
-            }
-#endif // CHIP_DETAIL_LOGGING
-        }
-        else if (!(tagPresenceMask & (1 << to_underlying(Tag::kClusterStatus))))
         {
-            tagPresenceMask |= (1 << to_underlying(Tag::kClusterStatus));
-
-#if CHIP_DETAIL_LOGGING
-            {
-                ClusterStatus clusterStatus;
-                ReturnErrorOnFailure(reader.Get(clusterStatus));
-                PRETTY_PRINT("\tcluster-status = 0x%x,", clusterStatus);
-            }
-#endif // CHIP_DETAIL_LOGGING
+            uint8_t status;
+            ReturnErrorOnFailure(reader.Get(status));
+            PRETTY_PRINT("\tstatus = " ChipLogFormatIMStatus ",", ChipLogValueIMStatus(static_cast(status)));
         }
-        else
+#endif // CHIP_DETAIL_LOGGING
+        break;
+        case to_underlying(Tag::kClusterStatus):
+#if CHIP_DETAIL_LOGGING
         {
-            PRETTY_PRINT("\tExtra element in StatusIB");
+            ClusterStatus clusterStatus;
+            ReturnErrorOnFailure(reader.Get(clusterStatus));
+            PRETTY_PRINT("\tcluster-status = 0x%x,", clusterStatus);
+        }
+#endif // CHIP_DETAIL_LOGGING
+        break;
+        default:
+            PRETTY_PRINT("Unknown tag num %" PRIu32, tagNum);
+            break;
         }
     }
 
@@ -116,14 +111,12 @@ CHIP_ERROR StatusIB::Parser::CheckSchemaValidity() const
     // if we have exhausted this container
     if (CHIP_END_OF_TLV == err)
     {
-        // check for required fields:
-        const int requiredFields = (1 << to_underlying(Tag::kStatus));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_STATUS_IB;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 StatusIB::Builder & StatusIB::Builder::EncodeStatusIB(const StatusIB & aStatusIB)
 {
diff --git a/src/app/MessageDef/StatusIB.h b/src/app/MessageDef/StatusIB.h
index f2af401c2d8548..00ae724f3d2d4c 100644
--- a/src/app/MessageDef/StatusIB.h
+++ b/src/app/MessageDef/StatusIB.h
@@ -56,23 +56,9 @@ struct StatusIB
     class Parser : public StructParser
     {
     public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-        /**
-         *  @brief Roughly verify the message is correctly formed
-         *   1) all mandatory tags are present
-         *   2) all elements have expected data type
-         *   3) any tag can only appear once
-         *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-         *  @note The main use of this function is to print out what we're
-         *    receiving during protocol development and debugging.
-         *    The encoding rule has changed in IM encoding spec so this
-         *    check is only "roughly" conformant now.
-         *
-         *  @return #CHIP_NO_ERROR on success
-         */
-        CHIP_ERROR CheckSchemaValidity() const;
-#endif
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+        CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
         /**
          * Decode the StatusIB
          *
diff --git a/src/app/MessageDef/StatusResponseMessage.cpp b/src/app/MessageDef/StatusResponseMessage.cpp
index 758147df71bbb7..52064fe47d63b7 100644
--- a/src/app/MessageDef/StatusResponseMessage.cpp
+++ b/src/app/MessageDef/StatusResponseMessage.cpp
@@ -22,11 +22,10 @@ using namespace chip::Protocols::InteractionModel;
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR StatusResponseMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR StatusResponseMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     PRETTY_PRINT("StatusResponseMessage =");
     PRETTY_PRINT("{");
@@ -44,8 +43,6 @@ CHIP_ERROR StatusResponseMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kStatus):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kStatus))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kStatus));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -68,14 +65,12 @@ CHIP_ERROR StatusResponseMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kStatus));
-        err =
-            (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_STATUS_RESPONSE_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR StatusResponseMessage::Parser::GetStatus(Protocols::InteractionModel::Status & aStatus) const
 {
diff --git a/src/app/MessageDef/StatusResponseMessage.h b/src/app/MessageDef/StatusResponseMessage.h
index 124091215ec820..5266af4514e9ed 100644
--- a/src/app/MessageDef/StatusResponseMessage.h
+++ b/src/app/MessageDef/StatusResponseMessage.h
@@ -38,22 +38,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
     /**
      *  @brief Get Status. Next() must be called before accessing them.
diff --git a/src/app/MessageDef/SubscribeRequestMessage.cpp b/src/app/MessageDef/SubscribeRequestMessage.cpp
index 69b5b4841ef9dc..f5f085df796092 100644
--- a/src/app/MessageDef/SubscribeRequestMessage.cpp
+++ b/src/app/MessageDef/SubscribeRequestMessage.cpp
@@ -19,11 +19,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR SubscribeRequestMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("SubscribeRequestMessage =");
@@ -42,8 +41,6 @@ CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kKeepSubscriptions):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kKeepSubscriptions))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kKeepSubscriptions));
             VerifyOrReturnError(TLV::kTLVType_Boolean == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -54,9 +51,6 @@ CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kMinIntervalFloorSeconds):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kMinIntervalFloorSeconds))),
-                                CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kMinIntervalFloorSeconds));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -67,9 +61,6 @@ CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kMaxIntervalCeilingSeconds):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kMaxIntervalCeilingSeconds))),
-                                CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kMaxIntervalCeilingSeconds));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -79,70 +70,51 @@ CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
             }
 #endif // CHIP_DETAIL_LOGGING
             break;
-        case to_underlying(Tag::kAttributeRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kAttributeRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kAttributeRequests));
-            {
-                AttributePathIBs::Parser attributeRequests;
-                ReturnErrorOnFailure(attributeRequests.Init(reader));
+        case to_underlying(Tag::kAttributeRequests): {
+            AttributePathIBs::Parser attributeRequests;
+            ReturnErrorOnFailure(attributeRequests.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(attributeRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kDataVersionFilters):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kDataVersionFilters))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kDataVersionFilters));
-            {
-                DataVersionFilterIBs::Parser dataVersionFilters;
-                ReturnErrorOnFailure(dataVersionFilters.Init(reader));
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(attributeRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kDataVersionFilters): {
+            DataVersionFilterIBs::Parser dataVersionFilters;
+            ReturnErrorOnFailure(dataVersionFilters.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(dataVersionFilters.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kEventRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventRequests));
-            {
-                EventPathIBs::Parser eventRequests;
-                ReturnErrorOnFailure(eventRequests.Init(reader));
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(dataVersionFilters.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kEventRequests): {
+            EventPathIBs::Parser eventRequests;
+            ReturnErrorOnFailure(eventRequests.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
-        case to_underlying(Tag::kEventFilters):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kEventFilters))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kEventFilters));
-            {
-                EventFilterIBs::Parser eventFilters;
-                ReturnErrorOnFailure(eventFilters.Init(reader));
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
+        case to_underlying(Tag::kEventFilters): {
+            EventFilterIBs::Parser eventFilters;
+            ReturnErrorOnFailure(eventFilters.Init(reader));
 
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(eventFilters.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(eventFilters.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kIsFabricFiltered):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kIsFabricFiltered))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kIsFabricFiltered));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool isFabricFiltered;
-                ReturnErrorOnFailure(reader.Get(isFabricFiltered));
-                PRETTY_PRINT("\tisFabricFiltered = %s, ", isFabricFiltered ? "true" : "false");
-            }
+        {
+            bool isFabricFiltered;
+            ReturnErrorOnFailure(reader.Get(isFabricFiltered));
+            PRETTY_PRINT("\tisFabricFiltered = %s, ", isFabricFiltered ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         case kInteractionModelRevisionTag:
             ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
             break;
@@ -157,17 +129,13 @@ CHIP_ERROR SubscribeRequestMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kIsFabricFiltered)) | (1 << to_underlying(Tag::kKeepSubscriptions)) |
-            (1 << to_underlying(Tag::kMinIntervalFloorSeconds)) | (1 << to_underlying(Tag::kMaxIntervalCeilingSeconds));
-
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR
-                                                                   : CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_REQUEST_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR SubscribeRequestMessage::Parser::GetKeepSubscriptions(bool * const apKeepExistingSubscription) const
 {
diff --git a/src/app/MessageDef/SubscribeRequestMessage.h b/src/app/MessageDef/SubscribeRequestMessage.h
index 25529cc3870c69..7883e4af5a11b3 100644
--- a/src/app/MessageDef/SubscribeRequestMessage.h
+++ b/src/app/MessageDef/SubscribeRequestMessage.h
@@ -48,21 +48,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Check if subscription is kept.
      *  @return #CHIP_NO_ERROR on success
diff --git a/src/app/MessageDef/SubscribeResponseMessage.cpp b/src/app/MessageDef/SubscribeResponseMessage.cpp
index 97e7100c4e5670..a745a96b185c99 100644
--- a/src/app/MessageDef/SubscribeResponseMessage.cpp
+++ b/src/app/MessageDef/SubscribeResponseMessage.cpp
@@ -19,11 +19,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR SubscribeResponseMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR SubscribeResponseMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     PRETTY_PRINT("SubscribeResponseMessage =");
     PRETTY_PRINT("{");
@@ -41,8 +40,6 @@ CHIP_ERROR SubscribeResponseMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kSubscriptionId):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSubscriptionId))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSubscriptionId));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -53,8 +50,6 @@ CHIP_ERROR SubscribeResponseMessage::Parser::CheckSchemaValidity() const
 #endif // CHIP_DETAIL_LOGGING
             break;
         case to_underlying(Tag::kMaxInterval):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kMaxInterval))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kMaxInterval));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -77,14 +72,12 @@ CHIP_ERROR SubscribeResponseMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const uint16_t requiredFields = (1 << to_underlying(Tag::kSubscriptionId)) | (1 << to_underlying(Tag::kMaxInterval));
-        err                           = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR
-                                                                   : CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_RESPONSE_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR SubscribeResponseMessage::Parser::GetSubscriptionId(SubscriptionId * const apSubscribeId) const
 {
diff --git a/src/app/MessageDef/SubscribeResponseMessage.h b/src/app/MessageDef/SubscribeResponseMessage.h
index 19a44e6c0f2f74..614d926a0c386b 100644
--- a/src/app/MessageDef/SubscribeResponseMessage.h
+++ b/src/app/MessageDef/SubscribeResponseMessage.h
@@ -38,21 +38,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-#endif
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Get Subscription ID. Next() must be called before accessing them.
      *
diff --git a/src/app/MessageDef/TimedRequestMessage.cpp b/src/app/MessageDef/TimedRequestMessage.cpp
index 15440b9edd32b0..9c6d859d9dbdb2 100644
--- a/src/app/MessageDef/TimedRequestMessage.cpp
+++ b/src/app/MessageDef/TimedRequestMessage.cpp
@@ -19,11 +19,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR TimedRequestMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR TimedRequestMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     PRETTY_PRINT("TimedRequestMessage =");
     PRETTY_PRINT("{");
@@ -41,8 +40,6 @@ CHIP_ERROR TimedRequestMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kTimeoutMs):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kTimeoutMs))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kTimeoutMs));
             VerifyOrReturnError(TLV::kTLVType_UnsignedInteger == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
 #if CHIP_DETAIL_LOGGING
             {
@@ -64,13 +61,12 @@ CHIP_ERROR TimedRequestMessage::Parser::CheckSchemaValidity() const
     PRETTY_PRINT_BLANK_LINE();
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = (1 << to_underlying(Tag::kTimeoutMs));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_TIMED_REQUEST_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR TimedRequestMessage::Parser::GetTimeoutMs(uint16_t * const apTimeoutMs) const
 {
diff --git a/src/app/MessageDef/TimedRequestMessage.h b/src/app/MessageDef/TimedRequestMessage.h
index 1151bd21e2c43b..eb27597ba5e276 100644
--- a/src/app/MessageDef/TimedRequestMessage.h
+++ b/src/app/MessageDef/TimedRequestMessage.h
@@ -36,21 +36,8 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *    The encoding rule has changed in IM encoding spec so this
-     *    check is only "roughly" conformant now.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
 #endif
 
     /**
diff --git a/src/app/MessageDef/WriteRequestMessage.cpp b/src/app/MessageDef/WriteRequestMessage.cpp
index 4b19a66dfba22f..7a3625a72f0565 100644
--- a/src/app/MessageDef/WriteRequestMessage.cpp
+++ b/src/app/MessageDef/WriteRequestMessage.cpp
@@ -30,11 +30,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR WriteRequestMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR WriteRequestMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
 
     PRETTY_PRINT("WriteRequestMessage =");
@@ -53,55 +52,42 @@ CHIP_ERROR WriteRequestMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kSuppressResponse):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kSuppressResponse))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kSuppressResponse));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool suppressResponse;
-                ReturnErrorOnFailure(reader.Get(suppressResponse));
-                PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
-            }
+        {
+            bool suppressResponse;
+            ReturnErrorOnFailure(reader.Get(suppressResponse));
+            PRETTY_PRINT("\tsuppressResponse = %s, ", suppressResponse ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
 
         case to_underlying(Tag::kTimedRequest):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kTimedRequest))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kTimedRequest));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool timedRequest;
-                ReturnErrorOnFailure(reader.Get(timedRequest));
-                PRETTY_PRINT("\ttimedRequest = %s, ", timedRequest ? "true" : "false");
-            }
+        {
+            bool timedRequest;
+            ReturnErrorOnFailure(reader.Get(timedRequest));
+            PRETTY_PRINT("\ttimedRequest = %s, ", timedRequest ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
-        case to_underlying(Tag::kWriteRequests):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kWriteRequests))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kWriteRequests));
-            {
-                AttributeDataIBs::Parser writeRequests;
-                ReturnErrorOnFailure(writeRequests.Init(reader));
-
-                PRETTY_PRINT_INCDEPTH();
-                ReturnErrorOnFailure(writeRequests.CheckSchemaValidity());
-                PRETTY_PRINT_DECDEPTH();
-            }
-            break;
+        break;
+        case to_underlying(Tag::kWriteRequests): {
+            AttributeDataIBs::Parser writeRequests;
+            ReturnErrorOnFailure(writeRequests.Init(reader));
+
+            PRETTY_PRINT_INCDEPTH();
+            ReturnErrorOnFailure(writeRequests.PrettyPrint());
+            PRETTY_PRINT_DECDEPTH();
+        }
+        break;
         case to_underlying(Tag::kMoreChunkedMessages):
-            // check if this tag has appeared before
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kMoreChunkedMessages))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kMoreChunkedMessages));
 #if CHIP_DETAIL_LOGGING
-            {
-                bool moreChunkedMessages;
-                ReturnErrorOnFailure(reader.Get(moreChunkedMessages));
-                PRETTY_PRINT("\tmoreChunkedMessages = %s, ", moreChunkedMessages ? "true" : "false");
-            }
+        {
+            bool moreChunkedMessages;
+            ReturnErrorOnFailure(reader.Get(moreChunkedMessages));
+            PRETTY_PRINT("\tmoreChunkedMessages = %s, ", moreChunkedMessages ? "true" : "false");
+        }
 #endif // CHIP_DETAIL_LOGGING
-            break;
+        break;
         case kInteractionModelRevisionTag:
             ReturnErrorOnFailure(MessageParser::CheckInteractionModelRevision(reader));
             break;
@@ -116,14 +102,13 @@ CHIP_ERROR WriteRequestMessage::Parser::CheckSchemaValidity() const
 
     if (CHIP_END_OF_TLV == err)
     {
-        const int requiredFields = ((1 << to_underlying(Tag::kTimedRequest)) | (1 << to_underlying(Tag::kWriteRequests)));
-        err = (tagPresenceMask & requiredFields) == requiredFields ? CHIP_NO_ERROR : CHIP_ERROR_IM_MALFORMED_WRITE_REQUEST_MESSAGE;
+        err = CHIP_NO_ERROR;
     }
 
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR WriteRequestMessage::Parser::GetSuppressResponse(bool * const apSuppressResponse) const
 {
diff --git a/src/app/MessageDef/WriteRequestMessage.h b/src/app/MessageDef/WriteRequestMessage.h
index 7e79617bd3f9d8..1eb8e3c7d4c76c 100644
--- a/src/app/MessageDef/WriteRequestMessage.h
+++ b/src/app/MessageDef/WriteRequestMessage.h
@@ -45,19 +45,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Get SuppressResponse boolean
      *
diff --git a/src/app/MessageDef/WriteResponseMessage.cpp b/src/app/MessageDef/WriteResponseMessage.cpp
index f0bab4d3abc2a1..37d95f5ea45b50 100644
--- a/src/app/MessageDef/WriteResponseMessage.cpp
+++ b/src/app/MessageDef/WriteResponseMessage.cpp
@@ -25,11 +25,10 @@
 
 namespace chip {
 namespace app {
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-CHIP_ERROR WriteResponseMessage::Parser::CheckSchemaValidity() const
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+CHIP_ERROR WriteResponseMessage::Parser::PrettyPrint() const
 {
-    CHIP_ERROR err      = CHIP_NO_ERROR;
-    int tagPresenceMask = 0;
+    CHIP_ERROR err = CHIP_NO_ERROR;
     TLV::TLVReader reader;
     AttributeStatusIBs::Parser writeResponses;
     PRETTY_PRINT("WriteResponseMessage =");
@@ -48,13 +47,11 @@ CHIP_ERROR WriteResponseMessage::Parser::CheckSchemaValidity() const
         switch (tagNum)
         {
         case to_underlying(Tag::kWriteResponses):
-            VerifyOrReturnError(!(tagPresenceMask & (1 << to_underlying(Tag::kWriteResponses))), CHIP_ERROR_INVALID_TLV_TAG);
-            tagPresenceMask |= (1 << to_underlying(Tag::kWriteResponses));
             VerifyOrReturnError(TLV::kTLVType_Array == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE);
             ReturnErrorOnFailure(writeResponses.Init(reader));
 
             PRETTY_PRINT_INCDEPTH();
-            ReturnErrorOnFailure(writeResponses.CheckSchemaValidity());
+            ReturnErrorOnFailure(writeResponses.PrettyPrint());
             PRETTY_PRINT_DECDEPTH();
             break;
         case kInteractionModelRevisionTag:
@@ -77,7 +74,7 @@ CHIP_ERROR WriteResponseMessage::Parser::CheckSchemaValidity() const
     ReturnErrorOnFailure(err);
     return reader.ExitContainer(mOuterContainerType);
 }
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
 
 CHIP_ERROR WriteResponseMessage::Parser::GetWriteResponses(AttributeStatusIBs::Parser * const apWriteResponses) const
 {
diff --git a/src/app/MessageDef/WriteResponseMessage.h b/src/app/MessageDef/WriteResponseMessage.h
index b3111f6225a2f1..b4d75d09b73a49 100644
--- a/src/app/MessageDef/WriteResponseMessage.h
+++ b/src/app/MessageDef/WriteResponseMessage.h
@@ -37,19 +37,9 @@ enum class Tag : uint8_t
 class Parser : public MessageParser
 {
 public:
-    /**
-     *  @brief Roughly verify the message is correctly formed
-     *   1) all mandatory tags are present
-     *   2) all elements have expected data type
-     *   3) any tag can only appear once
-     *   4) At the top level of the structure, unknown tags are ignored for forward compatibility
-     *  @note The main use of this function is to print out what we're
-     *    receiving during protocol development and debugging.
-     *
-     *  @return #CHIP_NO_ERROR on success
-     */
-    CHIP_ERROR CheckSchemaValidity() const;
-
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    CHIP_ERROR PrettyPrint() const;
+#endif // CHIP_CONFIG_IM_PRETTY_PRINT
     /**
      *  @brief Get a TLVReader for the AttributeStatusIBs. Next() must be called before accessing them.
      *
diff --git a/src/app/ReadClient.cpp b/src/app/ReadClient.cpp
index 94a29cd36dac52..803d8f5bcf250f 100644
--- a/src/app/ReadClient.cpp
+++ b/src/app/ReadClient.cpp
@@ -510,9 +510,8 @@ CHIP_ERROR ReadClient::ProcessReportData(System::PacketBufferHandle && aPayload)
     err = report.Init(reader);
     SuccessOrExit(err);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = report.CheckSchemaValidity();
-    SuccessOrExit(err);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    report.PrettyPrint();
 #endif
 
     err = report.GetSuppressResponse(&suppressResponse);
@@ -888,8 +887,8 @@ CHIP_ERROR ReadClient::ProcessSubscribeResponse(System::PacketBufferHandle && aP
     SubscribeResponseMessage::Parser subscribeResponse;
     ReturnErrorOnFailure(subscribeResponse.Init(reader));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(subscribeResponse.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    subscribeResponse.PrettyPrint();
 #endif
 
     SubscriptionId subscriptionId = 0;
diff --git a/src/app/ReadHandler.cpp b/src/app/ReadHandler.cpp
index 7fd2436d645f87..5b9a2921d1b12f 100644
--- a/src/app/ReadHandler.cpp
+++ b/src/app/ReadHandler.cpp
@@ -304,8 +304,8 @@ CHIP_ERROR ReadHandler::ProcessReadRequest(System::PacketBufferHandle && aPayloa
     reader.Init(std::move(aPayload));
 
     ReturnErrorOnFailure(readRequestParser.Init(reader));
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(readRequestParser.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    readRequestParser.PrettyPrint();
 #endif
 
     err = readRequestParser.GetAttributeRequests(&attributePathListParser);
@@ -557,8 +557,8 @@ CHIP_ERROR ReadHandler::ProcessSubscribeRequest(System::PacketBufferHandle && aP
 
     SubscribeRequestMessage::Parser subscribeRequestParser;
     ReturnErrorOnFailure(subscribeRequestParser.Init(reader));
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(subscribeRequestParser.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    subscribeRequestParser.PrettyPrint();
 #endif
 
     AttributePathIBs::Parser attributePathListParser;
diff --git a/src/app/StatusResponse.cpp b/src/app/StatusResponse.cpp
index c6ed1cbfaf57b4..72fb60ab0a7522 100644
--- a/src/app/StatusResponse.cpp
+++ b/src/app/StatusResponse.cpp
@@ -50,8 +50,8 @@ CHIP_ERROR StatusResponse::ProcessStatusResponse(System::PacketBufferHandle && a
     System::PacketBufferTLVReader reader;
     reader.Init(std::move(aPayload));
     ReturnErrorOnFailure(response.Init(reader));
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(response.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    response.PrettyPrint();
 #endif
     StatusIB status;
     ReturnErrorOnFailure(response.GetStatus(status.mStatus));
diff --git a/src/app/TimedHandler.cpp b/src/app/TimedHandler.cpp
index b62d835f2ace8e..22a9718a3c6114 100644
--- a/src/app/TimedHandler.cpp
+++ b/src/app/TimedHandler.cpp
@@ -114,8 +114,8 @@ CHIP_ERROR TimedHandler::HandleTimedRequestAction(Messaging::ExchangeContext * a
     TimedRequestMessage::Parser parser;
     ReturnErrorOnFailure(parser.Init(reader));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(parser.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    parser.PrettyPrint();
 #endif
 
     uint16_t timeoutMs;
diff --git a/src/app/WriteClient.cpp b/src/app/WriteClient.cpp
index bbd4d289f58f05..c29242d7a146fa 100644
--- a/src/app/WriteClient.cpp
+++ b/src/app/WriteClient.cpp
@@ -53,8 +53,8 @@ CHIP_ERROR WriteClient::ProcessWriteResponseMessage(System::PacketBufferHandle &
 
     ReturnErrorOnFailure(writeResponse.Init(reader));
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    ReturnErrorOnFailure(writeResponse.CheckSchemaValidity());
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    writeResponse.PrettyPrint();
 #endif
 
     err = writeResponse.GetWriteResponses(&attributeStatusesParser);
diff --git a/src/app/WriteHandler.cpp b/src/app/WriteHandler.cpp
index 98b23520997c5d..a79cab52c556f3 100644
--- a/src/app/WriteHandler.cpp
+++ b/src/app/WriteHandler.cpp
@@ -554,9 +554,8 @@ Status WriteHandler::ProcessWriteRequest(System::PacketBufferHandle && aPayload,
     err = writeRequestParser.Init(reader);
     SuccessOrExit(err);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = writeRequestParser.CheckSchemaValidity();
-    SuccessOrExit(err);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    writeRequestParser.PrettyPrint();
 #endif
     err = writeRequestParser.GetSuppressResponse(&mSuppressResponse);
     if (err == CHIP_END_OF_TLV)
diff --git a/src/app/tests/TestCommandInteraction.cpp b/src/app/tests/TestCommandInteraction.cpp
index 2ad2bc751be526..e023bf96750a9d 100644
--- a/src/app/tests/TestCommandInteraction.cpp
+++ b/src/app/tests/TestCommandInteraction.cpp
@@ -588,14 +588,13 @@ void TestCommandInteraction::ValidateCommandHandlerWithSendCommand(nlTestSuite *
     err = commandHandler.Finalize(commandPacket);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     chip::System::PacketBufferTLVReader reader;
     InvokeResponseMessage::Parser invokeResponseMessageParser;
     reader.Init(std::move(commandPacket));
     err = invokeResponseMessageParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-    err = invokeResponseMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+    invokeResponseMessageParser.PrettyPrint();
 #endif
 
     //
@@ -659,14 +658,13 @@ void TestCommandInteraction::TestCommandHandlerCommandDataEncoding(nlTestSuite *
     err = commandHandler.Finalize(commandPacket);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     chip::System::PacketBufferTLVReader reader;
     InvokeResponseMessage::Parser invokeResponseMessageParser;
     reader.Init(std::move(commandPacket));
     err = invokeResponseMessageParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-    err = invokeResponseMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+    invokeResponseMessageParser.PrettyPrint();
 #endif
 
     //
@@ -695,14 +693,13 @@ void TestCommandInteraction::TestCommandHandlerCommandEncodeFailure(nlTestSuite
     err = commandHandler.Finalize(commandPacket);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     chip::System::PacketBufferTLVReader reader;
     InvokeResponseMessage::Parser invokeResponseMessageParser;
     reader.Init(std::move(commandPacket));
     err = invokeResponseMessageParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-    err = invokeResponseMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+    invokeResponseMessageParser.PrettyPrint();
 #endif
 
     //
@@ -1104,14 +1101,13 @@ void TestCommandInteraction::TestCommandHandlerCommandEncodeExternalFailure(nlTe
     err = commandHandler.Finalize(commandPacket);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
+#if CHIP_CONFIG_IM_PRETTY_PRINT
     chip::System::PacketBufferTLVReader reader;
     InvokeResponseMessage::Parser invokeResponseMessageParser;
     reader.Init(std::move(commandPacket));
     err = invokeResponseMessageParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-    err = invokeResponseMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+    invokeResponseMessageParser.PrettyPrint();
 #endif
 
     //
diff --git a/src/app/tests/TestMessageDef.cpp b/src/app/tests/TestMessageDef.cpp
index fdae70499b5c8d..caecbc360493fc 100644
--- a/src/app/tests/TestMessageDef.cpp
+++ b/src/app/tests/TestMessageDef.cpp
@@ -92,9 +92,8 @@ void ParseStatusIB(nlTestSuite * apSuite, StatusIB::Parser & aStatusIBParser)
     StatusIB::Parser StatusIBParser;
     StatusIB statusIB;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aStatusIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aStatusIBParser.PrettyPrint();
 #endif
     err = aStatusIBParser.DecodeStatusIB(statusIB);
     NL_TEST_ASSERT(apSuite,
@@ -120,9 +119,8 @@ void ParseClusterPathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = clusterPathParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = clusterPathParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    clusterPathParser.PrettyPrint();
 #endif
 
     err = clusterPathParser.GetNode(&node);
@@ -153,9 +151,8 @@ void ParseDataVersionFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aRea
 
     err = dataVersionFilterIBParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = dataVersionFilterIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    dataVersionFilterIBParser.PrettyPrint();
 #endif
 
     err = dataVersionFilterIBParser.GetPath(&clusterPath);
@@ -181,9 +178,8 @@ void ParseDataVersionFilterIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aRe
 
     err = dataVersionFilterIBsParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = dataVersionFilterIBsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    dataVersionFilterIBsParser.PrettyPrint();
 #endif
 }
 
@@ -202,9 +198,8 @@ void ParseEventFilterIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = eventFilterIBParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = eventFilterIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    eventFilterIBParser.PrettyPrint();
 #endif
     err = eventFilterIBParser.GetNode(&node);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
@@ -229,9 +224,8 @@ void ParseEventFilters(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = eventFiltersParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = eventFiltersParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    eventFiltersParser.PrettyPrint();
 #endif
 }
 
@@ -262,9 +256,8 @@ void ParseAttributePathIB(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = attributePathParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = attributePathParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    attributePathParser.PrettyPrint();
 #endif
 
     err = attributePathParser.GetEnableTagCompression(&enableTagCompression);
@@ -305,9 +298,8 @@ void ParseAttributePathList(nlTestSuite * apSuite, chip::TLV::TLVReader & aReade
     err = attributePathListParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = attributePathListParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    attributePathListParser.PrettyPrint();
 #endif
 }
 
@@ -328,9 +320,8 @@ void ParseEventPath(nlTestSuite * apSuite, EventPathIB::Parser & aEventPathParse
     chip::EventId event       = 4;
     bool isUrgent             = false;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aEventPathParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aEventPathParser.PrettyPrint();
 #endif
     err = aEventPathParser.GetNode(&node);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && node == 1);
@@ -365,9 +356,8 @@ void ParseEventPaths(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = eventPathListParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = eventPathListParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    eventPathListParser.PrettyPrint();
 #endif
 }
 
@@ -388,9 +378,8 @@ void ParseCommandPath(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
     err = commandPathParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = commandPathParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    commandPathParser.PrettyPrint();
 #endif
     err = commandPathParser.GetEndpointId(&endpointId);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && endpointId == 1);
@@ -442,9 +431,8 @@ void ParseEventDataIB(nlTestSuite * apSuite, EventDataIB::Parser & aEventDataIBP
     uint64_t deltaUTCTimestamp    = 0;
     uint64_t deltaSystemTimestamp = 0;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aEventDataIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aEventDataIBParser.PrettyPrint();
 #endif
     {
         {
@@ -504,9 +492,8 @@ void ParseEventStatusIB(nlTestSuite * apSuite, EventStatusIB::Parser & aEventSta
     CHIP_ERROR err = CHIP_NO_ERROR;
     EventPathIB::Parser eventPathParser;
     StatusIB::Parser statusParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aEventStatusIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aEventStatusIBParser.PrettyPrint();
 #endif
     err = aEventStatusIBParser.GetPath(&eventPathParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -531,9 +518,8 @@ void ParseEventReportIB(nlTestSuite * apSuite, EventReportIB::Parser & aEventRep
     EventStatusIB::Parser eventStatusParser;
     EventDataIB::Parser eventDataParser;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aEventReportIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aEventReportIBParser.PrettyPrint();
 #endif
 
     err = aEventReportIBParser.GetEventData(&eventDataParser);
@@ -556,9 +542,8 @@ void ParseEventReports(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
 
     err = eventReportsParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = eventReportsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    eventReportsParser.PrettyPrint();
 #endif
 }
 
@@ -582,9 +567,8 @@ void ParseAttributeStatusIB(nlTestSuite * apSuite, AttributeStatusIB::Parser & a
     AttributePathIB::Parser attributePathParser;
     StatusIB::Parser StatusIBParser;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aAttributeStatusIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aAttributeStatusIBParser.PrettyPrint();
 #endif
     err = aAttributeStatusIBParser.GetPath(&attributePathParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -611,9 +595,8 @@ void ParseAttributeStatuses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReade
     err = attributeStatusParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = attributeStatusParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    attributeStatusParser.PrettyPrint();
 #endif
 }
 
@@ -652,9 +635,8 @@ void ParseAttributeDataIB(nlTestSuite * apSuite, AttributeDataIB::Parser & aAttr
     CHIP_ERROR err = CHIP_NO_ERROR;
     AttributePathIB::Parser attributePathParser;
     chip::DataVersion version = 0;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aAttributeDataIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aAttributeDataIBParser.PrettyPrint();
 #endif
     err = aAttributeDataIBParser.GetPath(&attributePathParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -698,9 +680,8 @@ void ParseAttributeDataIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader
 
     err = AttributeDataIBsParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = AttributeDataIBsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    AttributeDataIBsParser.PrettyPrint();
 #endif
 }
 
@@ -720,9 +701,8 @@ void ParseAttributeReportIB(nlTestSuite * apSuite, AttributeReportIB::Parser & a
     AttributeStatusIB::Parser attributeStatusParser;
     AttributeDataIB::Parser attributeDataParser;
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aAttributeReportIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aAttributeReportIBParser.PrettyPrint();
 #endif
     err = aAttributeReportIBParser.GetAttributeData(&attributeDataParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -745,9 +725,8 @@ void ParseAttributeReportIBs(nlTestSuite * apSuite, chip::TLV::TLVReader & aRead
 
     err = attributeReportIBsParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = attributeReportIBsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    attributeReportIBsParser.PrettyPrint();
 #endif
 }
 
@@ -782,9 +761,8 @@ void ParseCommandDataIB(nlTestSuite * apSuite, CommandDataIB::Parser & aCommandD
 {
     CHIP_ERROR err = CHIP_NO_ERROR;
     CommandPathIB::Parser commandPathParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aCommandDataIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aCommandDataIBParser.PrettyPrint();
 #endif
     err = aCommandDataIBParser.GetPath(&commandPathParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -827,9 +805,8 @@ void ParseCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Parser & aComm
     CHIP_ERROR err = CHIP_NO_ERROR;
     CommandPathIB::Parser commandPathParser;
     StatusIB::Parser statusParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aCommandStatusIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aCommandStatusIBParser.PrettyPrint();
 #endif
     err = aCommandStatusIBParser.GetPath(&commandPathParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -840,13 +817,7 @@ void ParseCommandStatusIB(nlTestSuite * apSuite, CommandStatusIB::Parser & aComm
 
 void BuildWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Builder & aInvokeResponseIBBuilder)
 {
-    CommandDataIB::Builder & commandDataBuilder = aInvokeResponseIBBuilder.CreateCommand();
-    NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
-    BuildCommandDataIB(apSuite, commandDataBuilder);
-    CommandStatusIB::Builder & commandStatusBuilder = aInvokeResponseIBBuilder.CreateStatus();
-    NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
-    BuildCommandStatusIB(apSuite, commandStatusBuilder);
-    aInvokeResponseIBBuilder.EndOfInvokeResponseIB();
+    aInvokeResponseIBBuilder.CreateCommand();
     NL_TEST_ASSERT(apSuite, aInvokeResponseIBBuilder.GetError() == CHIP_NO_ERROR);
 }
 
@@ -873,9 +844,8 @@ void ParseInvokeResponseIBWithCommandDataIB(nlTestSuite * apSuite, InvokeRespons
     CHIP_ERROR err = CHIP_NO_ERROR;
     CommandDataIB::Parser commandDataParser;
     CommandStatusIB::Parser statusIBParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aInvokeResponseIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aInvokeResponseIBParser.PrettyPrint();
 #endif
     err = aInvokeResponseIBParser.GetCommand(&commandDataParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -886,24 +856,13 @@ void ParseInvokeResponseIBWithCommandStatusIB(nlTestSuite * apSuite, InvokeRespo
     CHIP_ERROR err = CHIP_NO_ERROR;
     CommandDataIB::Parser commandDataParser;
     CommandStatusIB::Parser statusIBParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = aInvokeResponseIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    aInvokeResponseIBParser.PrettyPrint();
 #endif
     err = aInvokeResponseIBParser.GetStatus(&statusIBParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 }
 
-void ParseWrongInvokeResponseIB(nlTestSuite * apSuite, InvokeResponseIB::Parser & aInvokeResponseIBParser)
-{
-    CommandDataIB::Parser commandDataParser;
-    CommandStatusIB::Parser statusIBParser;
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    CHIP_ERROR err = aInvokeResponseIBParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err != CHIP_NO_ERROR);
-#endif
-}
-
 void BuildInvokeRequests(nlTestSuite * apSuite, InvokeRequests::Builder & aInvokeRequestsBuilder)
 {
     CommandDataIB::Builder & aCommandDataIBBuilder = aInvokeRequestsBuilder.CreateCommandData();
@@ -921,9 +880,8 @@ void ParseInvokeRequests(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
     err = invokeRequestsParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = invokeRequestsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeRequestsParser.PrettyPrint();
 #endif
 }
 
@@ -944,9 +902,8 @@ void ParseInvokeResponses(nlTestSuite * apSuite, chip::TLV::TLVReader & aReader)
     err = invokeResponsesParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = invokeResponsesParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeResponsesParser.PrettyPrint();
 #endif
 }
 
@@ -980,9 +937,8 @@ void ParseInvokeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aRe
     invokeRequestMessageParser.GetTimedRequest(&timedRequest);
     NL_TEST_ASSERT(apSuite, suppressResponse == true);
     NL_TEST_ASSERT(apSuite, timedRequest == true);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = invokeRequestMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeRequestMessageParser.PrettyPrint();
 #endif
     NL_TEST_ASSERT(apSuite, invokeRequestMessageParser.ExitContainer() == CHIP_NO_ERROR);
 }
@@ -1013,9 +969,8 @@ void ParseInvokeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aR
     bool suppressResponse = false;
     invokeResponseMessageParser.GetSuppressResponse(&suppressResponse);
     NL_TEST_ASSERT(apSuite, suppressResponse == true);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = invokeResponseMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    invokeResponseMessageParser.PrettyPrint();
 #endif
     NL_TEST_ASSERT(apSuite, invokeResponseMessageParser.ExitContainer() == CHIP_NO_ERROR);
 }
@@ -1058,9 +1013,8 @@ void ParseReportDataMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aReade
     bool moreChunkedMessages = false;
     reportDataParser.Init(aReader);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = reportDataParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    reportDataParser.PrettyPrint();
 #endif
     err = reportDataParser.GetSuppressResponse(&suppressResponse);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
@@ -1124,9 +1078,8 @@ void ParseReadRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aRead
 
     err = readRequestParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = readRequestParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    readRequestParser.PrettyPrint();
 #endif
     err = readRequestParser.GetAttributeRequests(&attributePathListParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -1182,9 +1135,8 @@ void ParseWriteRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aRea
 
     err = writeRequestParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = writeRequestParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    writeRequestParser.PrettyPrint();
 #endif
     err = writeRequestParser.GetSuppressResponse(&suppressResponse);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR && suppressResponse);
@@ -1223,9 +1175,8 @@ void ParseWriteResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aRe
     AttributeStatusIBs::Parser attributeStatusesParser;
     err = writeResponseParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = writeResponseParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    writeResponseParser.PrettyPrint();
 #endif
     err = writeResponseParser.GetWriteResponses(&attributeStatusesParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -1289,9 +1240,8 @@ void ParseSubscribeRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader &
 
     err = subscribeRequestParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = subscribeRequestParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    subscribeRequestParser.PrettyPrint();
 #endif
     err = subscribeRequestParser.GetAttributeRequests(&attributePathListParser);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
@@ -1346,9 +1296,8 @@ void ParseSubscribeResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader &
     uint16_t maxInterval                = 0;
     err                                 = subscribeResponseParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = subscribeResponseParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    subscribeResponseParser.PrettyPrint();
 #endif
     err = subscribeResponseParser.GetSubscriptionId(&subscriptionId);
     NL_TEST_ASSERT(apSuite, subscriptionId == 1 && err == CHIP_NO_ERROR);
@@ -1380,9 +1329,8 @@ void ParseTimedRequestMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aRea
 
     err = timedRequestMessageParser.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = timedRequestMessageParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    timedRequestMessageParser.PrettyPrint();
 #endif
     err = timedRequestMessageParser.GetTimeoutMs(&timeout);
     NL_TEST_ASSERT(apSuite, timeout == 1 && err == CHIP_NO_ERROR);
@@ -2037,8 +1985,8 @@ void InvokeResponseIBWithMalformDataTest(nlTestSuite * apSuite, void * apContext
     err = reader.Next();
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-    invokeResponseIBParser.Init(reader);
-    ParseWrongInvokeResponseIB(apSuite, invokeResponseIBParser);
+    err = invokeResponseIBParser.Init(reader);
+    NL_TEST_ASSERT(apSuite, err != CHIP_NO_ERROR);
 }
 
 void InvokeRequestsTest(nlTestSuite * apSuite, void * apContext)
@@ -2277,9 +2225,8 @@ void CheckPointRollbackTest(nlTestSuite * apSuite, void * apContext)
     err = AttributeDataIBsParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = AttributeDataIBsParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    AttributeDataIBsParser.PrettyPrint();
 #endif
     while (CHIP_NO_ERROR == (err = AttributeDataIBsParser.Next()))
     {
diff --git a/src/app/tests/TestReadInteraction.cpp b/src/app/tests/TestReadInteraction.cpp
index b52d0ffec702cc..d9e42b9b72228b 100644
--- a/src/app/tests/TestReadInteraction.cpp
+++ b/src/app/tests/TestReadInteraction.cpp
@@ -667,11 +667,7 @@ void TestReadInteraction::TestReadHandlerInvalidAttributePath(nlTestSuite * apSu
 
         err = readHandler.ProcessReadRequest(std::move(readRequestbuf));
         ChipLogError(DataManagement, "The error is %s", ErrorStr(err));
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-        NL_TEST_ASSERT(apSuite, err == CHIP_ERROR_IM_MALFORMED_READ_REQUEST_MESSAGE);
-#else
         NL_TEST_ASSERT(apSuite, err == CHIP_ERROR_END_OF_TLV);
-#endif // CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
 
         //
         // In the call above to ProcessReadRequest, the handler will not actually close out the EC since
@@ -728,9 +724,8 @@ void TestReadInteraction::TestReadClientGenerateOneEventPaths(nlTestSuite * apSu
     err = readRequestParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = readRequestParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    readRequestParser.PrettyPrint();
 #endif
 
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
@@ -780,9 +775,8 @@ void TestReadInteraction::TestReadClientGenerateTwoEventPaths(nlTestSuite * apSu
     err = readRequestParser.Init(reader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
 
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = readRequestParser.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    readRequestParser.PrettyPrint();
 #endif
 
     NL_TEST_ASSERT(apSuite, ctx.GetExchangeManager().GetNumActiveExchanges() == 0);
diff --git a/src/app/tests/TestStatusResponseMessage.cpp b/src/app/tests/TestStatusResponseMessage.cpp
index ac48f3732b7dac..565ed85dfe8af0 100644
--- a/src/app/tests/TestStatusResponseMessage.cpp
+++ b/src/app/tests/TestStatusResponseMessage.cpp
@@ -58,9 +58,8 @@ void ParseStatusResponseMessage(nlTestSuite * apSuite, chip::TLV::TLVReader & aR
 
     err = statusResponse.Init(aReader);
     NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
-#if CHIP_CONFIG_IM_ENABLE_SCHEMA_CHECK
-    err = statusResponse.CheckSchemaValidity();
-    NL_TEST_ASSERT(apSuite, err == CHIP_NO_ERROR);
+#if CHIP_CONFIG_IM_PRETTY_PRINT
+    statusResponse.PrettyPrint();
 #endif
 
     err = statusResponse.GetStatus(status);
diff --git a/src/platform/nxp/mw320/args.gni b/src/platform/nxp/mw320/args.gni
index d03c467fe482b3..d13db9cc73b095 100644
--- a/src/platform/nxp/mw320/args.gni
+++ b/src/platform/nxp/mw320/args.gni
@@ -34,7 +34,7 @@ chip_detail_logging = false
 chip_build_tests = false
 chip_progress_logging = true
 chip_access_control_policy_logging_verbosity = 2
-chip_enable_schema_check = true
+enable_im_pretty_print = true
 
 chip_mdns = "minimal"
 mbedtls_target = "${chip_root}/third_party/nxp/mw320_sdk:mbedtls"

From cf45410520c64f8a2acdf177bc9c4bf6e352638b Mon Sep 17 00:00:00 2001
From: lpbeliveau-silabs <112982107+lpbeliveau-silabs@users.noreply.github.com>
Date: Wed, 16 Nov 2022 23:43:29 -0500
Subject: [PATCH 16/36] Added a missing include for mdetlds/error.h when
 MBEDTLS_ERROR_C is defined (#23645)

---
 src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp
index 2439236bd48f1f..13af1ae5a557b6 100644
--- a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp
+++ b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp
@@ -56,6 +56,10 @@ extern "C" {
 #include 
 #include 
 
+#if defined(MBEDTLS_ERROR_C)
+#include 
+#endif // defined(MBEDTLS_ERROR_C)
+
 #include 
 #include 
 #include 

From 8c09eaec8f03d257255929387acc81069d4550cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Damian=20Michalak-Szmaci=C5=84ski?= 
Date: Thu, 17 Nov 2022 10:49:40 +0100
Subject: [PATCH 17/36] Remove using-directives namespaces in Tizen platform
 (#23637)

---
 src/platform/Tizen/BLEManagerImpl.cpp         | 69 +++++++++----------
 src/platform/Tizen/BLEManagerImpl.h           |  6 +-
 .../Tizen/ConfigurationManagerImpl.cpp        | 46 ++++++-------
 src/platform/Tizen/ConfigurationManagerImpl.h |  4 +-
 .../Tizen/ConnectivityManagerImpl.cpp         | 26 +++----
 src/platform/Tizen/ConnectivityManagerImpl.h  |  4 +-
 src/platform/Tizen/ConnectivityUtils.cpp      | 13 ++--
 src/platform/Tizen/DnssdImpl.cpp              | 59 ++++++++--------
 src/platform/Tizen/DnssdImpl.h                |  8 +--
 .../NetworkCommissioningEthernetDriver.cpp    |  6 +-
 .../NetworkCommissioningThreadDriver.cpp      | 26 +++----
 .../Tizen/NetworkCommissioningWiFiDriver.cpp  |  8 +--
 src/platform/Tizen/ThreadStackManagerImpl.cpp |  9 +--
 src/platform/Tizen/WiFiManager.h              |  7 +-
 14 files changed, 135 insertions(+), 156 deletions(-)
 mode change 100755 => 100644 src/platform/Tizen/DnssdImpl.h

diff --git a/src/platform/Tizen/BLEManagerImpl.cpp b/src/platform/Tizen/BLEManagerImpl.cpp
index 7bb738fe40ea34..c60fb56f70417d 100644
--- a/src/platform/Tizen/BLEManagerImpl.cpp
+++ b/src/platform/Tizen/BLEManagerImpl.cpp
@@ -31,9 +31,6 @@
 #include "MainLoop.h"
 #include 
 
-using namespace ::chip;
-using namespace ::chip::Ble;
-
 namespace chip {
 namespace DeviceLayer {
 namespace Internal {
@@ -410,7 +407,7 @@ void BLEManagerImpl::NotifySubscribeOpComplete(BLE_CONNECTION_OBJECT conId, bool
     PlatformMgr().PostEventOrDie(&event);
 }
 
-void BLEManagerImpl::HandleConnectionTimeout(chip::System::Layer * layer, void * data)
+void BLEManagerImpl::HandleConnectionTimeout(System::Layer * layer, void * data)
 {
     sInstance.NotifyHandleConnectFailed(CHIP_ERROR_TIMEOUT);
 }
@@ -448,7 +445,7 @@ void BLEManagerImpl::ConnectHandler(const char * address)
     g_source_unref(idleSource);
 }
 
-void BLEManagerImpl::OnChipDeviceScanned(void * device, const chip::Ble::ChipBLEDeviceIdentificationInfo & info)
+void BLEManagerImpl::OnChipDeviceScanned(void * device, const Ble::ChipBLEDeviceIdentificationInfo & info)
 {
     auto deviceInfo = reinterpret_cast(device);
     VerifyOrReturn(deviceInfo != nullptr, ChipLogError(DeviceLayer, "Invalid Device Info"));
@@ -479,7 +476,7 @@ void BLEManagerImpl::OnChipDeviceScanned(void * device, const chip::Ble::ChipBLE
 
     /* Set CHIP Connecting state */
     mBLEScanConfig.mBleScanState = BleScanState::kConnecting;
-    chip::DeviceLayer::SystemLayer().StartTimer(kConnectTimeoutMs, HandleConnectionTimeout, nullptr);
+    DeviceLayer::SystemLayer().StartTimer(kConnectTimeoutMs, HandleConnectionTimeout, nullptr);
     mDeviceScanner->StopChipScan();
 
     /* Initiate Connect */
@@ -583,12 +580,12 @@ int BLEManagerImpl::RegisterGATTServer()
 
 int BLEManagerImpl::StartBLEAdvertising()
 {
-    int ret                                                    = BT_ERROR_NONE;
-    CHIP_ERROR err                                             = CHIP_NO_ERROR;
-    char service_data[sizeof(ChipBLEDeviceIdentificationInfo)] = {
+    int ret                                                         = BT_ERROR_NONE;
+    CHIP_ERROR err                                                  = CHIP_NO_ERROR;
+    char service_data[sizeof(Ble::ChipBLEDeviceIdentificationInfo)] = {
         0x0,
     }; // need to fill advertising data. 5.2.3.8.6. Advertising Data, CHIP Specification
-    ChipBLEDeviceIdentificationInfo deviceIdInfo = {
+    Ble::ChipBLEDeviceIdentificationInfo deviceIdInfo = {
         0x0,
     };
 
@@ -1018,7 +1015,7 @@ CHIP_ERROR BLEManagerImpl::ConfigureBle(uint32_t aAdapterId, bool aIsCentral)
 void BLEManagerImpl::CleanScanConfig()
 {
     if (mBLEScanConfig.mBleScanState == BleScanState::kConnecting)
-        chip::DeviceLayer::SystemLayer().CancelTimer(HandleConnectionTimeout, nullptr);
+        DeviceLayer::SystemLayer().CancelTimer(HandleConnectionTimeout, nullptr);
 
     mBLEScanConfig.mBleScanState = BleScanState::kNotScanning;
 }
@@ -1045,8 +1042,8 @@ void BLEManagerImpl::HandlePlatformSpecificBLEEvent(const ChipDeviceEvent * apEv
         }
         break;
     case DeviceEventType::kPlatformTizenBLEWriteComplete: {
-        ChipBleUUID service_uuid;
-        ChipBleUUID char_write_uuid;
+        Ble::ChipBleUUID service_uuid;
+        Ble::ChipBleUUID char_write_uuid;
 
         StringToUUID(chip_ble_service_uuid, service_uuid);
         StringToUUID(chip_ble_char_c1_tx_uuid, char_write_uuid);
@@ -1055,8 +1052,8 @@ void BLEManagerImpl::HandlePlatformSpecificBLEEvent(const ChipDeviceEvent * apEv
         break;
     }
     case DeviceEventType::kPlatformTizenBLESubscribeOpComplete: {
-        ChipBleUUID service_uuid;
-        ChipBleUUID char_notif_uuid;
+        Ble::ChipBleUUID service_uuid;
+        Ble::ChipBleUUID char_notif_uuid;
 
         StringToUUID(chip_ble_service_uuid, service_uuid);
         StringToUUID(chip_ble_char_c2_rx_uuid, char_notif_uuid);
@@ -1068,14 +1065,14 @@ void BLEManagerImpl::HandlePlatformSpecificBLEEvent(const ChipDeviceEvent * apEv
         break;
     }
     case DeviceEventType::kPlatformTizenBLEIndicationReceived: {
-        ChipBleUUID service_uuid;
-        ChipBleUUID char_notif_uuid;
+        Ble::ChipBleUUID service_uuid;
+        Ble::ChipBleUUID char_notif_uuid;
 
         StringToUUID(chip_ble_service_uuid, service_uuid);
         StringToUUID(chip_ble_char_c2_rx_uuid, char_notif_uuid);
 
         HandleIndicationReceived(apEvent->Platform.BLEIndicationReceived.mConnection, &service_uuid, &char_notif_uuid,
-                                 PacketBufferHandle::Adopt(apEvent->Platform.BLEIndicationReceived.mData));
+                                 System::PacketBufferHandle::Adopt(apEvent->Platform.BLEIndicationReceived.mData));
         break;
     }
     default:
@@ -1085,9 +1082,9 @@ void BLEManagerImpl::HandlePlatformSpecificBLEEvent(const ChipDeviceEvent * apEv
 
 void BLEManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
 {
-    ChipBleUUID service_uuid;
-    ChipBleUUID char_notification_uuid;
-    ChipBleUUID char_write_uuid;
+    Ble::ChipBleUUID service_uuid;
+    Ble::ChipBleUUID char_notification_uuid;
+    Ble::ChipBleUUID char_write_uuid;
 
     switch (event->Type)
     {
@@ -1114,7 +1111,7 @@ void BLEManagerImpl::_OnPlatformEvent(const ChipDeviceEvent * event)
         StringToUUID(chip_ble_service_uuid, service_uuid);
         StringToUUID(chip_ble_char_c1_tx_uuid, char_write_uuid);
         HandleWriteReceived(event->CHIPoBLEWriteReceived.ConId, &service_uuid, &char_write_uuid,
-                            PacketBufferHandle::Adopt(event->CHIPoBLEWriteReceived.Data));
+                            System::PacketBufferHandle::Adopt(event->CHIPoBLEWriteReceived.Data));
         break;
     case DeviceEventType::kCHIPoBLEIndicateConfirm:
         ChipLogProgress(DeviceLayer, "CHIPoBLEIndicateConfirm");
@@ -1142,10 +1139,11 @@ uint16_t BLEManagerImpl::GetMTU(BLE_CONNECTION_OBJECT conId) const
     return (conn != nullptr) ? conn->mtu : 0;
 }
 
-bool BLEManagerImpl::SubscribeCharacteristic(BLE_CONNECTION_OBJECT conId, const ChipBleUUID * svcId, const ChipBleUUID * charId)
+bool BLEManagerImpl::SubscribeCharacteristic(BLE_CONNECTION_OBJECT conId, const Ble::ChipBleUUID * svcId,
+                                             const Ble::ChipBleUUID * charId)
 {
-    ChipBleUUID service_uuid;
-    ChipBleUUID char_notif_uuid;
+    Ble::ChipBleUUID service_uuid;
+    Ble::ChipBleUUID char_notif_uuid;
     auto conn = static_cast(conId);
     int ret   = BT_ERROR_NONE;
 
@@ -1172,10 +1170,11 @@ bool BLEManagerImpl::SubscribeCharacteristic(BLE_CONNECTION_OBJECT conId, const
     return false;
 }
 
-bool BLEManagerImpl::UnsubscribeCharacteristic(BLE_CONNECTION_OBJECT conId, const ChipBleUUID * svcId, const ChipBleUUID * charId)
+bool BLEManagerImpl::UnsubscribeCharacteristic(BLE_CONNECTION_OBJECT conId, const Ble::ChipBleUUID * svcId,
+                                               const Ble::ChipBleUUID * charId)
 {
-    ChipBleUUID service_uuid;
-    ChipBleUUID char_notif_uuid;
+    Ble::ChipBleUUID service_uuid;
+    Ble::ChipBleUUID char_notif_uuid;
     auto conn = static_cast(conId);
     int ret   = BT_ERROR_NONE;
 
@@ -1223,8 +1222,8 @@ bool BLEManagerImpl::CloseConnection(BLE_CONNECTION_OBJECT conId)
     return false;
 }
 
-bool BLEManagerImpl::SendIndication(BLE_CONNECTION_OBJECT conId, const ChipBleUUID * svcId, const Ble::ChipBleUUID * charId,
-                                    chip::System::PacketBufferHandle pBuf)
+bool BLEManagerImpl::SendIndication(BLE_CONNECTION_OBJECT conId, const Ble::ChipBleUUID * svcId, const Ble::ChipBleUUID * charId,
+                                    System::PacketBufferHandle pBuf)
 {
     auto conn = static_cast(conId);
     int ret   = BT_ERROR_NONE;
@@ -1250,10 +1249,10 @@ bool BLEManagerImpl::SendIndication(BLE_CONNECTION_OBJECT conId, const ChipBleUU
 }
 
 bool BLEManagerImpl::SendWriteRequest(BLE_CONNECTION_OBJECT conId, const Ble::ChipBleUUID * svcId, const Ble::ChipBleUUID * charId,
-                                      chip::System::PacketBufferHandle pBuf)
+                                      System::PacketBufferHandle pBuf)
 {
-    ChipBleUUID service_uuid;
-    ChipBleUUID char_write_uuid;
+    Ble::ChipBleUUID service_uuid;
+    Ble::ChipBleUUID char_write_uuid;
     auto conn = static_cast(conId);
     int ret   = BT_ERROR_NONE;
 
@@ -1283,7 +1282,7 @@ bool BLEManagerImpl::SendWriteRequest(BLE_CONNECTION_OBJECT conId, const Ble::Ch
 }
 
 bool BLEManagerImpl::SendReadRequest(BLE_CONNECTION_OBJECT conId, const Ble::ChipBleUUID * svcId, const Ble::ChipBleUUID * charId,
-                                     chip::System::PacketBufferHandle pBuf)
+                                     System::PacketBufferHandle pBuf)
 {
     return false;
 }
@@ -1357,7 +1356,7 @@ void BLEManagerImpl::InitiateScan(BleScanState scanType)
 
     if (err != CHIP_NO_ERROR)
     {
-        ChipLogError(DeviceLayer, "Failed to start a BLE Scan: %s", chip::ErrorStr(err));
+        ChipLogError(DeviceLayer, "Failed to start a BLE Scan: %s", ErrorStr(err));
         goto exit;
     }
 
diff --git a/src/platform/Tizen/BLEManagerImpl.h b/src/platform/Tizen/BLEManagerImpl.h
index 30bff7b9102934..f4c8e903b4e2d7 100644
--- a/src/platform/Tizen/BLEManagerImpl.h
+++ b/src/platform/Tizen/BLEManagerImpl.h
@@ -35,8 +35,6 @@ namespace chip {
 namespace DeviceLayer {
 namespace Internal {
 
-using namespace chip::Ble;
-
 /**
  * enum Class for BLE Scanning state. CHIP supports Scanning by Discriminator or Address
  */
@@ -127,7 +125,7 @@ class BLEManagerImpl final : public BLEManager,
     CHIP_ERROR CancelConnection() override;
 
     //  ===== Members that implement virtual methods on ChipDeviceScannerDelegate
-    void OnChipDeviceScanned(void * device, const chip::Ble::ChipBLEDeviceIdentificationInfo & info) override;
+    void OnChipDeviceScanned(void * device, const Ble::ChipBLEDeviceIdentificationInfo & info) override;
     void OnChipScanComplete() override;
 
     // ===== Members for internal use by the following friends.
@@ -180,7 +178,7 @@ class BLEManagerImpl final : public BLEManager,
     void HandleC1CharWriteEvent(BLE_CONNECTION_OBJECT conId, const uint8_t * value, size_t len);
     void HandleRXCharChanged(BLE_CONNECTION_OBJECT conId, const uint8_t * value, size_t len);
     void HandleConnectionEvent(bool connected, const char * remoteAddress);
-    static void HandleConnectionTimeout(chip::System::Layer * layer, void * data);
+    static void HandleConnectionTimeout(System::Layer * layer, void * data);
     static bool IsDeviceChipPeripheral(BLE_CONNECTION_OBJECT conId);
 
     // ==== BLE Adv & GATT Server.
diff --git a/src/platform/Tizen/ConfigurationManagerImpl.cpp b/src/platform/Tizen/ConfigurationManagerImpl.cpp
index d57bd6a7454d69..c7255e8c21f47f 100644
--- a/src/platform/Tizen/ConfigurationManagerImpl.cpp
+++ b/src/platform/Tizen/ConfigurationManagerImpl.cpp
@@ -37,8 +37,6 @@
 namespace chip {
 namespace DeviceLayer {
 
-using namespace ::chip::DeviceLayer::Internal;
-
 ConfigurationManagerImpl & ConfigurationManagerImpl::GetDefaultInstance()
 {
     static ConfigurationManagerImpl sInstance;
@@ -49,16 +47,16 @@ CHIP_ERROR ConfigurationManagerImpl::Init(void)
 {
     CHIP_ERROR error;
 
-    error = Internal::GenericConfigurationManagerImpl::Init();
+    error = Internal::GenericConfigurationManagerImpl::Init();
     SuccessOrExit(error);
 
-    if (!PosixConfig::ConfigValueExists(PosixConfig::kConfigKey_VendorId))
+    if (!Internal::PosixConfig::ConfigValueExists(Internal::PosixConfig::kConfigKey_VendorId))
     {
         error = StoreVendorId(CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID);
         SuccessOrExit(error);
     }
 
-    if (!PosixConfig::ConfigValueExists(PosixConfig::kConfigKey_ProductId))
+    if (!Internal::PosixConfig::ConfigValueExists(Internal::PosixConfig::kConfigKey_ProductId))
     {
         error = StoreProductId(CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID);
         SuccessOrExit(error);
@@ -72,19 +70,19 @@ CHIP_ERROR ConfigurationManagerImpl::Init(void)
 
 CHIP_ERROR ConfigurationManagerImpl::StoreVendorId(uint16_t vendorId)
 {
-    return WriteConfigValue(PosixConfig::kConfigKey_VendorId, vendorId);
+    return WriteConfigValue(Internal::PosixConfig::kConfigKey_VendorId, vendorId);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::StoreProductId(uint16_t productId)
 {
-    return WriteConfigValue(PosixConfig::kConfigKey_ProductId, productId);
+    return WriteConfigValue(Internal::PosixConfig::kConfigKey_ProductId, productId);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::GetPrimaryWiFiMACAddress(uint8_t * buf)
 {
 #if CHIP_DEVICE_CONFIG_ENABLE_WIFI
     constexpr size_t kExpectedBufSize = ConfigurationManager::kPrimaryMACAddressLength;
-    return WiFiMgr().GetDeviceMACAddress(buf, kExpectedBufSize);
+    return Internal::WiFiMgr().GetDeviceMACAddress(buf, kExpectedBufSize);
 #else
     return CHIP_ERROR_NOT_IMPLEMENTED;
 #endif
@@ -97,84 +95,84 @@ bool ConfigurationManagerImpl::CanFactoryReset(void)
 
 void ConfigurationManagerImpl::InitiateFactoryReset(void) {}
 
-CHIP_ERROR ConfigurationManagerImpl::ReadPersistedStorageValue(::chip::Platform::PersistedStorage::Key key, uint32_t & value)
+CHIP_ERROR ConfigurationManagerImpl::ReadPersistedStorageValue(Platform::PersistedStorage::Key key, uint32_t & value)
 {
     return CHIP_ERROR_NOT_IMPLEMENTED;
 }
 
-CHIP_ERROR ConfigurationManagerImpl::WritePersistedStorageValue(::chip::Platform::PersistedStorage::Key key, uint32_t value)
+CHIP_ERROR ConfigurationManagerImpl::WritePersistedStorageValue(Platform::PersistedStorage::Key key, uint32_t value)
 {
     return CHIP_ERROR_NOT_IMPLEMENTED;
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, bool & val)
 {
-    return PosixConfig::ReadConfigValue(key, val);
+    return Internal::PosixConfig::ReadConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, uint16_t & val)
 {
-    return PosixConfig::ReadConfigValue(key, val);
+    return Internal::PosixConfig::ReadConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, uint32_t & val)
 {
-    return PosixConfig::ReadConfigValue(key, val);
+    return Internal::PosixConfig::ReadConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValue(Key key, uint64_t & val)
 {
-    return PosixConfig::ReadConfigValue(key, val);
+    return Internal::PosixConfig::ReadConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValueStr(Key key, char * buf, size_t bufSize, size_t & outLen)
 {
-    return PosixConfig::ReadConfigValueStr(key, buf, bufSize, outLen);
+    return Internal::PosixConfig::ReadConfigValueStr(key, buf, bufSize, outLen);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSize, size_t & outLen)
 {
-    return PosixConfig::ReadConfigValueBin(key, buf, bufSize, outLen);
+    return Internal::PosixConfig::ReadConfigValueBin(key, buf, bufSize, outLen);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, bool val)
 {
-    return PosixConfig::WriteConfigValue(key, val);
+    return Internal::PosixConfig::WriteConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, uint16_t val)
 {
-    return PosixConfig::WriteConfigValue(key, val);
+    return Internal::PosixConfig::WriteConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, uint32_t val)
 {
-    return PosixConfig::WriteConfigValue(key, val);
+    return Internal::PosixConfig::WriteConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValue(Key key, uint64_t val)
 {
-    return PosixConfig::WriteConfigValue(key, val);
+    return Internal::PosixConfig::WriteConfigValue(key, val);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueStr(Key key, const char * str)
 {
-    return PosixConfig::WriteConfigValueStr(key, str);
+    return Internal::PosixConfig::WriteConfigValueStr(key, str);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueStr(Key key, const char * str, size_t strLen)
 {
-    return PosixConfig::WriteConfigValueStr(key, str, strLen);
+    return Internal::PosixConfig::WriteConfigValueStr(key, str, strLen);
 }
 
 CHIP_ERROR ConfigurationManagerImpl::WriteConfigValueBin(Key key, const uint8_t * data, size_t dataLen)
 {
-    return PosixConfig::WriteConfigValueBin(key, data, dataLen);
+    return Internal::PosixConfig::WriteConfigValueBin(key, data, dataLen);
 }
 
 void ConfigurationManagerImpl::RunConfigUnitTest(void)
 {
-    PosixConfig::RunConfigUnitTest();
+    Internal::PosixConfig::RunConfigUnitTest();
 }
 
 ConfigurationManager & ConfigurationMgrImpl()
diff --git a/src/platform/Tizen/ConfigurationManagerImpl.h b/src/platform/Tizen/ConfigurationManagerImpl.h
index 2180eec73da4a2..2dd07d77879c31 100644
--- a/src/platform/Tizen/ConfigurationManagerImpl.h
+++ b/src/platform/Tizen/ConfigurationManagerImpl.h
@@ -50,8 +50,8 @@ class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImp
     CHIP_ERROR GetPrimaryWiFiMACAddress(uint8_t * buf) override;
     bool CanFactoryReset(void) override;
     void InitiateFactoryReset(void) override;
-    CHIP_ERROR ReadPersistedStorageValue(::chip::Platform::PersistedStorage::Key key, uint32_t & value) override;
-    CHIP_ERROR WritePersistedStorageValue(::chip::Platform::PersistedStorage::Key key, uint32_t value) override;
+    CHIP_ERROR ReadPersistedStorageValue(Platform::PersistedStorage::Key key, uint32_t & value) override;
+    CHIP_ERROR WritePersistedStorageValue(Platform::PersistedStorage::Key key, uint32_t value) override;
 
     // NOTE: Other public interface methods are implemented by GenericConfigurationManagerImpl<>.
     CHIP_ERROR WriteConfigValue(Key key, uint16_t val);
diff --git a/src/platform/Tizen/ConnectivityManagerImpl.cpp b/src/platform/Tizen/ConnectivityManagerImpl.cpp
index 66ba3b9098f01a..7c7e2eab0ad9be 100644
--- a/src/platform/Tizen/ConnectivityManagerImpl.cpp
+++ b/src/platform/Tizen/ConnectivityManagerImpl.cpp
@@ -45,10 +45,6 @@
 #include 
 #endif
 
-using namespace ::chip;
-using namespace ::chip::TLV;
-using namespace ::chip::DeviceLayer::Internal;
-
 namespace chip {
 namespace DeviceLayer {
 
@@ -66,7 +62,7 @@ CHIP_ERROR ConnectivityManagerImpl::_Init(void)
     mWiFiStationReconnectInterval = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL);
     mWiFiAPIdleTimeout            = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_AP_IDLE_TIMEOUT);
 
-    WiFiMgr().Init();
+    Internal::WiFiMgr().Init();
 #endif
 
     return err;
@@ -83,7 +79,7 @@ ConnectivityManager::WiFiStationMode ConnectivityManagerImpl::_GetWiFiStationMod
 
     ReturnErrorCodeIf(mWiFiStationMode == kWiFiStationMode_ApplicationControlled, mWiFiStationMode);
 
-    err = WiFiMgr().GetDeviceState(&deviceState);
+    err = Internal::WiFiMgr().GetDeviceState(&deviceState);
     VerifyOrReturnError(err == CHIP_NO_ERROR, mWiFiStationMode);
 
     mWiFiStationMode = (deviceState == WIFI_MANAGER_DEVICE_STATE_ACTIVATED) ? kWiFiStationMode_Enabled : kWiFiStationMode_Disabled;
@@ -102,7 +98,7 @@ CHIP_ERROR ConnectivityManagerImpl::_SetWiFiStationMode(ConnectivityManager::WiF
     {
         deviceState =
             (val == kWiFiStationMode_Disabled) ? WIFI_MANAGER_DEVICE_STATE_DEACTIVATED : WIFI_MANAGER_DEVICE_STATE_ACTIVATED;
-        err = WiFiMgr().SetDeviceState(deviceState);
+        err = Internal::WiFiMgr().SetDeviceState(deviceState);
         VerifyOrReturnError(err == CHIP_NO_ERROR, err);
     }
 
@@ -133,7 +129,7 @@ bool ConnectivityManagerImpl::_IsWiFiStationEnabled(void)
 {
     bool isWiFiStationEnabled = false;
 
-    WiFiMgr().IsActivated(&isWiFiStationEnabled);
+    Internal::WiFiMgr().IsActivated(&isWiFiStationEnabled);
 
     return isWiFiStationEnabled;
 }
@@ -144,7 +140,7 @@ bool ConnectivityManagerImpl::_IsWiFiStationConnected(void)
     wifi_manager_connection_state_e connectionState = WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED;
     bool isWiFiStationConnected                     = false;
 
-    err = WiFiMgr().GetConnectionState(&connectionState);
+    err = Internal::WiFiMgr().GetConnectionState(&connectionState);
     VerifyOrReturnError(err == CHIP_NO_ERROR, isWiFiStationConnected);
 
     if (connectionState == WIFI_MANAGER_CONNECTION_STATE_CONNECTED)
@@ -159,7 +155,7 @@ bool ConnectivityManagerImpl::_IsWiFiStationProvisioned(void)
     wifi_manager_connection_state_e connectionState = WIFI_MANAGER_CONNECTION_STATE_DISCONNECTED;
     bool isWiFiStationProvisioned                   = false;
 
-    err = WiFiMgr().GetConnectionState(&connectionState);
+    err = Internal::WiFiMgr().GetConnectionState(&connectionState);
     VerifyOrReturnError(err == CHIP_NO_ERROR, isWiFiStationProvisioned);
 
     if (connectionState >= WIFI_MANAGER_CONNECTION_STATE_ASSOCIATION)
@@ -170,7 +166,7 @@ bool ConnectivityManagerImpl::_IsWiFiStationProvisioned(void)
 
 void ConnectivityManagerImpl::_ClearWiFiStationProvision(void)
 {
-    WiFiMgr().RemoveAllConfigs();
+    Internal::WiFiMgr().RemoveAllConfigs();
 }
 
 bool ConnectivityManagerImpl::_CanStartWiFiScan(void)
@@ -211,14 +207,14 @@ void ConnectivityManagerImpl::StopWiFiManagement(void)
     SystemLayer().ScheduleWork(DeactivateWiFiManager, nullptr);
 }
 
-void ConnectivityManagerImpl::ActivateWiFiManager(::chip::System::Layer * aLayer, void * aAppState)
+void ConnectivityManagerImpl::ActivateWiFiManager(System::Layer * aLayer, void * aAppState)
 {
-    WiFiMgr().Activate();
+    Internal::WiFiMgr().Activate();
 }
 
-void ConnectivityManagerImpl::DeactivateWiFiManager(::chip::System::Layer * aLayer, void * aAppState)
+void ConnectivityManagerImpl::DeactivateWiFiManager(System::Layer * aLayer, void * aAppState)
 {
-    WiFiMgr().Deactivate();
+    Internal::WiFiMgr().Deactivate();
 }
 #endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI
 
diff --git a/src/platform/Tizen/ConnectivityManagerImpl.h b/src/platform/Tizen/ConnectivityManagerImpl.h
index 4988d5c5b28fdf..69c4e05abb996f 100644
--- a/src/platform/Tizen/ConnectivityManagerImpl.h
+++ b/src/platform/Tizen/ConnectivityManagerImpl.h
@@ -117,8 +117,8 @@ class ConnectivityManagerImpl final : public ConnectivityManager,
     System::Clock::Timeout _GetWiFiAPIdleTimeout(void);
     void _SetWiFiAPIdleTimeout(System::Clock::Timeout val);
 
-    static void ActivateWiFiManager(::chip::System::Layer * aLayer, void * aAppState);
-    static void DeactivateWiFiManager(::chip::System::Layer * aLayer, void * aAppState);
+    static void ActivateWiFiManager(System::Layer * aLayer, void * aAppState);
+    static void DeactivateWiFiManager(System::Layer * aLayer, void * aAppState);
 #endif
 
     // ===== Members for internal use by the following friends.
diff --git a/src/platform/Tizen/ConnectivityUtils.cpp b/src/platform/Tizen/ConnectivityUtils.cpp
index 42106db7411cb4..6ad5103d7a5b4d 100644
--- a/src/platform/Tizen/ConnectivityUtils.cpp
+++ b/src/platform/Tizen/ConnectivityUtils.cpp
@@ -36,16 +36,15 @@
 
 #include 
 
-using namespace ::chip::app::Clusters::GeneralDiagnostics;
-
 namespace chip {
 namespace DeviceLayer {
 namespace Internal {
 
-InterfaceType ConnectivityUtils::GetInterfaceConnectionType(const char * ifname)
+app::Clusters::GeneralDiagnostics::InterfaceType ConnectivityUtils::GetInterfaceConnectionType(const char * ifname)
 {
-    InterfaceType ret = InterfaceType::EMBER_ZCL_INTERFACE_TYPE_UNSPECIFIED;
-    int sock          = -1;
+    app::Clusters::GeneralDiagnostics::InterfaceType ret =
+        app::Clusters::GeneralDiagnostics::InterfaceType::EMBER_ZCL_INTERFACE_TYPE_UNSPECIFIED;
+    int sock = -1;
 
     if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
     {
@@ -59,7 +58,7 @@ InterfaceType ConnectivityUtils::GetInterfaceConnectionType(const char * ifname)
 
     if (ioctl(sock, SIOCGIWNAME, &pwrq) != -1)
     {
-        ret = InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI;
+        ret = app::Clusters::GeneralDiagnostics::InterfaceType::EMBER_ZCL_INTERFACE_TYPE_WI_FI;
     }
     else if ((strncmp(ifname, "en", 2) == 0) || (strncmp(ifname, "eth", 3) == 0))
     {
@@ -70,7 +69,7 @@ InterfaceType ConnectivityUtils::GetInterfaceConnectionType(const char * ifname)
         Platform::CopyString(ifr.ifr_name, ifname);
 
         if (ioctl(sock, SIOCETHTOOL, &ifr) != -1)
-            ret = InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET;
+            ret = app::Clusters::GeneralDiagnostics::InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET;
     }
 
     close(sock);
diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp
index 479e561e81dd6a..6a3294d677bd11 100644
--- a/src/platform/Tizen/DnssdImpl.cpp
+++ b/src/platform/Tizen/DnssdImpl.cpp
@@ -24,6 +24,7 @@
 #include 
 #include 
 
+#include 
 #include 
 #include 
 #include 
@@ -36,9 +37,6 @@
 #include 
 #endif
 
-using namespace chip::Dnssd;
-using namespace chip::DeviceLayer::Internal;
-
 namespace {
 
 constexpr uint8_t kDnssdKeyMaxSize       = 32;
@@ -50,17 +48,19 @@ constexpr const char * kEmptyAddressIpv6 = "0000:0000:0000:0000:0000:0000:0000:0
 // and the browsing callback is called multiple times (once for each service found).
 constexpr unsigned int kDnssdBrowseTimeoutMs = 250;
 
-bool IsSupportedProtocol(DnssdServiceProtocol protocol)
+bool IsSupportedProtocol(chip::Dnssd::DnssdServiceProtocol protocol)
 {
-    return (protocol == DnssdServiceProtocol::kDnssdProtocolUdp) || (protocol == DnssdServiceProtocol::kDnssdProtocolTcp);
+    return (protocol == chip::Dnssd::DnssdServiceProtocol::kDnssdProtocolUdp) ||
+        (protocol == chip::Dnssd::DnssdServiceProtocol::kDnssdProtocolTcp);
 }
 
-const char * GetProtocolString(DnssdServiceProtocol protocol)
+const char * GetProtocolString(chip::Dnssd::DnssdServiceProtocol protocol)
 {
-    return protocol == DnssdServiceProtocol::kDnssdProtocolUdp ? kCommissionProtocol : kOperationalProtocol;
+    return protocol == chip::Dnssd::DnssdServiceProtocol::kDnssdProtocolUdp ? chip::Dnssd::kCommissionProtocol
+                                                                            : chip::Dnssd::kOperationalProtocol;
 }
 
-std::string GetFullType(const char * type, DnssdServiceProtocol protocol)
+std::string GetFullType(const char * type, chip::Dnssd::DnssdServiceProtocol protocol)
 {
     std::ostringstream typeBuilder;
     typeBuilder << type << "." << GetProtocolString(protocol);
@@ -84,7 +84,7 @@ CHIP_ERROR GetChipError(int dnssdError)
 
 void OnRegister(dnssd_error_e result, dnssd_service_h service, void * data)
 {
-    auto rCtx = reinterpret_cast(data);
+    auto rCtx = reinterpret_cast(data);
 
     ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, port: %u, interfaceId: %u", __func__, rCtx->mName, rCtx->mType,
                   rCtx->mPort, rCtx->mInterfaceId);
@@ -107,7 +107,7 @@ gboolean RegisterAsync(GMainLoop * mainLoop, gpointer userData)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s", __func__);
 
-    auto rCtx       = reinterpret_cast(userData);
+    auto rCtx       = reinterpret_cast(userData);
     rCtx->mMainLoop = mainLoop;
 
     int ret = dnssd_register_local_service(rCtx->mServiceHandle, OnRegister, rCtx);
@@ -122,7 +122,7 @@ gboolean OnBrowseTimeout(void * userData)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s: all for now", __func__);
 
-    auto * bCtx = reinterpret_cast(userData);
+    auto * bCtx = reinterpret_cast(userData);
 
     bCtx->MainLoopQuit();
     bCtx->mCallback(bCtx->mCbContext, bCtx->mServices.data(), bCtx->mServices.size(), true, CHIP_NO_ERROR);
@@ -134,7 +134,7 @@ gboolean OnBrowseTimeout(void * userData)
     return FALSE;
 }
 
-void OnBrowseAdd(BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
+void OnBrowseAdd(chip::Dnssd::BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, StringOrNullMarker(name),
                   StringOrNullMarker(type), interfaceId);
@@ -142,7 +142,7 @@ void OnBrowseAdd(BrowseContext * context, const char * type, const char * name,
     char * tokens  = strdup(type);
     char * regtype = strtok(tokens, ".");
 
-    DnssdService dnssdService = {};
+    chip::Dnssd::DnssdService dnssdService = {};
     chip::Platform::CopyString(dnssdService.mName, name);
     chip::Platform::CopyString(dnssdService.mType, regtype);
     dnssdService.mProtocol  = context->mProtocol;
@@ -153,12 +153,12 @@ void OnBrowseAdd(BrowseContext * context, const char * type, const char * name,
     free(tokens);
 }
 
-void OnBrowseRemove(BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
+void OnBrowseRemove(chip::Dnssd::BrowseContext * context, const char * type, const char * name, uint32_t interfaceId)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s: name: %s, type: %s, interfaceId: %u", __func__, StringOrNullMarker(name),
                   StringOrNullMarker(type), interfaceId);
     context->mServices.erase(std::remove_if(
-        context->mServices.begin(), context->mServices.end(), [name, type, interfaceId](const DnssdService & service) {
+        context->mServices.begin(), context->mServices.end(), [name, type, interfaceId](const chip::Dnssd::DnssdService & service) {
             return strcmp(name, service.mName) == 0 && type == GetFullType(service.mType, service.mProtocol) &&
                 interfaceId == service.mInterface.GetPlatformInterface();
         }));
@@ -167,7 +167,7 @@ void OnBrowseRemove(BrowseContext * context, const char * type, const char * nam
 void OnBrowse(dnssd_service_state_e state, dnssd_service_h service, void * data)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s", __func__);
-    auto bCtx = reinterpret_cast(data);
+    auto bCtx = reinterpret_cast(data);
     int ret;
 
     // If there is already a timeout source, so we need to cancel it.
@@ -232,7 +232,7 @@ gboolean BrowseAsync(GMainLoop * mainLoop, gpointer userData)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s", __func__);
 
-    auto * bCtx      = reinterpret_cast(userData);
+    auto * bCtx      = reinterpret_cast(userData);
     auto interfaceId = bCtx->mInterfaceId;
     bCtx->mMainLoop  = mainLoop;
     int ret;
@@ -259,7 +259,7 @@ gboolean BrowseAsync(GMainLoop * mainLoop, gpointer userData)
     return true;
 }
 
-void GetTextEntries(unsigned short txtLen, uint8_t * txtRecord, std::vector & textEntries)
+void GetTextEntries(unsigned short txtLen, uint8_t * txtRecord, std::vector & textEntries)
 {
     VerifyOrReturn(txtLen > 1, ChipLogDetail(DeviceLayer, "DNSsd %s: No TXT records", __func__));
     const uint8_t * txtRecordEnd = txtRecord + txtLen;
@@ -296,7 +296,7 @@ void GetTextEntries(unsigned short txtLen, uint8_t * txtRecord, std::vector(data);
+    auto rCtx = reinterpret_cast(data);
 
     char * name           = nullptr;
     char * ipv4           = nullptr;
@@ -305,8 +305,8 @@ void OnResolve(dnssd_error_e result, dnssd_service_h service, void * data)
     char * interface      = nullptr;
     unsigned short txtLen = 0;
     uint8_t * txtRecord   = nullptr;
-    std::vector textEntries;
-    DnssdService dnssdService = {};
+    std::vector textEntries;
+    chip::Dnssd::DnssdService dnssdService = {};
     chip::Inet::IPAddress ipAddr;
     CHIP_ERROR err = CHIP_NO_ERROR;
 
@@ -400,7 +400,7 @@ gboolean ResolveAsync(GMainLoop * mainLoop, gpointer userData)
 {
     ChipLogDetail(DeviceLayer, "DNSsd %s", __func__);
 
-    auto * rCtx     = reinterpret_cast(userData);
+    auto * rCtx     = reinterpret_cast(userData);
     rCtx->mMainLoop = mainLoop;
 
     int ret = dnssd_resolve_service(rCtx->mServiceHandle, OnResolve, rCtx);
@@ -410,7 +410,6 @@ gboolean ResolveAsync(GMainLoop * mainLoop, gpointer userData)
     rCtx->mIsResolving = true;
     return true;
 }
-
 } // namespace
 
 namespace chip {
@@ -449,7 +448,7 @@ RegisterContext::~RegisterContext()
     }
 }
 
-BrowseContext::BrowseContext(DnssdTizen * instance, const char * type, DnssdServiceProtocol protocol, uint32_t interfaceId,
+BrowseContext::BrowseContext(DnssdTizen * instance, const char * type, Dnssd::DnssdServiceProtocol protocol, uint32_t interfaceId,
                              DnssdBrowseCallback callback, void * context) :
     GenericContext(ContextType::Browse, instance)
 {
@@ -590,7 +589,7 @@ CHIP_ERROR DnssdTizen::RegisterService(const DnssdService & service, DnssdPublis
                      (ChipLogError(DeviceLayer, "dnssd_service_add_txt_record() failed. ret: %d", ret), err = GetChipError(ret)));
     }
 
-    ok = MainLoop::Instance().AsyncRequest(RegisterAsync, serviceCtx);
+    ok = DeviceLayer::Internal::MainLoop::Instance().AsyncRequest(RegisterAsync, serviceCtx);
     VerifyOrExit(ok, err = CHIP_ERROR_INTERNAL);
 
 exit:
@@ -620,7 +619,7 @@ CHIP_ERROR DnssdTizen::UnregisterAllServices()
     return CHIP_NO_ERROR;
 }
 
-CHIP_ERROR DnssdTizen::Browse(const char * type, DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
+CHIP_ERROR DnssdTizen::Browse(const char * type, Dnssd::DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
                               chip::Inet::InterfaceId interface, DnssdBrowseCallback callback, void * context)
 {
     std::string fullType = GetFullType(type, protocol);
@@ -629,7 +628,7 @@ CHIP_ERROR DnssdTizen::Browse(const char * type, DnssdServiceProtocol protocol,
 
     auto browseCtx = CreateBrowseContext(fullType.c_str(), protocol, interfaceId, callback, context);
 
-    bool ok = MainLoop::Instance().AsyncRequest(BrowseAsync, browseCtx);
+    bool ok = DeviceLayer::Internal::MainLoop::Instance().AsyncRequest(BrowseAsync, browseCtx);
     VerifyOrExit(ok, err = CHIP_ERROR_INTERNAL);
 
 exit:
@@ -670,7 +669,7 @@ CHIP_ERROR DnssdTizen::Resolve(const DnssdService & browseResult, chip::Inet::In
     VerifyOrExit(ret == DNSSD_ERROR_NONE,
                  (ChipLogError(DeviceLayer, "dnssd_create_remote_service() failed. ret: %d", ret), err = GetChipError(ret)));
 
-    ok = MainLoop::Instance().AsyncRequest(ResolveAsync, resolveCtx);
+    ok = DeviceLayer::Internal::MainLoop::Instance().AsyncRequest(ResolveAsync, resolveCtx);
     VerifyOrExit(ok, err = CHIP_ERROR_INTERNAL);
 
 exit:
@@ -691,7 +690,7 @@ RegisterContext * DnssdTizen::CreateRegisterContext(const char * type, const Dns
     return ctxPtr;
 }
 
-BrowseContext * DnssdTizen::CreateBrowseContext(const char * type, DnssdServiceProtocol protocol, uint32_t interfaceId,
+BrowseContext * DnssdTizen::CreateBrowseContext(const char * type, Dnssd::DnssdServiceProtocol protocol, uint32_t interfaceId,
                                                 DnssdBrowseCallback callback, void * context)
 {
     auto ctx    = std::make_unique(this, type, protocol, interfaceId, callback, context);
@@ -783,7 +782,7 @@ CHIP_ERROR ChipDnssdFinalizeServiceUpdate()
     return CHIP_NO_ERROR;
 }
 
-CHIP_ERROR ChipDnssdBrowse(const char * type, DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
+CHIP_ERROR ChipDnssdBrowse(const char * type, Dnssd::DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
                            chip::Inet::InterfaceId interface, DnssdBrowseCallback callback, void * context,
                            intptr_t * browseIdentifier)
 {
diff --git a/src/platform/Tizen/DnssdImpl.h b/src/platform/Tizen/DnssdImpl.h
old mode 100755
new mode 100644
index 4dc9ffa6110b33..360f264bbbd158
--- a/src/platform/Tizen/DnssdImpl.h
+++ b/src/platform/Tizen/DnssdImpl.h
@@ -74,7 +74,7 @@ struct RegisterContext : public GenericContext
 struct BrowseContext : public GenericContext
 {
     char mType[kDnssdTypeAndProtocolMaxSize + 1];
-    DnssdServiceProtocol mProtocol;
+    Dnssd::DnssdServiceProtocol mProtocol;
     uint32_t mInterfaceId;
 
     DnssdBrowseCallback mCallback;
@@ -87,7 +87,7 @@ struct BrowseContext : public GenericContext
     std::vector mServices;
     bool mIsBrowsing = false;
 
-    BrowseContext(DnssdTizen * instance, const char * type, DnssdServiceProtocol protocol, uint32_t interfaceId,
+    BrowseContext(DnssdTizen * instance, const char * type, Dnssd::DnssdServiceProtocol protocol, uint32_t interfaceId,
                   DnssdBrowseCallback callback, void * context);
     ~BrowseContext() override;
 };
@@ -121,7 +121,7 @@ class DnssdTizen
     CHIP_ERROR RegisterService(const DnssdService & service, DnssdPublishCallback callback, void * context);
     CHIP_ERROR UnregisterAllServices();
 
-    CHIP_ERROR Browse(const char * type, DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
+    CHIP_ERROR Browse(const char * type, Dnssd::DnssdServiceProtocol protocol, chip::Inet::IPAddressType addressType,
                       chip::Inet::InterfaceId interface, DnssdBrowseCallback callback, void * context);
 
     CHIP_ERROR Resolve(const DnssdService & browseResult, chip::Inet::InterfaceId interface, DnssdResolveCallback callback,
@@ -138,7 +138,7 @@ class DnssdTizen
 
     RegisterContext * CreateRegisterContext(const char * type, const DnssdService & service, DnssdPublishCallback callback,
                                             void * context);
-    BrowseContext * CreateBrowseContext(const char * type, DnssdServiceProtocol protocol, uint32_t interfaceId,
+    BrowseContext * CreateBrowseContext(const char * type, Dnssd::DnssdServiceProtocol protocol, uint32_t interfaceId,
                                         DnssdBrowseCallback callback, void * context);
     ResolveContext * CreateResolveContext(const char * name, const char * type, uint32_t interfaceId, DnssdResolveCallback callback,
                                           void * context);
diff --git a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
index f700832651361b..d9e721f217ce0c 100644
--- a/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningEthernetDriver.cpp
@@ -26,9 +26,6 @@
 #include 
 #include 
 
-using namespace chip::app::Clusters::GeneralDiagnostics;
-using namespace chip::DeviceLayer::Internal;
-
 namespace chip {
 namespace DeviceLayer {
 namespace NetworkCommissioning {
@@ -40,7 +37,8 @@ TizenEthernetDriver::EthernetNetworkIterator::EthernetNetworkIterator(TizenEther
 
     for (const auto * ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next)
     {
-        if (ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) == InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
+        if (DeviceLayer::Internal::ConnectivityUtils::GetInterfaceConnectionType(ifa->ifa_name) ==
+            app::Clusters::GeneralDiagnostics::InterfaceType::EMBER_ZCL_INTERFACE_TYPE_ETHERNET)
         {
             mInterfaces.push_back(ifa->ifa_name);
             if (mInterfaces.size() == mDriver->GetMaxNetworks())
diff --git a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
index 517b975ac04ea1..6a393b621f0a47 100644
--- a/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningThreadDriver.cpp
@@ -26,9 +26,6 @@
 #include 
 #include 
 
-using namespace chip;
-using namespace chip::Thread;
-
 namespace chip {
 namespace DeviceLayer {
 namespace NetworkCommissioning {
@@ -59,15 +56,15 @@ CHIP_ERROR TizenThreadDriver::RevertConfiguration()
 
 Status TizenThreadDriver::AddOrUpdateNetwork(ByteSpan operationalDataset, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex)
 {
-    uint8_t extpanid[kSizeExtendedPanId];
-    uint8_t newExtpanid[kSizeExtendedPanId];
+    uint8_t extpanid[Thread::kSizeExtendedPanId];
+    uint8_t newExtpanid[Thread::kSizeExtendedPanId];
     Thread::OperationalDataset newDataset;
     outDebugText.reduce_size(0);
     outNetworkIndex = 0;
     newDataset.Init(operationalDataset);
     VerifyOrReturnError(newDataset.IsCommissioned(), Status::kOutOfRange);
 
-    VerifyOrReturnError(!mStagingNetwork.IsCommissioned() || memcmp(extpanid, newExtpanid, kSizeExtendedPanId) == 0,
+    VerifyOrReturnError(!mStagingNetwork.IsCommissioned() || memcmp(extpanid, newExtpanid, Thread::kSizeExtendedPanId) == 0,
                         Status::kBoundsExceeded);
 
     mStagingNetwork = newDataset;
@@ -78,7 +75,7 @@ Status TizenThreadDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & ou
 {
     outDebugText.reduce_size(0);
     outNetworkIndex = 0;
-    uint8_t extpanid[kSizeExtendedPanId];
+    uint8_t extpanid[Thread::kSizeExtendedPanId];
     if (!mStagingNetwork.IsCommissioned())
     {
         return Status::kNetworkNotFound;
@@ -88,7 +85,8 @@ Status TizenThreadDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & ou
         return Status::kUnknownError;
     }
 
-    VerifyOrReturnError(networkId.size() == kSizeExtendedPanId && memcmp(networkId.data(), extpanid, kSizeExtendedPanId) == 0,
+    VerifyOrReturnError(networkId.size() == Thread::kSizeExtendedPanId &&
+                            memcmp(networkId.data(), extpanid, Thread::kSizeExtendedPanId) == 0,
                         Status::kNetworkNotFound);
     mStagingNetwork.Clear();
     return Status::kSuccess;
@@ -97,7 +95,7 @@ Status TizenThreadDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & ou
 Status TizenThreadDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText)
 {
     outDebugText.reduce_size(0);
-    uint8_t extpanid[kSizeExtendedPanId];
+    uint8_t extpanid[Thread::kSizeExtendedPanId];
     if (!mStagingNetwork.IsCommissioned())
     {
         return Status::kNetworkNotFound;
@@ -107,7 +105,8 @@ Status TizenThreadDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, Muta
         return Status::kUnknownError;
     }
 
-    VerifyOrReturnError(networkId.size() == kSizeExtendedPanId && memcmp(networkId.data(), extpanid, kSizeExtendedPanId) == 0,
+    VerifyOrReturnError(networkId.size() == Thread::kSizeExtendedPanId &&
+                            memcmp(networkId.data(), extpanid, Thread::kSizeExtendedPanId) == 0,
                         Status::kNetworkNotFound);
 
     return Status::kSuccess;
@@ -116,7 +115,7 @@ Status TizenThreadDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, Muta
 void TizenThreadDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback)
 {
     NetworkCommissioning::Status status = Status::kSuccess;
-    uint8_t extpanid[kSizeExtendedPanId];
+    uint8_t extpanid[Thread::kSizeExtendedPanId];
     if (!mStagingNetwork.IsCommissioned())
     {
         ExitNow(status = Status::kNetworkNotFound);
@@ -126,8 +125,9 @@ void TizenThreadDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * cal
         ExitNow(status = Status::kUnknownError);
     }
 
-    VerifyOrExit((networkId.size() == kSizeExtendedPanId && memcmp(networkId.data(), extpanid, kSizeExtendedPanId) == 0),
-                 status = Status::kNetworkNotFound);
+    VerifyOrExit(
+        (networkId.size() == Thread::kSizeExtendedPanId && memcmp(networkId.data(), extpanid, Thread::kSizeExtendedPanId) == 0),
+        status = Status::kNetworkNotFound);
 
     VerifyOrExit(DeviceLayer::ThreadStackMgrImpl().AttachToThreadNetwork(mStagingNetwork, callback) == CHIP_NO_ERROR,
                  status = Status::kUnknownError);
diff --git a/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp b/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp
index 07159e0bb5de5f..c45f1b2ec76440 100644
--- a/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp
+++ b/src/platform/Tizen/NetworkCommissioningWiFiDriver.cpp
@@ -24,10 +24,6 @@
 #include 
 #include 
 
-using namespace chip;
-using namespace chip::Thread;
-using namespace chip::DeviceLayer::Internal;
-
 namespace chip {
 namespace DeviceLayer {
 namespace NetworkCommissioning {
@@ -137,8 +133,8 @@ void TizenWiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callb
     ChipLogProgress(NetworkProvisioning, "TizenNetworkCommissioningDelegate: SSID: %.*s",
                     static_cast(sizeof(mStagingNetwork.ssid)), reinterpret_cast(mStagingNetwork.ssid));
 
-    err = WiFiMgr().Connect(reinterpret_cast(mStagingNetwork.ssid), reinterpret_cast(mStagingNetwork.credentials),
-                            callback);
+    err = DeviceLayer::Internal::WiFiMgr().Connect(reinterpret_cast(mStagingNetwork.ssid),
+                                                   reinterpret_cast(mStagingNetwork.credentials), callback);
 
 exit:
     if (err != CHIP_NO_ERROR)
diff --git a/src/platform/Tizen/ThreadStackManagerImpl.cpp b/src/platform/Tizen/ThreadStackManagerImpl.cpp
index b8e8322640dea8..1a7087960c0ccc 100644
--- a/src/platform/Tizen/ThreadStackManagerImpl.cpp
+++ b/src/platform/Tizen/ThreadStackManagerImpl.cpp
@@ -33,9 +33,6 @@
 #include "ThreadStackManagerImpl.h"
 #include 
 
-using namespace ::chip::DeviceLayer::Internal;
-using namespace chip::DeviceLayer::NetworkCommissioning;
-
 namespace chip {
 namespace DeviceLayer {
 
@@ -454,7 +451,7 @@ CHIP_ERROR ThreadStackManagerImpl::_JoinerStart()
     return CHIP_ERROR_NOT_IMPLEMENTED;
 }
 
-CHIP_ERROR ThreadStackManagerImpl::_StartThreadScan(ThreadDriver::ScanCallback * callback)
+CHIP_ERROR ThreadStackManagerImpl::_StartThreadScan(NetworkCommissioning::ThreadDriver::ScanCallback * callback)
 {
     ChipLogError(DeviceLayer, "Not implemented");
     return CHIP_ERROR_NOT_IMPLEMENTED;
@@ -489,12 +486,12 @@ ThreadStackManagerImpl::_AttachToThreadNetwork(const Thread::OperationalDataset
 
 ThreadStackManager & ThreadStackMgr()
 {
-    return chip::DeviceLayer::ThreadStackManagerImpl::sInstance;
+    return DeviceLayer::ThreadStackManagerImpl::sInstance;
 }
 
 ThreadStackManagerImpl & ThreadStackMgrImpl()
 {
-    return chip::DeviceLayer::ThreadStackManagerImpl::sInstance;
+    return DeviceLayer::ThreadStackManagerImpl::sInstance;
 }
 
 #if CHIP_DEVICE_CONFIG_ENABLE_THREAD_SRP_CLIENT
diff --git a/src/platform/Tizen/WiFiManager.h b/src/platform/Tizen/WiFiManager.h
index f7cf2f6a3ba2e0..acbe23157a8fbe 100644
--- a/src/platform/Tizen/WiFiManager.h
+++ b/src/platform/Tizen/WiFiManager.h
@@ -28,8 +28,6 @@ namespace chip {
 namespace DeviceLayer {
 namespace Internal {
 
-using namespace chip::DeviceLayer::NetworkCommissioning::Internal;
-
 class WiFiManager
 {
     friend class ConnectivityManagerImpl;
@@ -41,7 +39,8 @@ class WiFiManager
     CHIP_ERROR IsActivated(bool * isWiFiActivated);
     CHIP_ERROR Activate(void);
     CHIP_ERROR Deactivate(void);
-    CHIP_ERROR Connect(const char * ssid, const char * key, WirelessDriver::ConnectCallback * apCallback = nullptr);
+    CHIP_ERROR Connect(const char * ssid, const char * key,
+                       NetworkCommissioning::Internal::WirelessDriver::ConnectCallback * apCallback = nullptr);
     CHIP_ERROR Disconnect(const char * ssid);
     CHIP_ERROR RemoveAllConfigs(void);
 
@@ -93,7 +92,7 @@ class WiFiManager
     char mWiFiSSID[kMaxWiFiSSIDLength + 1];
     char mWiFiKey[kMaxWiFiKeyLength + 1];
 
-    WirelessDriver::ConnectCallback * mpConnectCallback;
+    NetworkCommissioning::Internal::WirelessDriver::ConnectCallback * mpConnectCallback;
 };
 
 inline WiFiManager & WiFiMgr()

From 80f7dcd4899b569b393c89537f5650fca6fd8688 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Thu, 17 Nov 2022 09:21:43 -0500
Subject: [PATCH 18/36] Improve logic for deciding whether to re-establish CASE
 in ReadClient. (#23627)

* Improve logic for deciding whether to re-establish CASE in ReadClient.

We could end up in a situation where we had a defunct session but did not have the "try to re-establish CASE" flag set.  In that case we would keep trying resubscribe attempts, which would keep failing because we could not actually create an exchange on our session, and we would never recover from that.

The fix is that we try to re-establish CASE (assuming the IM engine
has a CASE Session manager) if we don't have an active session.

Also fixes an incorrect error ("no memory") being reported if we in
fact try to subscribe when our session is not active.

* Address review comments.
---
 src/app/ReadClient.cpp | 60 ++++++++++++++++++++++++++++--------------
 src/app/ReadClient.h   |  2 +-
 2 files changed, 41 insertions(+), 21 deletions(-)

diff --git a/src/app/ReadClient.cpp b/src/app/ReadClient.cpp
index 803d8f5bcf250f..db9f6aedfcf303 100644
--- a/src/app/ReadClient.cpp
+++ b/src/app/ReadClient.cpp
@@ -143,7 +143,14 @@ CHIP_ERROR ReadClient::ScheduleResubscription(uint32_t aTimeTillNextResubscripti
         mReadPrepareParams.mSessionHolder.Grab(aNewSessionHandle.Value());
     }
 
-    mDoCaseOnNextResub = aReestablishCASE;
+    mForceCaseOnNextResub = aReestablishCASE;
+    if (mForceCaseOnNextResub && mReadPrepareParams.mSessionHolder)
+    {
+        // Mark our existing session defunct, so that we will try to
+        // re-establish it when the timer fires (unless something re-establishes
+        // before then).
+        mReadPrepareParams.mSessionHolder->AsSecureSession()->MarkAsDefunct();
+    }
 
     ReturnErrorOnFailure(
         InteractionModelEngine::GetInstance()->GetExchangeManager()->GetSessionManager()->SystemLayer()->StartTimer(
@@ -1013,7 +1020,16 @@ CHIP_ERROR ReadClient::SendSubscribeRequestImpl(const ReadPrepareParams & aReadP
     VerifyOrReturnError(aReadPrepareParams.mSessionHolder, CHIP_ERROR_MISSING_SECURE_SESSION);
 
     auto exchange = mpExchangeMgr->NewContext(aReadPrepareParams.mSessionHolder.Get().Value(), this);
-    VerifyOrReturnError(exchange != nullptr, CHIP_ERROR_NO_MEMORY);
+    if (exchange == nullptr)
+    {
+        if (aReadPrepareParams.mSessionHolder->AsSecureSession()->IsActiveSession())
+        {
+            return CHIP_ERROR_NO_MEMORY;
+        }
+
+        // Trying to subscribe with a defunct session somehow.
+        return CHIP_ERROR_INCORRECT_STATE;
+    }
 
     mExchange.Grab(exchange);
 
@@ -1081,30 +1097,34 @@ void ReadClient::OnResubscribeTimerCallback(System::Layer * apSystemLayer, void
 
     CHIP_ERROR err;
 
-    ChipLogProgress(DataManagement, "OnResubscribeTimerCallback: DoCASE = %d", _this->mDoCaseOnNextResub);
+    ChipLogProgress(DataManagement, "OnResubscribeTimerCallback: ForceCASE = %d", _this->mForceCaseOnNextResub);
     _this->mNumRetries++;
 
-    if (_this->mDoCaseOnNextResub)
+    bool allowResubscribeOnError = true;
+    if (!_this->mReadPrepareParams.mSessionHolder ||
+        !_this->mReadPrepareParams.mSessionHolder->AsSecureSession()->IsActiveSession())
     {
+        // We don't have an active CASE session.  We need to go ahead and set
+        // one up, if we can.
+        ChipLogProgress(DataManagement, "Trying to establish a CASE session");
         auto * caseSessionManager = InteractionModelEngine::GetInstance()->GetCASESessionManager();
-        VerifyOrExit(caseSessionManager != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
+        if (caseSessionManager)
+        {
+            caseSessionManager->FindOrEstablishSession(_this->mPeer, &_this->mOnConnectedCallback,
+                                                       &_this->mOnConnectionFailureCallback);
+            return;
+        }
 
-        //
-        // We need to mark our session as defunct explicitly since the assessment of a liveness failure
-        // is usually triggered by the absence of any exchange activity that would have otherwise
-        // automatically marked the session as defunct on a response timeout.
-        //
-        // Doing so will ensure that the subsequent call to FindOrEstablishSession will not bind to
-        // an existing established session but rather trigger establishing a new one.
-        //
-        if (_this->mReadPrepareParams.mSessionHolder)
+        if (_this->mForceCaseOnNextResub)
         {
-            _this->mReadPrepareParams.mSessionHolder->AsSecureSession()->MarkAsDefunct();
+            // Caller asked us to force CASE but we have no way to do CASE.
+            // Just stop trying.
+            allowResubscribeOnError = false;
         }
 
-        caseSessionManager->FindOrEstablishSession(_this->mPeer, &_this->mOnConnectedCallback,
-                                                   &_this->mOnConnectionFailureCallback);
-        return;
+        // No way to send our subscribe request.
+        err = CHIP_ERROR_INCORRECT_STATE;
+        ExitNow();
     }
 
     err = _this->SendSubscribeRequest(_this->mReadPrepareParams);
@@ -1114,11 +1134,11 @@ void ReadClient::OnResubscribeTimerCallback(System::Layer * apSystemLayer, void
     {
         //
         // Call Close (which should trigger re-subscription again) EXCEPT if we got here because we didn't have a valid
-        // CASESessionManager pointer when mDoCaseOnNextResub was true.
+        // CASESessionManager pointer when mForceCaseOnNextResub was true.
         //
         // In that case, don't permit re-subscription to occur.
         //
-        _this->Close(err, err != CHIP_ERROR_INCORRECT_STATE);
+        _this->Close(err, allowResubscribeOnError);
     }
 }
 
diff --git a/src/app/ReadClient.h b/src/app/ReadClient.h
index 3c28561891ef83..59309da4f894b5 100644
--- a/src/app/ReadClient.h
+++ b/src/app/ReadClient.h
@@ -501,7 +501,7 @@ class ReadClient : public Messaging::ExchangeDelegate
     InteractionType mInteractionType = InteractionType::Read;
     Timestamp mEventTimestamp;
 
-    bool mDoCaseOnNextResub = true;
+    bool mForceCaseOnNextResub = true;
 
     chip::Callback::Callback mOnConnectedCallback;
     chip::Callback::Callback mOnConnectionFailureCallback;

From fb06b8d3574d0f30d0be24ea2794dc7dd0eceb62 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Thu, 17 Nov 2022 09:30:57 -0500
Subject: [PATCH 19/36] [darwin] Make sure the prefixes on the enum names match
 the type (#23646)

This is a re-landing of PR #22673 but with backwards-compat preserved.

* Update generated code

Co-authored-by: Vivien Nicolas 
---
 .../CHIP/templates/MTRClusterConstants.zapt   |  103 +-
 .../CHIP/templates/MTRClusters-src.zapt       |    4 +-
 .../CHIP/zap-generated/MTRClusterConstants.h  | 7831 +++++++++++++----
 .../CHIP/zap-generated/MTRClusters.mm         | 6094 ++++++-------
 4 files changed, 9376 insertions(+), 4656 deletions(-)

diff --git a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
index ff5350c4d67efe..1f93d4b2f5d654 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusterConstants.zapt
@@ -7,20 +7,29 @@
 
 typedef NS_ENUM(uint32_t, MTRClusterIDType) {
 {{#zcl_clusters}}
-MTRCluster{{asUpperCamelCase label}}ID {{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}MTR_NEWLY_AVAILABLE{{/if}}= {{asMEI manufacturerCode code}},
-{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
-MTRClusterTestClusterID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingID") = {{asMEI manufacturerCode code}},
-{{/if}}
+MTRCluster{{compatClusterNameRemapping label}}ID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDType{{asUpperCamelCase label}}ID")= {{asMEI manufacturerCode code}},
+{{/zcl_clusters}}
+{{#zcl_clusters}}
+MTRClusterIDType{{asUpperCamelCase label}}ID MTR_NEWLY_AVAILABLE = {{asMEI manufacturerCode code}},
 {{/zcl_clusters}}
 };
 
 #pragma mark - Attributes IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterAttributeIDType) {
+typedef NS_ENUM(uint32_t, MTRAttributeIDType) {
+// Deprecated global attribute names
+{{#zcl_attributes_server}}
+{{#unless clusterRef}}
+MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID
+MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeGlobalAttribute{{asUpperCamelCase label}}ID")
+= {{asMEI manufacturerCode code}},
+{{/unless}}
+{{/zcl_attributes_server}}
+
 // Global attributes
 {{#zcl_attributes_server}}
 {{#unless clusterRef}}
-MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID = {{asMEI manufacturerCode code}},
+MTRAttributeIDTypeGlobalAttribute{{asUpperCamelCase label}}ID MTR_NEWLY_AVAILABLE = {{asMEI manufacturerCode code}},
 {{/unless}}
 {{/zcl_attributes_server}}
 
@@ -28,29 +37,39 @@ MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID = {{asMEI manufacturerCode
 {{#*inline "attributeIDs"}}
 {{#zcl_attributes_server}}
 {{#first}}
-// Cluster {{asUpperCamelCase ../clusterName}} attributes
+// Cluster {{compatClusterNameRemapping ../clusterName}} deprecated attribute names
 {{/first}}
 {{#if clusterRef}}
-{{! TODO: We need a better setup for the API_AVALABLE annotations here; this does not scale at all sanely. }}
-MTRCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID
+{{! TODO: We need a better setup for the API_AVAILABLE annotations here; this does not scale at all sanely. }}
+MTRCluster{{compatClusterNameRemapping ../clusterName}}Attribute{{asUpperCamelCase label}}ID
+MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID")
 {{#if (isStrEqual (asUpperCamelCase ../clusterName) "Descriptor")}}
 {{#if (isStrEqual (asUpperCamelCase label) "DeviceTypeList")}}
 API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
 {{/if}}
-{{else if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
-MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttribute{{asUpperCamelCase label}}ID")
-{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
-MTR_NEWLY_AVAILABLE
 {{/if}}
 = {{asMEI manufacturerCode code}},
 {{!Backwards compat for now: DeviceList as an alias for DeviceTypeList}}
 {{#if (isStrEqual (asUpperCamelCase ../clusterName) "Descriptor")}}
 {{#if (isStrEqual (asUpperCamelCase label) "DeviceTypeList")}}
-MTRClusterDescriptorAttributeDeviceListID = {{asMEI manufacturerCode code}},
+MTRClusterDescriptorAttributeDeviceListID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID") = {{asMEI manufacturerCode code}},
+{{/if}}
 {{/if}}
+{{else}}
+MTRCluster{{compatClusterNameRemapping ../clusterName}}Attribute{{asUpperCamelCase label}}ID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeCluster{{asUpperCamelCase parent.label}}Attribute{{asUpperCamelCase label}}ID") = MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID,
 {{/if}}
+{{#last}}
+
+{{/last}}
+{{/zcl_attributes_server}}
+{{#zcl_attributes_server}}
+{{#first}}
+// Cluster {{asUpperCamelCase ../clusterName}} attributes
+{{/first}}
+{{#if clusterRef}}
+MTRAttributeIDTypeCluster{{asUpperCamelCase parent.label}}Attribute{{asUpperCamelCase label}}ID MTR_NEWLY_AVAILABLE = {{asMEI manufacturerCode code}},
 {{else}}
-MTRCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID = MTRClusterGlobalAttribute{{asUpperCamelCase label}}ID,
+MTRAttributeIDTypeCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}ID MTR_NEWLY_AVAILABLE= MTRAttributeIDTypeGlobalAttribute{{asUpperCamelCase label}}ID,
 {{/if}}
 {{#last}}
 
@@ -59,69 +78,67 @@ MTRCluster{{asUpperCamelCase ../clusterName}}Attribute{{asUpperCamelCase label}}
 {{/inline}}
 
 {{> attributeIDs clusterName=label}}
-{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
-
-{{> attributeIDs clusterName="TestCluster"}}
-{{/if}}
 {{/zcl_clusters}}
 };
 
 #pragma mark - Commands IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
+typedef NS_ENUM(uint32_t, MTRCommandIDType) {
 {{#zcl_clusters}}
 {{#*inline "commandIDs"}}
 {{#zcl_commands}}
 {{#first}}
-// Cluster {{asUpperCamelCase ../clusterName}} commands
+// Cluster {{compatClusterNameRemapping ../clusterName}} deprecated command id names
 {{/first}}
-MTRCluster{{asUpperCamelCase ../clusterName}}Command{{asUpperCamelCase label}}ID
-{{#if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
-MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommand{{asUpperCamelCase label}}ID")
-{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
-MTR_NEWLY_AVAILABLE
-{{/if}}
+MTRCluster{{compatClusterNameRemapping ../clusterName}}Command{{asUpperCamelCase label}}ID
+MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeCluster{{asUpperCamelCase ../clusterName}}Command{{asUpperCamelCase label}}ID")
 = {{asMEI manufacturerCode code}},
 {{#last}}
 
+{{/last}}
+{{/zcl_commands}}
+{{#zcl_commands}}
+{{#first}}
+// Cluster {{asUpperCamelCase ../clusterName}} commands
+{{/first}}
+MTRCommandIDTypeCluster{{asUpperCamelCase ../clusterName}}Command{{asUpperCamelCase label}}ID MTR_NEWLY_AVAILABLE = {{asMEI manufacturerCode code}},
+{{#last}}
+
 {{/last}}
 {{/zcl_commands}}
 {{/inline}}
 
 {{> commandIDs clusterName=label}}
-{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
-
-{{> commandIDs clusterName="TestCluster"}}
-{{/if}}
 {{/zcl_clusters}}
 };
 
 #pragma mark - Events IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
+typedef NS_ENUM(uint32_t, MTREventIDType) {
 {{#zcl_clusters}}
 {{#*inline "eventIDs"}}
 {{#zcl_events}}
 {{#first}}
-// Cluster {{asUpperCamelCase ../clusterName}} events
+// Cluster {{compatClusterNameRemapping ../clusterName}} deprecated event names
 {{/first}}
-MTRCluster{{asUpperCamelCase ../clusterName}}Event{{asUpperCamelCase name}}ID
-{{#if (isStrEqual (asUpperCamelCase ../clusterName) "TestCluster")}}
-MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingEvent{{asUpperCamelCase name}}ID")
-{{else if (isStrEqual (asUpperCamelCase ../clusterName) "UnitTesting")}}
-MTR_NEWLY_AVAILABLE
-{{/if}}
+MTRCluster{{compatClusterNameRemapping ../clusterName}}Event{{asUpperCamelCase name}}ID
+MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeCluster{{asUpperCamelCase ../clusterName}}Event{{asUpperCamelCase name}}ID")
 = {{asMEI manufacturerCode code}},
 {{#last}}
 
+{{/last}}
+{{/zcl_events}}
+{{#zcl_events}}
+{{#first}}
+// Cluster {{asUpperCamelCase ../clusterName}} events
+{{/first}}
+MTREventIDTypeCluster{{asUpperCamelCase ../clusterName}}Event{{asUpperCamelCase name}}ID MTR_NEWLY_AVAILABLE = {{asMEI manufacturerCode code}},
+{{#last}}
+
 {{/last}}
 {{/zcl_events}}
 {{/inline}}
 
 {{> eventIDs clusterName=label}}
-{{#if (isStrEqual (asUpperCamelCase label) "UnitTesting")}}
-
-{{> eventIDs clusterName="TestCluster"}}
-{{/if}}
 {{/zcl_clusters}}
 };
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
index 52fb5f66773a06..e385a738630df6 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
@@ -125,7 +125,7 @@ using chip::SessionHandle;
 {{!Backwards compat for now: Treat DeviceTypeList as DeviceList.  Ideally we would have both, not just DeviceList. }}
 {{#*inline "attribute"}}Attribute{{#if (isStrEqual (asUpperCamelCase parent.name) "Descriptor")}}{{#if (isStrEqual (asUpperCamelCase name) "DeviceTypeList")}}DeviceList{{else}}{{asUpperCamelCase name}}{{/if}}{{else}}{{asUpperCamelCase name}}{{/if}}{{/inline}}
 - (NSDictionary *)read{{>attribute}}WithParams:(MTRReadParams * _Nullable)params {
-    return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRCluster{{asUpperCamelCase parent.name}}ID) attributeID:@(MTRCluster{{asUpperCamelCase parent.name}}Attribute{{asUpperCamelCase name}}ID) params:params];
+    return [self.device readAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDType{{asUpperCamelCase parent.name}}ID) attributeID:@(MTRAttributeIDTypeCluster{{asUpperCamelCase parent.name}}Attribute{{asUpperCamelCase name}}ID) params:params];
 }
 
 {{#if isWritableAttribute}}
@@ -143,7 +143,7 @@ using chip::SessionHandle;
     }
     {{/if}}
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRCluster{{asUpperCamelCase parent.name}}ID) attributeID:@(MTRCluster{{asUpperCamelCase parent.name}}Attribute{{asUpperCamelCase name}}ID) value:dataValueDictionary expectedValueInterval:expectedValueIntervalMs timedWriteTimeout:timedWriteTimeout];
+    [self.device writeAttributeWithEndpointID:@(_endpoint) clusterID:@(MTRClusterIDType{{asUpperCamelCase parent.name}}ID) attributeID:@(MTRAttributeIDTypeCluster{{asUpperCamelCase parent.name}}Attribute{{asUpperCamelCase name}}ID) value:dataValueDictionary expectedValueInterval:expectedValueIntervalMs timedWriteTimeout:timedWriteTimeout];
 }
 
 {{/if}}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 376d759c424220..a4a8a00a76fc30 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -21,2059 +21,6600 @@
 #pragma mark - Clusters IDs
 
 typedef NS_ENUM(uint32_t, MTRClusterIDType) {
-    MTRClusterIdentifyID = 0x00000003,
-    MTRClusterGroupsID = 0x00000004,
-    MTRClusterScenesID = 0x00000005,
-    MTRClusterOnOffID = 0x00000006,
-    MTRClusterOnOffSwitchConfigurationID = 0x00000007,
-    MTRClusterLevelControlID = 0x00000008,
-    MTRClusterBinaryInputBasicID = 0x0000000F,
-    MTRClusterPulseWidthModulationID = 0x0000001C,
-    MTRClusterDescriptorID = 0x0000001D,
-    MTRClusterBindingID = 0x0000001E,
-    MTRClusterAccessControlID = 0x0000001F,
-    MTRClusterActionsID = 0x00000025,
-    MTRClusterBasicID = 0x00000028,
-    MTRClusterOtaSoftwareUpdateProviderID = 0x00000029,
-    MTRClusterOtaSoftwareUpdateRequestorID = 0x0000002A,
-    MTRClusterLocalizationConfigurationID = 0x0000002B,
-    MTRClusterTimeFormatLocalizationID = 0x0000002C,
-    MTRClusterUnitLocalizationID = 0x0000002D,
-    MTRClusterPowerSourceConfigurationID = 0x0000002E,
-    MTRClusterPowerSourceID = 0x0000002F,
-    MTRClusterGeneralCommissioningID = 0x00000030,
-    MTRClusterNetworkCommissioningID = 0x00000031,
-    MTRClusterDiagnosticLogsID = 0x00000032,
-    MTRClusterGeneralDiagnosticsID = 0x00000033,
-    MTRClusterSoftwareDiagnosticsID = 0x00000034,
-    MTRClusterThreadNetworkDiagnosticsID = 0x00000035,
-    MTRClusterWiFiNetworkDiagnosticsID = 0x00000036,
-    MTRClusterEthernetNetworkDiagnosticsID = 0x00000037,
-    MTRClusterTimeSynchronizationID = 0x00000038,
-    MTRClusterBridgedDeviceBasicID = 0x00000039,
-    MTRClusterSwitchID = 0x0000003B,
-    MTRClusterAdministratorCommissioningID = 0x0000003C,
-    MTRClusterOperationalCredentialsID = 0x0000003E,
-    MTRClusterGroupKeyManagementID = 0x0000003F,
-    MTRClusterFixedLabelID = 0x00000040,
-    MTRClusterUserLabelID = 0x00000041,
-    MTRClusterProxyConfigurationID = 0x00000042,
-    MTRClusterProxyDiscoveryID = 0x00000043,
-    MTRClusterProxyValidID = 0x00000044,
-    MTRClusterBooleanStateID = 0x00000045,
-    MTRClusterModeSelectID = 0x00000050,
-    MTRClusterDoorLockID = 0x00000101,
-    MTRClusterWindowCoveringID = 0x00000102,
-    MTRClusterBarrierControlID = 0x00000103,
-    MTRClusterPumpConfigurationAndControlID = 0x00000200,
-    MTRClusterThermostatID = 0x00000201,
-    MTRClusterFanControlID = 0x00000202,
-    MTRClusterThermostatUserInterfaceConfigurationID = 0x00000204,
-    MTRClusterColorControlID = 0x00000300,
-    MTRClusterBallastConfigurationID = 0x00000301,
-    MTRClusterIlluminanceMeasurementID = 0x00000400,
-    MTRClusterTemperatureMeasurementID = 0x00000402,
-    MTRClusterPressureMeasurementID = 0x00000403,
-    MTRClusterFlowMeasurementID = 0x00000404,
-    MTRClusterRelativeHumidityMeasurementID = 0x00000405,
-    MTRClusterOccupancySensingID = 0x00000406,
-    MTRClusterWakeOnLanID = 0x00000503,
-    MTRClusterChannelID = 0x00000504,
-    MTRClusterTargetNavigatorID = 0x00000505,
-    MTRClusterMediaPlaybackID = 0x00000506,
-    MTRClusterMediaInputID = 0x00000507,
-    MTRClusterLowPowerID = 0x00000508,
-    MTRClusterKeypadInputID = 0x00000509,
-    MTRClusterContentLauncherID = 0x0000050A,
-    MTRClusterAudioOutputID = 0x0000050B,
-    MTRClusterApplicationLauncherID = 0x0000050C,
-    MTRClusterApplicationBasicID = 0x0000050D,
-    MTRClusterAccountLoginID = 0x0000050E,
-    MTRClusterElectricalMeasurementID = 0x00000B04,
-    MTRClusterUnitTestingID MTR_NEWLY_AVAILABLE = 0xFFF1FC05,
-    MTRClusterTestClusterID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingID") = 0xFFF1FC05,
-    MTRClusterFaultInjectionID = 0xFFF1FC06,
+    MTRClusterIdentifyID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeIdentifyID") = 0x00000003,
+    MTRClusterGroupsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeGroupsID") = 0x00000004,
+    MTRClusterScenesID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeScenesID") = 0x00000005,
+    MTRClusterOnOffID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOnOffID") = 0x00000006,
+    MTRClusterOnOffSwitchConfigurationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOnOffSwitchConfigurationID") = 0x00000007,
+    MTRClusterLevelControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeLevelControlID") = 0x00000008,
+    MTRClusterBinaryInputBasicID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBinaryInputBasicID") = 0x0000000F,
+    MTRClusterPulseWidthModulationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypePulseWidthModulationID") = 0x0000001C,
+    MTRClusterDescriptorID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeDescriptorID") = 0x0000001D,
+    MTRClusterBindingID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBindingID") = 0x0000001E,
+    MTRClusterAccessControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeAccessControlID") = 0x0000001F,
+    MTRClusterActionsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeActionsID") = 0x00000025,
+    MTRClusterBasicID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBasicID") = 0x00000028,
+    MTRClusterOtaSoftwareUpdateProviderID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOtaSoftwareUpdateProviderID")
+    = 0x00000029,
+    MTRClusterOtaSoftwareUpdateRequestorID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOtaSoftwareUpdateRequestorID")
+    = 0x0000002A,
+    MTRClusterLocalizationConfigurationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeLocalizationConfigurationID")
+    = 0x0000002B,
+    MTRClusterTimeFormatLocalizationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeTimeFormatLocalizationID") = 0x0000002C,
+    MTRClusterUnitLocalizationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeUnitLocalizationID") = 0x0000002D,
+    MTRClusterPowerSourceConfigurationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypePowerSourceConfigurationID") = 0x0000002E,
+    MTRClusterPowerSourceID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypePowerSourceID") = 0x0000002F,
+    MTRClusterGeneralCommissioningID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeGeneralCommissioningID") = 0x00000030,
+    MTRClusterNetworkCommissioningID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeNetworkCommissioningID") = 0x00000031,
+    MTRClusterDiagnosticLogsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeDiagnosticLogsID") = 0x00000032,
+    MTRClusterGeneralDiagnosticsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeGeneralDiagnosticsID") = 0x00000033,
+    MTRClusterSoftwareDiagnosticsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeSoftwareDiagnosticsID") = 0x00000034,
+    MTRClusterThreadNetworkDiagnosticsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeThreadNetworkDiagnosticsID") = 0x00000035,
+    MTRClusterWiFiNetworkDiagnosticsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeWiFiNetworkDiagnosticsID") = 0x00000036,
+    MTRClusterEthernetNetworkDiagnosticsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeEthernetNetworkDiagnosticsID")
+    = 0x00000037,
+    MTRClusterTimeSynchronizationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeTimeSynchronizationID") = 0x00000038,
+    MTRClusterBridgedDeviceBasicID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBridgedDeviceBasicID") = 0x00000039,
+    MTRClusterSwitchID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeSwitchID") = 0x0000003B,
+    MTRClusterAdministratorCommissioningID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeAdministratorCommissioningID")
+    = 0x0000003C,
+    MTRClusterOperationalCredentialsID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOperationalCredentialsID") = 0x0000003E,
+    MTRClusterGroupKeyManagementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeGroupKeyManagementID") = 0x0000003F,
+    MTRClusterFixedLabelID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeFixedLabelID") = 0x00000040,
+    MTRClusterUserLabelID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeUserLabelID") = 0x00000041,
+    MTRClusterProxyConfigurationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeProxyConfigurationID") = 0x00000042,
+    MTRClusterProxyDiscoveryID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeProxyDiscoveryID") = 0x00000043,
+    MTRClusterProxyValidID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeProxyValidID") = 0x00000044,
+    MTRClusterBooleanStateID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBooleanStateID") = 0x00000045,
+    MTRClusterModeSelectID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeModeSelectID") = 0x00000050,
+    MTRClusterDoorLockID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeDoorLockID") = 0x00000101,
+    MTRClusterWindowCoveringID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeWindowCoveringID") = 0x00000102,
+    MTRClusterBarrierControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBarrierControlID") = 0x00000103,
+    MTRClusterPumpConfigurationAndControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypePumpConfigurationAndControlID")
+    = 0x00000200,
+    MTRClusterThermostatID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeThermostatID") = 0x00000201,
+    MTRClusterFanControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeFanControlID") = 0x00000202,
+    MTRClusterThermostatUserInterfaceConfigurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRClusterIDTypeThermostatUserInterfaceConfigurationID")
+    = 0x00000204,
+    MTRClusterColorControlID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeColorControlID") = 0x00000300,
+    MTRClusterBallastConfigurationID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBallastConfigurationID") = 0x00000301,
+    MTRClusterIlluminanceMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeIlluminanceMeasurementID") = 0x00000400,
+    MTRClusterTemperatureMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeTemperatureMeasurementID") = 0x00000402,
+    MTRClusterPressureMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypePressureMeasurementID") = 0x00000403,
+    MTRClusterFlowMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeFlowMeasurementID") = 0x00000404,
+    MTRClusterRelativeHumidityMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeRelativeHumidityMeasurementID")
+    = 0x00000405,
+    MTRClusterOccupancySensingID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOccupancySensingID") = 0x00000406,
+    MTRClusterWakeOnLanID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeWakeOnLanID") = 0x00000503,
+    MTRClusterChannelID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeChannelID") = 0x00000504,
+    MTRClusterTargetNavigatorID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeTargetNavigatorID") = 0x00000505,
+    MTRClusterMediaPlaybackID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeMediaPlaybackID") = 0x00000506,
+    MTRClusterMediaInputID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeMediaInputID") = 0x00000507,
+    MTRClusterLowPowerID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeLowPowerID") = 0x00000508,
+    MTRClusterKeypadInputID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeKeypadInputID") = 0x00000509,
+    MTRClusterContentLauncherID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeContentLauncherID") = 0x0000050A,
+    MTRClusterAudioOutputID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeAudioOutputID") = 0x0000050B,
+    MTRClusterApplicationLauncherID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeApplicationLauncherID") = 0x0000050C,
+    MTRClusterApplicationBasicID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeApplicationBasicID") = 0x0000050D,
+    MTRClusterAccountLoginID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeAccountLoginID") = 0x0000050E,
+    MTRClusterElectricalMeasurementID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeElectricalMeasurementID") = 0x00000B04,
+    MTRClusterTestClusterID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeUnitTestingID") = 0xFFF1FC05,
+    MTRClusterFaultInjectionID MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeFaultInjectionID") = 0xFFF1FC06,
+    MTRClusterIDTypeIdentifyID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRClusterIDTypeGroupsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRClusterIDTypeScenesID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRClusterIDTypeOnOffID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRClusterIDTypeOnOffSwitchConfigurationID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRClusterIDTypeLevelControlID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRClusterIDTypeBinaryInputBasicID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRClusterIDTypePulseWidthModulationID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRClusterIDTypeDescriptorID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRClusterIDTypeBindingID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRClusterIDTypeAccessControlID MTR_NEWLY_AVAILABLE = 0x0000001F,
+    MTRClusterIDTypeActionsID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRClusterIDTypeBasicID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRClusterIDTypeOtaSoftwareUpdateProviderID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRClusterIDTypeOtaSoftwareUpdateRequestorID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRClusterIDTypeLocalizationConfigurationID MTR_NEWLY_AVAILABLE = 0x0000002B,
+    MTRClusterIDTypeTimeFormatLocalizationID MTR_NEWLY_AVAILABLE = 0x0000002C,
+    MTRClusterIDTypeUnitLocalizationID MTR_NEWLY_AVAILABLE = 0x0000002D,
+    MTRClusterIDTypePowerSourceConfigurationID MTR_NEWLY_AVAILABLE = 0x0000002E,
+    MTRClusterIDTypePowerSourceID MTR_NEWLY_AVAILABLE = 0x0000002F,
+    MTRClusterIDTypeGeneralCommissioningID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRClusterIDTypeNetworkCommissioningID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRClusterIDTypeDiagnosticLogsID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRClusterIDTypeGeneralDiagnosticsID MTR_NEWLY_AVAILABLE = 0x00000033,
+    MTRClusterIDTypeSoftwareDiagnosticsID MTR_NEWLY_AVAILABLE = 0x00000034,
+    MTRClusterIDTypeThreadNetworkDiagnosticsID MTR_NEWLY_AVAILABLE = 0x00000035,
+    MTRClusterIDTypeWiFiNetworkDiagnosticsID MTR_NEWLY_AVAILABLE = 0x00000036,
+    MTRClusterIDTypeEthernetNetworkDiagnosticsID MTR_NEWLY_AVAILABLE = 0x00000037,
+    MTRClusterIDTypeTimeSynchronizationID MTR_NEWLY_AVAILABLE = 0x00000038,
+    MTRClusterIDTypeBridgedDeviceBasicID MTR_NEWLY_AVAILABLE = 0x00000039,
+    MTRClusterIDTypeSwitchID MTR_NEWLY_AVAILABLE = 0x0000003B,
+    MTRClusterIDTypeAdministratorCommissioningID MTR_NEWLY_AVAILABLE = 0x0000003C,
+    MTRClusterIDTypeOperationalCredentialsID MTR_NEWLY_AVAILABLE = 0x0000003E,
+    MTRClusterIDTypeGroupKeyManagementID MTR_NEWLY_AVAILABLE = 0x0000003F,
+    MTRClusterIDTypeFixedLabelID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRClusterIDTypeUserLabelID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRClusterIDTypeProxyConfigurationID MTR_NEWLY_AVAILABLE = 0x00000042,
+    MTRClusterIDTypeProxyDiscoveryID MTR_NEWLY_AVAILABLE = 0x00000043,
+    MTRClusterIDTypeProxyValidID MTR_NEWLY_AVAILABLE = 0x00000044,
+    MTRClusterIDTypeBooleanStateID MTR_NEWLY_AVAILABLE = 0x00000045,
+    MTRClusterIDTypeModeSelectID MTR_NEWLY_AVAILABLE = 0x00000050,
+    MTRClusterIDTypeDoorLockID MTR_NEWLY_AVAILABLE = 0x00000101,
+    MTRClusterIDTypeWindowCoveringID MTR_NEWLY_AVAILABLE = 0x00000102,
+    MTRClusterIDTypeBarrierControlID MTR_NEWLY_AVAILABLE = 0x00000103,
+    MTRClusterIDTypePumpConfigurationAndControlID MTR_NEWLY_AVAILABLE = 0x00000200,
+    MTRClusterIDTypeThermostatID MTR_NEWLY_AVAILABLE = 0x00000201,
+    MTRClusterIDTypeFanControlID MTR_NEWLY_AVAILABLE = 0x00000202,
+    MTRClusterIDTypeThermostatUserInterfaceConfigurationID MTR_NEWLY_AVAILABLE = 0x00000204,
+    MTRClusterIDTypeColorControlID MTR_NEWLY_AVAILABLE = 0x00000300,
+    MTRClusterIDTypeBallastConfigurationID MTR_NEWLY_AVAILABLE = 0x00000301,
+    MTRClusterIDTypeIlluminanceMeasurementID MTR_NEWLY_AVAILABLE = 0x00000400,
+    MTRClusterIDTypeTemperatureMeasurementID MTR_NEWLY_AVAILABLE = 0x00000402,
+    MTRClusterIDTypePressureMeasurementID MTR_NEWLY_AVAILABLE = 0x00000403,
+    MTRClusterIDTypeFlowMeasurementID MTR_NEWLY_AVAILABLE = 0x00000404,
+    MTRClusterIDTypeRelativeHumidityMeasurementID MTR_NEWLY_AVAILABLE = 0x00000405,
+    MTRClusterIDTypeOccupancySensingID MTR_NEWLY_AVAILABLE = 0x00000406,
+    MTRClusterIDTypeWakeOnLanID MTR_NEWLY_AVAILABLE = 0x00000503,
+    MTRClusterIDTypeChannelID MTR_NEWLY_AVAILABLE = 0x00000504,
+    MTRClusterIDTypeTargetNavigatorID MTR_NEWLY_AVAILABLE = 0x00000505,
+    MTRClusterIDTypeMediaPlaybackID MTR_NEWLY_AVAILABLE = 0x00000506,
+    MTRClusterIDTypeMediaInputID MTR_NEWLY_AVAILABLE = 0x00000507,
+    MTRClusterIDTypeLowPowerID MTR_NEWLY_AVAILABLE = 0x00000508,
+    MTRClusterIDTypeKeypadInputID MTR_NEWLY_AVAILABLE = 0x00000509,
+    MTRClusterIDTypeContentLauncherID MTR_NEWLY_AVAILABLE = 0x0000050A,
+    MTRClusterIDTypeAudioOutputID MTR_NEWLY_AVAILABLE = 0x0000050B,
+    MTRClusterIDTypeApplicationLauncherID MTR_NEWLY_AVAILABLE = 0x0000050C,
+    MTRClusterIDTypeApplicationBasicID MTR_NEWLY_AVAILABLE = 0x0000050D,
+    MTRClusterIDTypeAccountLoginID MTR_NEWLY_AVAILABLE = 0x0000050E,
+    MTRClusterIDTypeElectricalMeasurementID MTR_NEWLY_AVAILABLE = 0x00000B04,
+    MTRClusterIDTypeUnitTestingID MTR_NEWLY_AVAILABLE = 0xFFF1FC05,
+    MTRClusterIDTypeFaultInjectionID MTR_NEWLY_AVAILABLE = 0xFFF1FC06,
 };
 
 #pragma mark - Attributes IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterAttributeIDType) {
+typedef NS_ENUM(uint32_t, MTRAttributeIDType) {
+    // Deprecated global attribute names
+    MTRClusterGlobalAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID")
+    = 0x0000FFF8,
+    MTRClusterGlobalAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID")
+    = 0x0000FFF9,
+    MTRClusterGlobalAttributeAttributeListID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeGlobalAttributeAttributeListID")
+    = 0x0000FFFB,
+    MTRClusterGlobalAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeGlobalAttributeFeatureMapID")
+    = 0x0000FFFC,
+    MTRClusterGlobalAttributeClusterRevisionID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeGlobalAttributeClusterRevisionID")
+    = 0x0000FFFD,
+
     // Global attributes
-    MTRClusterGlobalAttributeGeneratedCommandListID = 0x0000FFF8,
-    MTRClusterGlobalAttributeAcceptedCommandListID = 0x0000FFF9,
-    MTRClusterGlobalAttributeAttributeListID = 0x0000FFFB,
-    MTRClusterGlobalAttributeFeatureMapID = 0x0000FFFC,
-    MTRClusterGlobalAttributeClusterRevisionID = 0x0000FFFD,
+    MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE = 0x0000FFF8,
+    MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE = 0x0000FFF9,
+    MTRAttributeIDTypeGlobalAttributeAttributeListID MTR_NEWLY_AVAILABLE = 0x0000FFFB,
+    MTRAttributeIDTypeGlobalAttributeFeatureMapID MTR_NEWLY_AVAILABLE = 0x0000FFFC,
+    MTRAttributeIDTypeGlobalAttributeClusterRevisionID MTR_NEWLY_AVAILABLE = 0x0000FFFD,
+
+    // Cluster Identify deprecated attribute names
+    MTRClusterIdentifyAttributeIdentifyTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTimeID")
+    = 0x00000000,
+    MTRClusterIdentifyAttributeIdentifyTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTypeID")
+    = 0x00000001,
+    MTRClusterIdentifyAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterIdentifyAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterIdentifyAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterIdentifyAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterIdentifyAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIdentifyAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Identify attributes
-    MTRClusterIdentifyAttributeIdentifyTimeID = 0x00000000,
-    MTRClusterIdentifyAttributeIdentifyTypeID = 0x00000001,
-    MTRClusterIdentifyAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterIdentifyAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterIdentifyAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterIdentifyAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterIdentifyAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTimeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTypeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterIdentifyAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterIdentifyAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterIdentifyAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterIdentifyAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterIdentifyAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Groups deprecated attribute names
+    MTRClusterGroupsAttributeNameSupportID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterGroupsAttributeNameSupportID")
+    = 0x00000000,
+    MTRClusterGroupsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterGroupsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterGroupsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterGroupsAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterGroupsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterGroupsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Groups attributes
-    MTRClusterGroupsAttributeNameSupportID = 0x00000000,
-    MTRClusterGroupsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterGroupsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterGroupsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterGroupsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterGroupsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterGroupsAttributeNameSupportID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterGroupsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterGroupsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterGroupsAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterGroupsAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterGroupsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Scenes deprecated attribute names
+    MTRClusterScenesAttributeSceneCountID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterScenesAttributeSceneCountID")
+    = 0x00000000,
+    MTRClusterScenesAttributeCurrentSceneID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeCurrentSceneID")
+    = 0x00000001,
+    MTRClusterScenesAttributeCurrentGroupID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeCurrentGroupID")
+    = 0x00000002,
+    MTRClusterScenesAttributeSceneValidID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterScenesAttributeSceneValidID")
+    = 0x00000003,
+    MTRClusterScenesAttributeNameSupportID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterScenesAttributeNameSupportID")
+    = 0x00000004,
+    MTRClusterScenesAttributeLastConfiguredByID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeLastConfiguredByID")
+    = 0x00000005,
+    MTRClusterScenesAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterScenesAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterScenesAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterScenesAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterScenesAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterScenesAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterScenesAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Scenes attributes
-    MTRClusterScenesAttributeSceneCountID = 0x00000000,
-    MTRClusterScenesAttributeCurrentSceneID = 0x00000001,
-    MTRClusterScenesAttributeCurrentGroupID = 0x00000002,
-    MTRClusterScenesAttributeSceneValidID = 0x00000003,
-    MTRClusterScenesAttributeNameSupportID = 0x00000004,
-    MTRClusterScenesAttributeLastConfiguredByID = 0x00000005,
-    MTRClusterScenesAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterScenesAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterScenesAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterScenesAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterScenesAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterScenesAttributeSceneCountID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterScenesAttributeCurrentSceneID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterScenesAttributeCurrentGroupID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterScenesAttributeSceneValidID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterScenesAttributeNameSupportID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterScenesAttributeLastConfiguredByID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterScenesAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterScenesAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterScenesAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterScenesAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterScenesAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OnOff deprecated attribute names
+    MTRClusterOnOffAttributeOnOffID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterOnOffAttributeOnOffID") = 0x00000000,
+    MTRClusterOnOffAttributeGlobalSceneControlID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffAttributeGlobalSceneControlID")
+    = 0x00004000,
+    MTRClusterOnOffAttributeOnTimeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterOnOffAttributeOnTimeID")
+    = 0x00004001,
+    MTRClusterOnOffAttributeOffWaitTimeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterOnOffAttributeOffWaitTimeID")
+    = 0x00004002,
+    MTRClusterOnOffAttributeStartUpOnOffID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterOnOffAttributeStartUpOnOffID")
+    = 0x00004003,
+    MTRClusterOnOffAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOnOffAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOnOffAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOnOffAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterOnOffAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOnOffAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OnOff attributes
-    MTRClusterOnOffAttributeOnOffID = 0x00000000,
-    MTRClusterOnOffAttributeGlobalSceneControlID = 0x00004000,
-    MTRClusterOnOffAttributeOnTimeID = 0x00004001,
-    MTRClusterOnOffAttributeOffWaitTimeID = 0x00004002,
-    MTRClusterOnOffAttributeStartUpOnOffID = 0x00004003,
-    MTRClusterOnOffAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOnOffAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOnOffAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOnOffAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOnOffAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOnOffAttributeOnOffID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterOnOffAttributeGlobalSceneControlID MTR_NEWLY_AVAILABLE = 0x00004000,
+    MTRAttributeIDTypeClusterOnOffAttributeOnTimeID MTR_NEWLY_AVAILABLE = 0x00004001,
+    MTRAttributeIDTypeClusterOnOffAttributeOffWaitTimeID MTR_NEWLY_AVAILABLE = 0x00004002,
+    MTRAttributeIDTypeClusterOnOffAttributeStartUpOnOffID MTR_NEWLY_AVAILABLE = 0x00004003,
+    MTRAttributeIDTypeClusterOnOffAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOnOffAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOnOffAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOnOffAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOnOffAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OnOffSwitchConfiguration deprecated attribute names
+    MTRClusterOnOffSwitchConfigurationAttributeSwitchTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchTypeID")
+    = 0x00000000,
+    MTRClusterOnOffSwitchConfigurationAttributeSwitchActionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchActionsID")
+    = 0x00000010,
+    MTRClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOnOffSwitchConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOnOffSwitchConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOnOffSwitchConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OnOffSwitchConfiguration attributes
-    MTRClusterOnOffSwitchConfigurationAttributeSwitchTypeID = 0x00000000,
-    MTRClusterOnOffSwitchConfigurationAttributeSwitchActionsID = 0x00000010,
-    MTRClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOnOffSwitchConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOnOffSwitchConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOnOffSwitchConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchTypeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchActionsID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster LevelControl deprecated attribute names
+    MTRClusterLevelControlAttributeCurrentLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeCurrentLevelID")
+    = 0x00000000,
+    MTRClusterLevelControlAttributeRemainingTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeRemainingTimeID")
+    = 0x00000001,
+    MTRClusterLevelControlAttributeMinLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeMinLevelID")
+    = 0x00000002,
+    MTRClusterLevelControlAttributeMaxLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeMaxLevelID")
+    = 0x00000003,
+    MTRClusterLevelControlAttributeCurrentFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeCurrentFrequencyID")
+    = 0x00000004,
+    MTRClusterLevelControlAttributeMinFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeMinFrequencyID")
+    = 0x00000005,
+    MTRClusterLevelControlAttributeMaxFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeMaxFrequencyID")
+    = 0x00000006,
+    MTRClusterLevelControlAttributeOptionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeOptionsID")
+    = 0x0000000F,
+    MTRClusterLevelControlAttributeOnOffTransitionTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeOnOffTransitionTimeID")
+    = 0x00000010,
+    MTRClusterLevelControlAttributeOnLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeOnLevelID")
+    = 0x00000011,
+    MTRClusterLevelControlAttributeOnTransitionTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeOnTransitionTimeID")
+    = 0x00000012,
+    MTRClusterLevelControlAttributeOffTransitionTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeOffTransitionTimeID")
+    = 0x00000013,
+    MTRClusterLevelControlAttributeDefaultMoveRateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeDefaultMoveRateID")
+    = 0x00000014,
+    MTRClusterLevelControlAttributeStartUpCurrentLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeStartUpCurrentLevelID")
+    = 0x00004000,
+    MTRClusterLevelControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterLevelControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterLevelControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterLevelControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterLevelControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLevelControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster LevelControl attributes
-    MTRClusterLevelControlAttributeCurrentLevelID = 0x00000000,
-    MTRClusterLevelControlAttributeRemainingTimeID = 0x00000001,
-    MTRClusterLevelControlAttributeMinLevelID = 0x00000002,
-    MTRClusterLevelControlAttributeMaxLevelID = 0x00000003,
-    MTRClusterLevelControlAttributeCurrentFrequencyID = 0x00000004,
-    MTRClusterLevelControlAttributeMinFrequencyID = 0x00000005,
-    MTRClusterLevelControlAttributeMaxFrequencyID = 0x00000006,
-    MTRClusterLevelControlAttributeOptionsID = 0x0000000F,
-    MTRClusterLevelControlAttributeOnOffTransitionTimeID = 0x00000010,
-    MTRClusterLevelControlAttributeOnLevelID = 0x00000011,
-    MTRClusterLevelControlAttributeOnTransitionTimeID = 0x00000012,
-    MTRClusterLevelControlAttributeOffTransitionTimeID = 0x00000013,
-    MTRClusterLevelControlAttributeDefaultMoveRateID = 0x00000014,
-    MTRClusterLevelControlAttributeStartUpCurrentLevelID = 0x00004000,
-    MTRClusterLevelControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterLevelControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterLevelControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterLevelControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterLevelControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterLevelControlAttributeCurrentLevelID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterLevelControlAttributeRemainingTimeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterLevelControlAttributeMinLevelID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterLevelControlAttributeMaxLevelID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterLevelControlAttributeCurrentFrequencyID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterLevelControlAttributeMinFrequencyID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterLevelControlAttributeMaxFrequencyID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterLevelControlAttributeOptionsID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterLevelControlAttributeOnOffTransitionTimeID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterLevelControlAttributeOnLevelID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterLevelControlAttributeOnTransitionTimeID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterLevelControlAttributeOffTransitionTimeID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterLevelControlAttributeDefaultMoveRateID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterLevelControlAttributeStartUpCurrentLevelID MTR_NEWLY_AVAILABLE = 0x00004000,
+    MTRAttributeIDTypeClusterLevelControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterLevelControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterLevelControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterLevelControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterLevelControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster BinaryInputBasic deprecated attribute names
+    MTRClusterBinaryInputBasicAttributeActiveTextID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeActiveTextID")
+    = 0x00000004,
+    MTRClusterBinaryInputBasicAttributeDescriptionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeDescriptionID")
+    = 0x0000001C,
+    MTRClusterBinaryInputBasicAttributeInactiveTextID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeInactiveTextID")
+    = 0x0000002E,
+    MTRClusterBinaryInputBasicAttributeOutOfServiceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeOutOfServiceID")
+    = 0x00000051,
+    MTRClusterBinaryInputBasicAttributePolarityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributePolarityID")
+    = 0x00000054,
+    MTRClusterBinaryInputBasicAttributePresentValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributePresentValueID")
+    = 0x00000055,
+    MTRClusterBinaryInputBasicAttributeReliabilityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeReliabilityID")
+    = 0x00000067,
+    MTRClusterBinaryInputBasicAttributeStatusFlagsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeStatusFlagsID")
+    = 0x0000006F,
+    MTRClusterBinaryInputBasicAttributeApplicationTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeApplicationTypeID")
+    = 0x00000100,
+    MTRClusterBinaryInputBasicAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBinaryInputBasicAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBinaryInputBasicAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBinaryInputBasicAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBinaryInputBasicAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBinaryInputBasicAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster BinaryInputBasic attributes
-    MTRClusterBinaryInputBasicAttributeActiveTextID = 0x00000004,
-    MTRClusterBinaryInputBasicAttributeDescriptionID = 0x0000001C,
-    MTRClusterBinaryInputBasicAttributeInactiveTextID = 0x0000002E,
-    MTRClusterBinaryInputBasicAttributeOutOfServiceID = 0x00000051,
-    MTRClusterBinaryInputBasicAttributePolarityID = 0x00000054,
-    MTRClusterBinaryInputBasicAttributePresentValueID = 0x00000055,
-    MTRClusterBinaryInputBasicAttributeReliabilityID = 0x00000067,
-    MTRClusterBinaryInputBasicAttributeStatusFlagsID = 0x0000006F,
-    MTRClusterBinaryInputBasicAttributeApplicationTypeID = 0x00000100,
-    MTRClusterBinaryInputBasicAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBinaryInputBasicAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBinaryInputBasicAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBinaryInputBasicAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBinaryInputBasicAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeActiveTextID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeDescriptionID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeInactiveTextID MTR_NEWLY_AVAILABLE = 0x0000002E,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeOutOfServiceID MTR_NEWLY_AVAILABLE = 0x00000051,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributePolarityID MTR_NEWLY_AVAILABLE = 0x00000054,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributePresentValueID MTR_NEWLY_AVAILABLE = 0x00000055,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeReliabilityID MTR_NEWLY_AVAILABLE = 0x00000067,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeStatusFlagsID MTR_NEWLY_AVAILABLE = 0x0000006F,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeApplicationTypeID MTR_NEWLY_AVAILABLE = 0x00000100,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBinaryInputBasicAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster PulseWidthModulation deprecated attribute names
+    MTRClusterPulseWidthModulationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPulseWidthModulationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterPulseWidthModulationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPulseWidthModulationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterPulseWidthModulationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPulseWidthModulationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterPulseWidthModulationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPulseWidthModulationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterPulseWidthModulationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPulseWidthModulationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster PulseWidthModulation attributes
-    MTRClusterPulseWidthModulationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterPulseWidthModulationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterPulseWidthModulationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterPulseWidthModulationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterPulseWidthModulationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterPulseWidthModulationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterPulseWidthModulationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterPulseWidthModulationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterPulseWidthModulationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterPulseWidthModulationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Descriptor deprecated attribute names
+    MTRClusterDescriptorAttributeDeviceTypeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeDeviceTypeListID")
+        API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2))
+    = 0x00000000,
+    MTRClusterDescriptorAttributeDeviceListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeDeviceTypeListID")
+    = 0x00000000,
+    MTRClusterDescriptorAttributeServerListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeServerListID")
+    = 0x00000001,
+    MTRClusterDescriptorAttributeClientListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeClientListID")
+    = 0x00000002,
+    MTRClusterDescriptorAttributePartsListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributePartsListID")
+    = 0x00000003,
+    MTRClusterDescriptorAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterDescriptorAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterDescriptorAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterDescriptorAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterDescriptorAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDescriptorAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Descriptor attributes
-    MTRClusterDescriptorAttributeDeviceTypeListID API_AVAILABLE(ios(16.2), macos(13.1), watchos(9.2), tvos(16.2)) = 0x00000000,
-    MTRClusterDescriptorAttributeDeviceListID = 0x00000000,
-    MTRClusterDescriptorAttributeServerListID = 0x00000001,
-    MTRClusterDescriptorAttributeClientListID = 0x00000002,
-    MTRClusterDescriptorAttributePartsListID = 0x00000003,
-    MTRClusterDescriptorAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterDescriptorAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterDescriptorAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterDescriptorAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterDescriptorAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterDescriptorAttributeDeviceTypeListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterDescriptorAttributeServerListID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterDescriptorAttributeClientListID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterDescriptorAttributePartsListID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterDescriptorAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterDescriptorAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterDescriptorAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterDescriptorAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterDescriptorAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Binding deprecated attribute names
+    MTRClusterBindingAttributeBindingID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBindingAttributeBindingID")
+    = 0x00000000,
+    MTRClusterBindingAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBindingAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBindingAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBindingAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBindingAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBindingAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBindingAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBindingAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBindingAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBindingAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Binding attributes
-    MTRClusterBindingAttributeBindingID = 0x00000000,
-    MTRClusterBindingAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBindingAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBindingAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBindingAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBindingAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBindingAttributeBindingID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterBindingAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBindingAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBindingAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBindingAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBindingAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster AccessControl deprecated attribute names
+    MTRClusterAccessControlAttributeAclID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterAccessControlAttributeAclID")
+    = 0x00000000,
+    MTRClusterAccessControlAttributeExtensionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeExtensionID")
+    = 0x00000001,
+    MTRClusterAccessControlAttributeSubjectsPerAccessControlEntryID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeSubjectsPerAccessControlEntryID")
+    = 0x00000002,
+    MTRClusterAccessControlAttributeTargetsPerAccessControlEntryID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeTargetsPerAccessControlEntryID")
+    = 0x00000003,
+    MTRClusterAccessControlAttributeAccessControlEntriesPerFabricID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeAccessControlEntriesPerFabricID")
+    = 0x00000004,
+    MTRClusterAccessControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterAccessControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterAccessControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterAccessControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterAccessControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccessControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster AccessControl attributes
-    MTRClusterAccessControlAttributeAclID = 0x00000000,
-    MTRClusterAccessControlAttributeExtensionID = 0x00000001,
-    MTRClusterAccessControlAttributeSubjectsPerAccessControlEntryID = 0x00000002,
-    MTRClusterAccessControlAttributeTargetsPerAccessControlEntryID = 0x00000003,
-    MTRClusterAccessControlAttributeAccessControlEntriesPerFabricID = 0x00000004,
-    MTRClusterAccessControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterAccessControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterAccessControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterAccessControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterAccessControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterAccessControlAttributeAclID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterAccessControlAttributeExtensionID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterAccessControlAttributeSubjectsPerAccessControlEntryID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterAccessControlAttributeTargetsPerAccessControlEntryID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterAccessControlAttributeAccessControlEntriesPerFabricID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterAccessControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterAccessControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterAccessControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterAccessControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterAccessControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Actions deprecated attribute names
+    MTRClusterActionsAttributeActionListID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterActionsAttributeActionListID")
+    = 0x00000000,
+    MTRClusterActionsAttributeEndpointListsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterActionsAttributeEndpointListsID")
+    = 0x00000001,
+    MTRClusterActionsAttributeSetupURLID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterActionsAttributeSetupURLID")
+    = 0x00000002,
+    MTRClusterActionsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterActionsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterActionsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterActionsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterActionsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterActionsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterActionsAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterActionsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterActionsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterActionsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Actions attributes
-    MTRClusterActionsAttributeActionListID = 0x00000000,
-    MTRClusterActionsAttributeEndpointListsID = 0x00000001,
-    MTRClusterActionsAttributeSetupURLID = 0x00000002,
-    MTRClusterActionsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterActionsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterActionsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterActionsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterActionsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterActionsAttributeActionListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterActionsAttributeEndpointListsID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterActionsAttributeSetupURLID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterActionsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterActionsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterActionsAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterActionsAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterActionsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Basic deprecated attribute names
+    MTRClusterBasicAttributeDataModelRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID")
+    = 0x00000000,
+    MTRClusterBasicAttributeVendorNameID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeVendorNameID")
+    = 0x00000001,
+    MTRClusterBasicAttributeVendorIDID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeVendorIDID")
+    = 0x00000002,
+    MTRClusterBasicAttributeProductNameID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductNameID")
+    = 0x00000003,
+    MTRClusterBasicAttributeProductIDID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductIDID")
+    = 0x00000004,
+    MTRClusterBasicAttributeNodeLabelID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeNodeLabelID")
+    = 0x00000005,
+    MTRClusterBasicAttributeLocationID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeLocationID")
+    = 0x00000006,
+    MTRClusterBasicAttributeHardwareVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID")
+    = 0x00000007,
+    MTRClusterBasicAttributeHardwareVersionStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID")
+    = 0x00000008,
+    MTRClusterBasicAttributeSoftwareVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID")
+    = 0x00000009,
+    MTRClusterBasicAttributeSoftwareVersionStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID")
+    = 0x0000000A,
+    MTRClusterBasicAttributeManufacturingDateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID")
+    = 0x0000000B,
+    MTRClusterBasicAttributePartNumberID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributePartNumberID")
+    = 0x0000000C,
+    MTRClusterBasicAttributeProductURLID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductURLID")
+    = 0x0000000D,
+    MTRClusterBasicAttributeProductLabelID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductLabelID")
+    = 0x0000000E,
+    MTRClusterBasicAttributeSerialNumberID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeSerialNumberID")
+    = 0x0000000F,
+    MTRClusterBasicAttributeLocalConfigDisabledID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID")
+    = 0x00000010,
+    MTRClusterBasicAttributeReachableID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeReachableID")
+    = 0x00000011,
+    MTRClusterBasicAttributeUniqueIDID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeUniqueIDID")
+    = 0x00000012,
+    MTRClusterBasicAttributeCapabilityMinimaID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID")
+    = 0x00000013,
+    MTRClusterBasicAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBasicAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBasicAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBasicAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBasicAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Basic attributes
-    MTRClusterBasicAttributeDataModelRevisionID = 0x00000000,
-    MTRClusterBasicAttributeVendorNameID = 0x00000001,
-    MTRClusterBasicAttributeVendorIDID = 0x00000002,
-    MTRClusterBasicAttributeProductNameID = 0x00000003,
-    MTRClusterBasicAttributeProductIDID = 0x00000004,
-    MTRClusterBasicAttributeNodeLabelID = 0x00000005,
-    MTRClusterBasicAttributeLocationID = 0x00000006,
-    MTRClusterBasicAttributeHardwareVersionID = 0x00000007,
-    MTRClusterBasicAttributeHardwareVersionStringID = 0x00000008,
-    MTRClusterBasicAttributeSoftwareVersionID = 0x00000009,
-    MTRClusterBasicAttributeSoftwareVersionStringID = 0x0000000A,
-    MTRClusterBasicAttributeManufacturingDateID = 0x0000000B,
-    MTRClusterBasicAttributePartNumberID = 0x0000000C,
-    MTRClusterBasicAttributeProductURLID = 0x0000000D,
-    MTRClusterBasicAttributeProductLabelID = 0x0000000E,
-    MTRClusterBasicAttributeSerialNumberID = 0x0000000F,
-    MTRClusterBasicAttributeLocalConfigDisabledID = 0x00000010,
-    MTRClusterBasicAttributeReachableID = 0x00000011,
-    MTRClusterBasicAttributeUniqueIDID = 0x00000012,
-    MTRClusterBasicAttributeCapabilityMinimaID = 0x00000013,
-    MTRClusterBasicAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBasicAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBasicAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBasicAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBasicAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterBasicAttributeVendorNameID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterBasicAttributeVendorIDID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterBasicAttributeProductNameID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterBasicAttributeProductIDID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterBasicAttributeNodeLabelID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterBasicAttributeLocationID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterBasicAttributePartNumberID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterBasicAttributeProductURLID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterBasicAttributeProductLabelID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterBasicAttributeSerialNumberID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterBasicAttributeReachableID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterBasicAttributeUniqueIDID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBasicAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBasicAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OtaSoftwareUpdateProvider deprecated attribute names
+    MTRClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOtaSoftwareUpdateProviderAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOtaSoftwareUpdateProviderAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OtaSoftwareUpdateProvider attributes
-    MTRClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOtaSoftwareUpdateProviderAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOtaSoftwareUpdateProviderAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OtaSoftwareUpdateRequestor deprecated attribute names
+    MTRClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID")
+    = 0x00000000,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID")
+    = 0x00000001,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID")
+    = 0x00000002,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID")
+    = 0x00000003,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OtaSoftwareUpdateRequestor attributes
-    MTRClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID = 0x00000000,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID = 0x00000001,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID = 0x00000002,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID = 0x00000003,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster LocalizationConfiguration deprecated attribute names
+    MTRClusterLocalizationConfigurationAttributeActiveLocaleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeActiveLocaleID")
+    = 0x00000000,
+    MTRClusterLocalizationConfigurationAttributeSupportedLocalesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeSupportedLocalesID")
+    = 0x00000001,
+    MTRClusterLocalizationConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterLocalizationConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterLocalizationConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterLocalizationConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterLocalizationConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLocalizationConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster LocalizationConfiguration attributes
-    MTRClusterLocalizationConfigurationAttributeActiveLocaleID = 0x00000000,
-    MTRClusterLocalizationConfigurationAttributeSupportedLocalesID = 0x00000001,
-    MTRClusterLocalizationConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterLocalizationConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterLocalizationConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterLocalizationConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterLocalizationConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeActiveLocaleID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeSupportedLocalesID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterLocalizationConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster TimeFormatLocalization deprecated attribute names
+    MTRClusterTimeFormatLocalizationAttributeHourFormatID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeHourFormatID")
+    = 0x00000000,
+    MTRClusterTimeFormatLocalizationAttributeActiveCalendarTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeActiveCalendarTypeID")
+    = 0x00000001,
+    MTRClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID")
+    = 0x00000002,
+    MTRClusterTimeFormatLocalizationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTimeFormatLocalizationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTimeFormatLocalizationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTimeFormatLocalizationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTimeFormatLocalizationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster TimeFormatLocalization attributes
-    MTRClusterTimeFormatLocalizationAttributeHourFormatID = 0x00000000,
-    MTRClusterTimeFormatLocalizationAttributeActiveCalendarTypeID = 0x00000001,
-    MTRClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID = 0x00000002,
-    MTRClusterTimeFormatLocalizationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTimeFormatLocalizationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTimeFormatLocalizationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTimeFormatLocalizationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTimeFormatLocalizationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeHourFormatID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeActiveCalendarTypeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster UnitLocalization deprecated attribute names
+    MTRClusterUnitLocalizationAttributeTemperatureUnitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeTemperatureUnitID")
+    = 0x00000000,
+    MTRClusterUnitLocalizationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterUnitLocalizationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterUnitLocalizationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterUnitLocalizationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterUnitLocalizationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitLocalizationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster UnitLocalization attributes
-    MTRClusterUnitLocalizationAttributeTemperatureUnitID = 0x00000000,
-    MTRClusterUnitLocalizationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterUnitLocalizationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterUnitLocalizationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterUnitLocalizationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterUnitLocalizationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeTemperatureUnitID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterUnitLocalizationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster PowerSourceConfiguration deprecated attribute names
+    MTRClusterPowerSourceConfigurationAttributeSourcesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeSourcesID")
+    = 0x00000000,
+    MTRClusterPowerSourceConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterPowerSourceConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterPowerSourceConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterPowerSourceConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterPowerSourceConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster PowerSourceConfiguration attributes
-    MTRClusterPowerSourceConfigurationAttributeSourcesID = 0x00000000,
-    MTRClusterPowerSourceConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterPowerSourceConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterPowerSourceConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterPowerSourceConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterPowerSourceConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeSourcesID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster PowerSource deprecated attribute names
+    MTRClusterPowerSourceAttributeStatusID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterPowerSourceAttributeStatusID")
+    = 0x00000000,
+    MTRClusterPowerSourceAttributeOrderID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterPowerSourceAttributeOrderID")
+    = 0x00000001,
+    MTRClusterPowerSourceAttributeDescriptionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeDescriptionID")
+    = 0x00000002,
+    MTRClusterPowerSourceAttributeWiredAssessedInputVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputVoltageID")
+    = 0x00000003,
+    MTRClusterPowerSourceAttributeWiredAssessedInputFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputFrequencyID")
+    = 0x00000004,
+    MTRClusterPowerSourceAttributeWiredCurrentTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredCurrentTypeID")
+    = 0x00000005,
+    MTRClusterPowerSourceAttributeWiredAssessedCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedCurrentID")
+    = 0x00000006,
+    MTRClusterPowerSourceAttributeWiredNominalVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredNominalVoltageID")
+    = 0x00000007,
+    MTRClusterPowerSourceAttributeWiredMaximumCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredMaximumCurrentID")
+    = 0x00000008,
+    MTRClusterPowerSourceAttributeWiredPresentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeWiredPresentID")
+    = 0x00000009,
+    MTRClusterPowerSourceAttributeActiveWiredFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeActiveWiredFaultsID")
+    = 0x0000000A,
+    MTRClusterPowerSourceAttributeBatVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatVoltageID")
+    = 0x0000000B,
+    MTRClusterPowerSourceAttributeBatPercentRemainingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatPercentRemainingID")
+    = 0x0000000C,
+    MTRClusterPowerSourceAttributeBatTimeRemainingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeRemainingID")
+    = 0x0000000D,
+    MTRClusterPowerSourceAttributeBatChargeLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeLevelID")
+    = 0x0000000E,
+    MTRClusterPowerSourceAttributeBatReplacementNeededID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementNeededID")
+    = 0x0000000F,
+    MTRClusterPowerSourceAttributeBatReplaceabilityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatReplaceabilityID")
+    = 0x00000010,
+    MTRClusterPowerSourceAttributeBatPresentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatPresentID")
+    = 0x00000011,
+    MTRClusterPowerSourceAttributeActiveBatFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatFaultsID")
+    = 0x00000012,
+    MTRClusterPowerSourceAttributeBatReplacementDescriptionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementDescriptionID")
+    = 0x00000013,
+    MTRClusterPowerSourceAttributeBatCommonDesignationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatCommonDesignationID")
+    = 0x00000014,
+    MTRClusterPowerSourceAttributeBatANSIDesignationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatANSIDesignationID")
+    = 0x00000015,
+    MTRClusterPowerSourceAttributeBatIECDesignationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatIECDesignationID")
+    = 0x00000016,
+    MTRClusterPowerSourceAttributeBatApprovedChemistryID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatApprovedChemistryID")
+    = 0x00000017,
+    MTRClusterPowerSourceAttributeBatCapacityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatCapacityID")
+    = 0x00000018,
+    MTRClusterPowerSourceAttributeBatQuantityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatQuantityID")
+    = 0x00000019,
+    MTRClusterPowerSourceAttributeBatChargeStateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeStateID")
+    = 0x0000001A,
+    MTRClusterPowerSourceAttributeBatTimeToFullChargeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeToFullChargeID")
+    = 0x0000001B,
+    MTRClusterPowerSourceAttributeBatFunctionalWhileChargingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatFunctionalWhileChargingID")
+    = 0x0000001C,
+    MTRClusterPowerSourceAttributeBatChargingCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeBatChargingCurrentID")
+    = 0x0000001D,
+    MTRClusterPowerSourceAttributeActiveBatChargeFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatChargeFaultsID")
+    = 0x0000001E,
+    MTRClusterPowerSourceAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterPowerSourceAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterPowerSourceAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterPowerSourceAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterPowerSourceAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPowerSourceAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster PowerSource attributes
-    MTRClusterPowerSourceAttributeStatusID = 0x00000000,
-    MTRClusterPowerSourceAttributeOrderID = 0x00000001,
-    MTRClusterPowerSourceAttributeDescriptionID = 0x00000002,
-    MTRClusterPowerSourceAttributeWiredAssessedInputVoltageID = 0x00000003,
-    MTRClusterPowerSourceAttributeWiredAssessedInputFrequencyID = 0x00000004,
-    MTRClusterPowerSourceAttributeWiredCurrentTypeID = 0x00000005,
-    MTRClusterPowerSourceAttributeWiredAssessedCurrentID = 0x00000006,
-    MTRClusterPowerSourceAttributeWiredNominalVoltageID = 0x00000007,
-    MTRClusterPowerSourceAttributeWiredMaximumCurrentID = 0x00000008,
-    MTRClusterPowerSourceAttributeWiredPresentID = 0x00000009,
-    MTRClusterPowerSourceAttributeActiveWiredFaultsID = 0x0000000A,
-    MTRClusterPowerSourceAttributeBatVoltageID = 0x0000000B,
-    MTRClusterPowerSourceAttributeBatPercentRemainingID = 0x0000000C,
-    MTRClusterPowerSourceAttributeBatTimeRemainingID = 0x0000000D,
-    MTRClusterPowerSourceAttributeBatChargeLevelID = 0x0000000E,
-    MTRClusterPowerSourceAttributeBatReplacementNeededID = 0x0000000F,
-    MTRClusterPowerSourceAttributeBatReplaceabilityID = 0x00000010,
-    MTRClusterPowerSourceAttributeBatPresentID = 0x00000011,
-    MTRClusterPowerSourceAttributeActiveBatFaultsID = 0x00000012,
-    MTRClusterPowerSourceAttributeBatReplacementDescriptionID = 0x00000013,
-    MTRClusterPowerSourceAttributeBatCommonDesignationID = 0x00000014,
-    MTRClusterPowerSourceAttributeBatANSIDesignationID = 0x00000015,
-    MTRClusterPowerSourceAttributeBatIECDesignationID = 0x00000016,
-    MTRClusterPowerSourceAttributeBatApprovedChemistryID = 0x00000017,
-    MTRClusterPowerSourceAttributeBatCapacityID = 0x00000018,
-    MTRClusterPowerSourceAttributeBatQuantityID = 0x00000019,
-    MTRClusterPowerSourceAttributeBatChargeStateID = 0x0000001A,
-    MTRClusterPowerSourceAttributeBatTimeToFullChargeID = 0x0000001B,
-    MTRClusterPowerSourceAttributeBatFunctionalWhileChargingID = 0x0000001C,
-    MTRClusterPowerSourceAttributeBatChargingCurrentID = 0x0000001D,
-    MTRClusterPowerSourceAttributeActiveBatChargeFaultsID = 0x0000001E,
-    MTRClusterPowerSourceAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterPowerSourceAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterPowerSourceAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterPowerSourceAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterPowerSourceAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterPowerSourceAttributeStatusID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterPowerSourceAttributeOrderID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterPowerSourceAttributeDescriptionID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputVoltageID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputFrequencyID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredCurrentTypeID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedCurrentID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredNominalVoltageID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredMaximumCurrentID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterPowerSourceAttributeWiredPresentID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterPowerSourceAttributeActiveWiredFaultsID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatVoltageID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatPercentRemainingID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeRemainingID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeLevelID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementNeededID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatReplaceabilityID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatPresentID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatFaultsID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementDescriptionID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatCommonDesignationID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatANSIDesignationID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatIECDesignationID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatApprovedChemistryID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatCapacityID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatQuantityID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeStateID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeToFullChargeID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatFunctionalWhileChargingID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterPowerSourceAttributeBatChargingCurrentID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatChargeFaultsID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRAttributeIDTypeClusterPowerSourceAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterPowerSourceAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterPowerSourceAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterPowerSourceAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterPowerSourceAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster GeneralCommissioning deprecated attribute names
+    MTRClusterGeneralCommissioningAttributeBreadcrumbID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeBreadcrumbID")
+    = 0x00000000,
+    MTRClusterGeneralCommissioningAttributeBasicCommissioningInfoID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeBasicCommissioningInfoID")
+    = 0x00000001,
+    MTRClusterGeneralCommissioningAttributeRegulatoryConfigID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeRegulatoryConfigID")
+    = 0x00000002,
+    MTRClusterGeneralCommissioningAttributeLocationCapabilityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeLocationCapabilityID")
+    = 0x00000003,
+    MTRClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID")
+    = 0x00000004,
+    MTRClusterGeneralCommissioningAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterGeneralCommissioningAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterGeneralCommissioningAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterGeneralCommissioningAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterGeneralCommissioningAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralCommissioningAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster GeneralCommissioning attributes
-    MTRClusterGeneralCommissioningAttributeBreadcrumbID = 0x00000000,
-    MTRClusterGeneralCommissioningAttributeBasicCommissioningInfoID = 0x00000001,
-    MTRClusterGeneralCommissioningAttributeRegulatoryConfigID = 0x00000002,
-    MTRClusterGeneralCommissioningAttributeLocationCapabilityID = 0x00000003,
-    MTRClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID = 0x00000004,
-    MTRClusterGeneralCommissioningAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterGeneralCommissioningAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterGeneralCommissioningAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterGeneralCommissioningAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterGeneralCommissioningAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeBreadcrumbID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeBasicCommissioningInfoID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeRegulatoryConfigID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeLocationCapabilityID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterGeneralCommissioningAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster NetworkCommissioning deprecated attribute names
+    MTRClusterNetworkCommissioningAttributeMaxNetworksID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeMaxNetworksID")
+    = 0x00000000,
+    MTRClusterNetworkCommissioningAttributeNetworksID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeNetworksID")
+    = 0x00000001,
+    MTRClusterNetworkCommissioningAttributeScanMaxTimeSecondsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeScanMaxTimeSecondsID")
+    = 0x00000002,
+    MTRClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID")
+    = 0x00000003,
+    MTRClusterNetworkCommissioningAttributeInterfaceEnabledID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeInterfaceEnabledID")
+    = 0x00000004,
+    MTRClusterNetworkCommissioningAttributeLastNetworkingStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkingStatusID")
+    = 0x00000005,
+    MTRClusterNetworkCommissioningAttributeLastNetworkIDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkIDID")
+    = 0x00000006,
+    MTRClusterNetworkCommissioningAttributeLastConnectErrorValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastConnectErrorValueID")
+    = 0x00000007,
+    MTRClusterNetworkCommissioningAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterNetworkCommissioningAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterNetworkCommissioningAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterNetworkCommissioningAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterNetworkCommissioningAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterNetworkCommissioningAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster NetworkCommissioning attributes
-    MTRClusterNetworkCommissioningAttributeMaxNetworksID = 0x00000000,
-    MTRClusterNetworkCommissioningAttributeNetworksID = 0x00000001,
-    MTRClusterNetworkCommissioningAttributeScanMaxTimeSecondsID = 0x00000002,
-    MTRClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID = 0x00000003,
-    MTRClusterNetworkCommissioningAttributeInterfaceEnabledID = 0x00000004,
-    MTRClusterNetworkCommissioningAttributeLastNetworkingStatusID = 0x00000005,
-    MTRClusterNetworkCommissioningAttributeLastNetworkIDID = 0x00000006,
-    MTRClusterNetworkCommissioningAttributeLastConnectErrorValueID = 0x00000007,
-    MTRClusterNetworkCommissioningAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterNetworkCommissioningAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterNetworkCommissioningAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterNetworkCommissioningAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterNetworkCommissioningAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeMaxNetworksID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeNetworksID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeScanMaxTimeSecondsID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeInterfaceEnabledID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkingStatusID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkIDID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastConnectErrorValueID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterNetworkCommissioningAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster DiagnosticLogs deprecated attribute names
+    MTRClusterDiagnosticLogsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDiagnosticLogsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterDiagnosticLogsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDiagnosticLogsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterDiagnosticLogsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDiagnosticLogsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterDiagnosticLogsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDiagnosticLogsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterDiagnosticLogsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDiagnosticLogsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster DiagnosticLogs attributes
-    MTRClusterDiagnosticLogsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterDiagnosticLogsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterDiagnosticLogsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterDiagnosticLogsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterDiagnosticLogsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterDiagnosticLogsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterDiagnosticLogsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterDiagnosticLogsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterDiagnosticLogsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterDiagnosticLogsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster GeneralDiagnostics deprecated attribute names
+    MTRClusterGeneralDiagnosticsAttributeNetworkInterfacesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeNetworkInterfacesID")
+    = 0x00000000,
+    MTRClusterGeneralDiagnosticsAttributeRebootCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeRebootCountID")
+    = 0x00000001,
+    MTRClusterGeneralDiagnosticsAttributeUpTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeUpTimeID")
+    = 0x00000002,
+    MTRClusterGeneralDiagnosticsAttributeTotalOperationalHoursID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTotalOperationalHoursID")
+    = 0x00000003,
+    MTRClusterGeneralDiagnosticsAttributeBootReasonsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeBootReasonsID")
+    = 0x00000004,
+    MTRClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID")
+    = 0x00000005,
+    MTRClusterGeneralDiagnosticsAttributeActiveRadioFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveRadioFaultsID")
+    = 0x00000006,
+    MTRClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID")
+    = 0x00000007,
+    MTRClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID")
+    = 0x00000008,
+    MTRClusterGeneralDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterGeneralDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterGeneralDiagnosticsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterGeneralDiagnosticsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterGeneralDiagnosticsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster GeneralDiagnostics attributes
-    MTRClusterGeneralDiagnosticsAttributeNetworkInterfacesID = 0x00000000,
-    MTRClusterGeneralDiagnosticsAttributeRebootCountID = 0x00000001,
-    MTRClusterGeneralDiagnosticsAttributeUpTimeID = 0x00000002,
-    MTRClusterGeneralDiagnosticsAttributeTotalOperationalHoursID = 0x00000003,
-    MTRClusterGeneralDiagnosticsAttributeBootReasonsID = 0x00000004,
-    MTRClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID = 0x00000005,
-    MTRClusterGeneralDiagnosticsAttributeActiveRadioFaultsID = 0x00000006,
-    MTRClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID = 0x00000007,
-    MTRClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID = 0x00000008,
-    MTRClusterGeneralDiagnosticsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterGeneralDiagnosticsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterGeneralDiagnosticsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterGeneralDiagnosticsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterGeneralDiagnosticsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeNetworkInterfacesID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeRebootCountID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeUpTimeID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTotalOperationalHoursID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeBootReasonsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveRadioFaultsID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster SoftwareDiagnostics deprecated attribute names
+    MTRClusterSoftwareDiagnosticsAttributeThreadMetricsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeThreadMetricsID")
+    = 0x00000000,
+    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID")
+    = 0x00000001,
+    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID")
+    = 0x00000002,
+    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID")
+    = 0x00000003,
+    MTRClusterSoftwareDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterSoftwareDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterSoftwareDiagnosticsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterSoftwareDiagnosticsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterSoftwareDiagnosticsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster SoftwareDiagnostics attributes
-    MTRClusterSoftwareDiagnosticsAttributeThreadMetricsID = 0x00000000,
-    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID = 0x00000001,
-    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID = 0x00000002,
-    MTRClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID = 0x00000003,
-    MTRClusterSoftwareDiagnosticsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterSoftwareDiagnosticsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterSoftwareDiagnosticsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterSoftwareDiagnosticsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterSoftwareDiagnosticsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeThreadMetricsID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ThreadNetworkDiagnostics deprecated attribute names
+    MTRClusterThreadNetworkDiagnosticsAttributeChannelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelID")
+    = 0x00000000,
+    MTRClusterThreadNetworkDiagnosticsAttributeRoutingRoleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRoutingRoleID")
+    = 0x00000001,
+    MTRClusterThreadNetworkDiagnosticsAttributeNetworkNameID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNetworkNameID")
+    = 0x00000002,
+    MTRClusterThreadNetworkDiagnosticsAttributePanIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePanIdID")
+    = 0x00000003,
+    MTRClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID")
+    = 0x00000004,
+    MTRClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID")
+    = 0x00000005,
+    MTRClusterThreadNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOverrunCountID")
+    = 0x00000006,
+    MTRClusterThreadNetworkDiagnosticsAttributeNeighborTableListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID")
+    = 0x00000007,
+    MTRClusterThreadNetworkDiagnosticsAttributeRouteTableListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID")
+    = 0x00000008,
+    MTRClusterThreadNetworkDiagnosticsAttributePartitionIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdID")
+    = 0x00000009,
+    MTRClusterThreadNetworkDiagnosticsAttributeWeightingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeWeightingID")
+    = 0x0000000A,
+    MTRClusterThreadNetworkDiagnosticsAttributeDataVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDataVersionID")
+    = 0x0000000B,
+    MTRClusterThreadNetworkDiagnosticsAttributeStableDataVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeStableDataVersionID")
+    = 0x0000000C,
+    MTRClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID")
+    = 0x0000000D,
+    MTRClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID")
+    = 0x0000000E,
+    MTRClusterThreadNetworkDiagnosticsAttributeChildRoleCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChildRoleCountID")
+    = 0x0000000F,
+    MTRClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID")
+    = 0x00000010,
+    MTRClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID")
+    = 0x00000011,
+    MTRClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID")
+    = 0x00000012,
+    MTRClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID")
+    = 0x00000013,
+    MTRClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID")
+    = 0x00000014,
+    MTRClusterThreadNetworkDiagnosticsAttributeParentChangeCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeParentChangeCountID")
+    = 0x00000015,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxTotalCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxTotalCountID")
+    = 0x00000016,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID")
+    = 0x00000017,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID")
+    = 0x00000018,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID")
+    = 0x00000019,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxAckedCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckedCountID")
+    = 0x0000001A,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID")
+    = 0x0000001B,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxDataCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataCountID")
+    = 0x0000001C,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID")
+    = 0x0000001D,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID")
+    = 0x0000001E,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID")
+    = 0x0000001F,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxOtherCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxOtherCountID")
+    = 0x00000020,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxRetryCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxRetryCountID")
+    = 0x00000021,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID")
+    = 0x00000022,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID")
+    = 0x00000023,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID")
+    = 0x00000024,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID")
+    = 0x00000025,
+    MTRClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID")
+    = 0x00000026,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxTotalCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxTotalCountID")
+    = 0x00000027,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID")
+    = 0x00000028,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID")
+    = 0x00000029,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxDataCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataCountID")
+    = 0x0000002A,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID")
+    = 0x0000002B,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID")
+    = 0x0000002C,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID")
+    = 0x0000002D,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxOtherCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxOtherCountID")
+    = 0x0000002E,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID")
+    = 0x0000002F,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID")
+    = 0x00000030,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID")
+    = 0x00000031,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID")
+    = 0x00000032,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID")
+    = 0x00000033,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID")
+    = 0x00000034,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID")
+    = 0x00000035,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID")
+    = 0x00000036,
+    MTRClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID")
+    = 0x00000037,
+    MTRClusterThreadNetworkDiagnosticsAttributeActiveTimestampID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveTimestampID")
+    = 0x00000038,
+    MTRClusterThreadNetworkDiagnosticsAttributePendingTimestampID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePendingTimestampID")
+    = 0x00000039,
+    MTRClusterThreadNetworkDiagnosticsAttributeDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDelayID")
+    = 0x0000003A,
+    MTRClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID")
+    = 0x0000003B,
+    MTRClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID")
+    = 0x0000003C,
+    MTRClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID")
+    = 0x0000003D,
+    MTRClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID")
+    = 0x0000003E,
+    MTRClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterThreadNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterThreadNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterThreadNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ThreadNetworkDiagnostics attributes
-    MTRClusterThreadNetworkDiagnosticsAttributeChannelID = 0x00000000,
-    MTRClusterThreadNetworkDiagnosticsAttributeRoutingRoleID = 0x00000001,
-    MTRClusterThreadNetworkDiagnosticsAttributeNetworkNameID = 0x00000002,
-    MTRClusterThreadNetworkDiagnosticsAttributePanIdID = 0x00000003,
-    MTRClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID = 0x00000004,
-    MTRClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID = 0x00000005,
-    MTRClusterThreadNetworkDiagnosticsAttributeOverrunCountID = 0x00000006,
-    MTRClusterThreadNetworkDiagnosticsAttributeNeighborTableListID = 0x00000007,
-    MTRClusterThreadNetworkDiagnosticsAttributeRouteTableListID = 0x00000008,
-    MTRClusterThreadNetworkDiagnosticsAttributePartitionIdID = 0x00000009,
-    MTRClusterThreadNetworkDiagnosticsAttributeWeightingID = 0x0000000A,
-    MTRClusterThreadNetworkDiagnosticsAttributeDataVersionID = 0x0000000B,
-    MTRClusterThreadNetworkDiagnosticsAttributeStableDataVersionID = 0x0000000C,
-    MTRClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID = 0x0000000D,
-    MTRClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID = 0x0000000E,
-    MTRClusterThreadNetworkDiagnosticsAttributeChildRoleCountID = 0x0000000F,
-    MTRClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID = 0x00000010,
-    MTRClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID = 0x00000011,
-    MTRClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID = 0x00000012,
-    MTRClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID = 0x00000013,
-    MTRClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID = 0x00000014,
-    MTRClusterThreadNetworkDiagnosticsAttributeParentChangeCountID = 0x00000015,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxTotalCountID = 0x00000016,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID = 0x00000017,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID = 0x00000018,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID = 0x00000019,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxAckedCountID = 0x0000001A,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID = 0x0000001B,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxDataCountID = 0x0000001C,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID = 0x0000001D,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID = 0x0000001E,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID = 0x0000001F,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxOtherCountID = 0x00000020,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxRetryCountID = 0x00000021,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID = 0x00000022,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID = 0x00000023,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID = 0x00000024,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID = 0x00000025,
-    MTRClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID = 0x00000026,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxTotalCountID = 0x00000027,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID = 0x00000028,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID = 0x00000029,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxDataCountID = 0x0000002A,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID = 0x0000002B,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID = 0x0000002C,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID = 0x0000002D,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxOtherCountID = 0x0000002E,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID = 0x0000002F,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID = 0x00000030,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID = 0x00000031,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID = 0x00000032,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID = 0x00000033,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID = 0x00000034,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID = 0x00000035,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID = 0x00000036,
-    MTRClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID = 0x00000037,
-    MTRClusterThreadNetworkDiagnosticsAttributeActiveTimestampID = 0x00000038,
-    MTRClusterThreadNetworkDiagnosticsAttributePendingTimestampID = 0x00000039,
-    MTRClusterThreadNetworkDiagnosticsAttributeDelayID = 0x0000003A,
-    MTRClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID = 0x0000003B,
-    MTRClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID = 0x0000003C,
-    MTRClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID = 0x0000003D,
-    MTRClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID = 0x0000003E,
-    MTRClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterThreadNetworkDiagnosticsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterThreadNetworkDiagnosticsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterThreadNetworkDiagnosticsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRoutingRoleID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNetworkNameID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePanIdID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeWeightingID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDataVersionID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeStableDataVersionID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChildRoleCountID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeParentChangeCountID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxTotalCountID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckedCountID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataCountID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID MTR_NEWLY_AVAILABLE = 0x0000001F,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxOtherCountID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxRetryCountID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID MTR_NEWLY_AVAILABLE = 0x00000026,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxTotalCountID MTR_NEWLY_AVAILABLE = 0x00000027,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataCountID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID MTR_NEWLY_AVAILABLE = 0x0000002B,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID MTR_NEWLY_AVAILABLE = 0x0000002C,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID MTR_NEWLY_AVAILABLE = 0x0000002D,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxOtherCountID MTR_NEWLY_AVAILABLE = 0x0000002E,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID MTR_NEWLY_AVAILABLE = 0x0000002F,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID MTR_NEWLY_AVAILABLE = 0x00000033,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID MTR_NEWLY_AVAILABLE = 0x00000034,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID MTR_NEWLY_AVAILABLE = 0x00000035,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID MTR_NEWLY_AVAILABLE = 0x00000036,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID MTR_NEWLY_AVAILABLE = 0x00000037,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveTimestampID MTR_NEWLY_AVAILABLE = 0x00000038,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePendingTimestampID MTR_NEWLY_AVAILABLE = 0x00000039,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDelayID MTR_NEWLY_AVAILABLE = 0x0000003A,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID MTR_NEWLY_AVAILABLE = 0x0000003B,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID MTR_NEWLY_AVAILABLE = 0x0000003C,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID MTR_NEWLY_AVAILABLE = 0x0000003D,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID MTR_NEWLY_AVAILABLE = 0x0000003E,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster WiFiNetworkDiagnostics deprecated attribute names
+    MTRClusterWiFiNetworkDiagnosticsAttributeBssidID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID")
+    = 0x00000000,
+    MTRClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID")
+    = 0x00000001,
+    MTRClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID")
+    = 0x00000002,
+    MTRClusterWiFiNetworkDiagnosticsAttributeChannelNumberID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeChannelNumberID")
+    = 0x00000003,
+    MTRClusterWiFiNetworkDiagnosticsAttributeRssiID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID")
+    = 0x00000004,
+    MTRClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID")
+    = 0x00000005,
+    MTRClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID")
+    = 0x00000006,
+    MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID")
+    = 0x00000007,
+    MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID")
+    = 0x00000008,
+    MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID")
+    = 0x00000009,
+    MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID")
+    = 0x0000000A,
+    MTRClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID")
+    = 0x0000000B,
+    MTRClusterWiFiNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeOverrunCountID")
+    = 0x0000000C,
+    MTRClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterWiFiNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterWiFiNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster WiFiNetworkDiagnostics attributes
-    MTRClusterWiFiNetworkDiagnosticsAttributeBssidID = 0x00000000,
-    MTRClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID = 0x00000001,
-    MTRClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID = 0x00000002,
-    MTRClusterWiFiNetworkDiagnosticsAttributeChannelNumberID = 0x00000003,
-    MTRClusterWiFiNetworkDiagnosticsAttributeRssiID = 0x00000004,
-    MTRClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID = 0x00000005,
-    MTRClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID = 0x00000006,
-    MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID = 0x00000007,
-    MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID = 0x00000008,
-    MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID = 0x00000009,
-    MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID = 0x0000000A,
-    MTRClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID = 0x0000000B,
-    MTRClusterWiFiNetworkDiagnosticsAttributeOverrunCountID = 0x0000000C,
-    MTRClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterWiFiNetworkDiagnosticsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterWiFiNetworkDiagnosticsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeChannelNumberID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster EthernetNetworkDiagnostics deprecated attribute names
+    MTRClusterEthernetNetworkDiagnosticsAttributePHYRateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePHYRateID")
+    = 0x00000000,
+    MTRClusterEthernetNetworkDiagnosticsAttributeFullDuplexID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFullDuplexID")
+    = 0x00000001,
+    MTRClusterEthernetNetworkDiagnosticsAttributePacketRxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketRxCountID")
+    = 0x00000002,
+    MTRClusterEthernetNetworkDiagnosticsAttributePacketTxCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketTxCountID")
+    = 0x00000003,
+    MTRClusterEthernetNetworkDiagnosticsAttributeTxErrCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTxErrCountID")
+    = 0x00000004,
+    MTRClusterEthernetNetworkDiagnosticsAttributeCollisionCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCollisionCountID")
+    = 0x00000005,
+    MTRClusterEthernetNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeOverrunCountID")
+    = 0x00000006,
+    MTRClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID")
+    = 0x00000007,
+    MTRClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID")
+    = 0x00000008,
+    MTRClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterEthernetNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterEthernetNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster EthernetNetworkDiagnostics attributes
-    MTRClusterEthernetNetworkDiagnosticsAttributePHYRateID = 0x00000000,
-    MTRClusterEthernetNetworkDiagnosticsAttributeFullDuplexID = 0x00000001,
-    MTRClusterEthernetNetworkDiagnosticsAttributePacketRxCountID = 0x00000002,
-    MTRClusterEthernetNetworkDiagnosticsAttributePacketTxCountID = 0x00000003,
-    MTRClusterEthernetNetworkDiagnosticsAttributeTxErrCountID = 0x00000004,
-    MTRClusterEthernetNetworkDiagnosticsAttributeCollisionCountID = 0x00000005,
-    MTRClusterEthernetNetworkDiagnosticsAttributeOverrunCountID = 0x00000006,
-    MTRClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID = 0x00000007,
-    MTRClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID = 0x00000008,
-    MTRClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterEthernetNetworkDiagnosticsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterEthernetNetworkDiagnosticsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePHYRateID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFullDuplexID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketRxCountID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketTxCountID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTxErrCountID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCollisionCountID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeOverrunCountID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster TimeSynchronization deprecated attribute names
+    MTRClusterTimeSynchronizationAttributeUTCTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeUTCTimeID")
+    = 0x00000000,
+    MTRClusterTimeSynchronizationAttributeGranularityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeGranularityID")
+    = 0x00000001,
+    MTRClusterTimeSynchronizationAttributeTimeSourceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeSourceID")
+    = 0x00000002,
+    MTRClusterTimeSynchronizationAttributeTrustedTimeNodeIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeTrustedTimeNodeIdID")
+    = 0x00000003,
+    MTRClusterTimeSynchronizationAttributeDefaultNtpID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeDefaultNtpID")
+    = 0x00000004,
+    MTRClusterTimeSynchronizationAttributeTimeZoneID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeZoneID")
+    = 0x00000005,
+    MTRClusterTimeSynchronizationAttributeDstOffsetID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeDstOffsetID")
+    = 0x00000006,
+    MTRClusterTimeSynchronizationAttributeLocalTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeLocalTimeID")
+    = 0x00000007,
+    MTRClusterTimeSynchronizationAttributeTimeZoneDatabaseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeZoneDatabaseID")
+    = 0x00000008,
+    MTRClusterTimeSynchronizationAttributeNtpServerPortID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeNtpServerPortID")
+    = 0x00000009,
+    MTRClusterTimeSynchronizationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTimeSynchronizationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTimeSynchronizationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTimeSynchronizationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTimeSynchronizationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTimeSynchronizationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster TimeSynchronization attributes
-    MTRClusterTimeSynchronizationAttributeUTCTimeID = 0x00000000,
-    MTRClusterTimeSynchronizationAttributeGranularityID = 0x00000001,
-    MTRClusterTimeSynchronizationAttributeTimeSourceID = 0x00000002,
-    MTRClusterTimeSynchronizationAttributeTrustedTimeNodeIdID = 0x00000003,
-    MTRClusterTimeSynchronizationAttributeDefaultNtpID = 0x00000004,
-    MTRClusterTimeSynchronizationAttributeTimeZoneID = 0x00000005,
-    MTRClusterTimeSynchronizationAttributeDstOffsetID = 0x00000006,
-    MTRClusterTimeSynchronizationAttributeLocalTimeID = 0x00000007,
-    MTRClusterTimeSynchronizationAttributeTimeZoneDatabaseID = 0x00000008,
-    MTRClusterTimeSynchronizationAttributeNtpServerPortID = 0x00000009,
-    MTRClusterTimeSynchronizationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTimeSynchronizationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTimeSynchronizationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTimeSynchronizationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTimeSynchronizationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeUTCTimeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeGranularityID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeSourceID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeTrustedTimeNodeIdID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeDefaultNtpID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeZoneID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeDstOffsetID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeLocalTimeID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeTimeZoneDatabaseID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeNtpServerPortID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterTimeSynchronizationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster BridgedDeviceBasic deprecated attribute names
+    MTRClusterBridgedDeviceBasicAttributeVendorNameID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorNameID")
+    = 0x00000001,
+    MTRClusterBridgedDeviceBasicAttributeVendorIDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorIDID")
+    = 0x00000002,
+    MTRClusterBridgedDeviceBasicAttributeProductNameID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductNameID")
+    = 0x00000003,
+    MTRClusterBridgedDeviceBasicAttributeNodeLabelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeNodeLabelID")
+    = 0x00000005,
+    MTRClusterBridgedDeviceBasicAttributeHardwareVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionID")
+    = 0x00000007,
+    MTRClusterBridgedDeviceBasicAttributeHardwareVersionStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionStringID")
+    = 0x00000008,
+    MTRClusterBridgedDeviceBasicAttributeSoftwareVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionID")
+    = 0x00000009,
+    MTRClusterBridgedDeviceBasicAttributeSoftwareVersionStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionStringID")
+    = 0x0000000A,
+    MTRClusterBridgedDeviceBasicAttributeManufacturingDateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeManufacturingDateID")
+    = 0x0000000B,
+    MTRClusterBridgedDeviceBasicAttributePartNumberID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributePartNumberID")
+    = 0x0000000C,
+    MTRClusterBridgedDeviceBasicAttributeProductURLID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductURLID")
+    = 0x0000000D,
+    MTRClusterBridgedDeviceBasicAttributeProductLabelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductLabelID")
+    = 0x0000000E,
+    MTRClusterBridgedDeviceBasicAttributeSerialNumberID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSerialNumberID")
+    = 0x0000000F,
+    MTRClusterBridgedDeviceBasicAttributeReachableID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeReachableID")
+    = 0x00000011,
+    MTRClusterBridgedDeviceBasicAttributeUniqueIDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeUniqueIDID")
+    = 0x00000012,
+    MTRClusterBridgedDeviceBasicAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBridgedDeviceBasicAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBridgedDeviceBasicAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBridgedDeviceBasicAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBridgedDeviceBasicAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster BridgedDeviceBasic attributes
-    MTRClusterBridgedDeviceBasicAttributeVendorNameID = 0x00000001,
-    MTRClusterBridgedDeviceBasicAttributeVendorIDID = 0x00000002,
-    MTRClusterBridgedDeviceBasicAttributeProductNameID = 0x00000003,
-    MTRClusterBridgedDeviceBasicAttributeNodeLabelID = 0x00000005,
-    MTRClusterBridgedDeviceBasicAttributeHardwareVersionID = 0x00000007,
-    MTRClusterBridgedDeviceBasicAttributeHardwareVersionStringID = 0x00000008,
-    MTRClusterBridgedDeviceBasicAttributeSoftwareVersionID = 0x00000009,
-    MTRClusterBridgedDeviceBasicAttributeSoftwareVersionStringID = 0x0000000A,
-    MTRClusterBridgedDeviceBasicAttributeManufacturingDateID = 0x0000000B,
-    MTRClusterBridgedDeviceBasicAttributePartNumberID = 0x0000000C,
-    MTRClusterBridgedDeviceBasicAttributeProductURLID = 0x0000000D,
-    MTRClusterBridgedDeviceBasicAttributeProductLabelID = 0x0000000E,
-    MTRClusterBridgedDeviceBasicAttributeSerialNumberID = 0x0000000F,
-    MTRClusterBridgedDeviceBasicAttributeReachableID = 0x00000011,
-    MTRClusterBridgedDeviceBasicAttributeUniqueIDID = 0x00000012,
-    MTRClusterBridgedDeviceBasicAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBridgedDeviceBasicAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBridgedDeviceBasicAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBridgedDeviceBasicAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBridgedDeviceBasicAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorNameID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorIDID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductNameID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeNodeLabelID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionStringID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionStringID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeManufacturingDateID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributePartNumberID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductURLID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductLabelID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSerialNumberID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeReachableID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeUniqueIDID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Switch deprecated attribute names
+    MTRClusterSwitchAttributeNumberOfPositionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeNumberOfPositionsID")
+    = 0x00000000,
+    MTRClusterSwitchAttributeCurrentPositionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeCurrentPositionID")
+    = 0x00000001,
+    MTRClusterSwitchAttributeMultiPressMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeMultiPressMaxID")
+    = 0x00000002,
+    MTRClusterSwitchAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterSwitchAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterSwitchAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterSwitchAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterSwitchAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterSwitchAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterSwitchAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Switch attributes
-    MTRClusterSwitchAttributeNumberOfPositionsID = 0x00000000,
-    MTRClusterSwitchAttributeCurrentPositionID = 0x00000001,
-    MTRClusterSwitchAttributeMultiPressMaxID = 0x00000002,
-    MTRClusterSwitchAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterSwitchAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterSwitchAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterSwitchAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterSwitchAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterSwitchAttributeNumberOfPositionsID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterSwitchAttributeCurrentPositionID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterSwitchAttributeMultiPressMaxID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterSwitchAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterSwitchAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterSwitchAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterSwitchAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterSwitchAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster AdministratorCommissioning deprecated attribute names
+    MTRClusterAdministratorCommissioningAttributeWindowStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeWindowStatusID")
+    = 0x00000000,
+    MTRClusterAdministratorCommissioningAttributeAdminFabricIndexID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminFabricIndexID")
+    = 0x00000001,
+    MTRClusterAdministratorCommissioningAttributeAdminVendorIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminVendorIdID")
+    = 0x00000002,
+    MTRClusterAdministratorCommissioningAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterAdministratorCommissioningAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterAdministratorCommissioningAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterAdministratorCommissioningAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterAdministratorCommissioningAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAdministratorCommissioningAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster AdministratorCommissioning attributes
-    MTRClusterAdministratorCommissioningAttributeWindowStatusID = 0x00000000,
-    MTRClusterAdministratorCommissioningAttributeAdminFabricIndexID = 0x00000001,
-    MTRClusterAdministratorCommissioningAttributeAdminVendorIdID = 0x00000002,
-    MTRClusterAdministratorCommissioningAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterAdministratorCommissioningAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterAdministratorCommissioningAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterAdministratorCommissioningAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterAdministratorCommissioningAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeWindowStatusID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminFabricIndexID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminVendorIdID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterAdministratorCommissioningAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OperationalCredentials deprecated attribute names
+    MTRClusterOperationalCredentialsAttributeNOCsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeNOCsID")
+    = 0x00000000,
+    MTRClusterOperationalCredentialsAttributeFabricsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeFabricsID")
+    = 0x00000001,
+    MTRClusterOperationalCredentialsAttributeSupportedFabricsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeSupportedFabricsID")
+    = 0x00000002,
+    MTRClusterOperationalCredentialsAttributeCommissionedFabricsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeCommissionedFabricsID")
+    = 0x00000003,
+    MTRClusterOperationalCredentialsAttributeTrustedRootCertificatesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeTrustedRootCertificatesID")
+    = 0x00000004,
+    MTRClusterOperationalCredentialsAttributeCurrentFabricIndexID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeCurrentFabricIndexID")
+    = 0x00000005,
+    MTRClusterOperationalCredentialsAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOperationalCredentialsAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOperationalCredentialsAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOperationalCredentialsAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOperationalCredentialsAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOperationalCredentialsAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OperationalCredentials attributes
-    MTRClusterOperationalCredentialsAttributeNOCsID = 0x00000000,
-    MTRClusterOperationalCredentialsAttributeFabricsID = 0x00000001,
-    MTRClusterOperationalCredentialsAttributeSupportedFabricsID = 0x00000002,
-    MTRClusterOperationalCredentialsAttributeCommissionedFabricsID = 0x00000003,
-    MTRClusterOperationalCredentialsAttributeTrustedRootCertificatesID = 0x00000004,
-    MTRClusterOperationalCredentialsAttributeCurrentFabricIndexID = 0x00000005,
-    MTRClusterOperationalCredentialsAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOperationalCredentialsAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOperationalCredentialsAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOperationalCredentialsAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOperationalCredentialsAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeNOCsID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeFabricsID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeSupportedFabricsID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeCommissionedFabricsID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeTrustedRootCertificatesID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeCurrentFabricIndexID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOperationalCredentialsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster GroupKeyManagement deprecated attribute names
+    MTRClusterGroupKeyManagementAttributeGroupKeyMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupKeyMapID")
+    = 0x00000000,
+    MTRClusterGroupKeyManagementAttributeGroupTableID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupTableID")
+    = 0x00000001,
+    MTRClusterGroupKeyManagementAttributeMaxGroupsPerFabricID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupsPerFabricID")
+    = 0x00000002,
+    MTRClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID")
+    = 0x00000003,
+    MTRClusterGroupKeyManagementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterGroupKeyManagementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterGroupKeyManagementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterGroupKeyManagementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterGroupKeyManagementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterGroupKeyManagementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster GroupKeyManagement attributes
-    MTRClusterGroupKeyManagementAttributeGroupKeyMapID = 0x00000000,
-    MTRClusterGroupKeyManagementAttributeGroupTableID = 0x00000001,
-    MTRClusterGroupKeyManagementAttributeMaxGroupsPerFabricID = 0x00000002,
-    MTRClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID = 0x00000003,
-    MTRClusterGroupKeyManagementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterGroupKeyManagementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterGroupKeyManagementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterGroupKeyManagementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterGroupKeyManagementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupKeyMapID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupTableID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupsPerFabricID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterGroupKeyManagementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster FixedLabel deprecated attribute names
+    MTRClusterFixedLabelAttributeLabelListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeLabelListID")
+    = 0x00000000,
+    MTRClusterFixedLabelAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterFixedLabelAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterFixedLabelAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterFixedLabelAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterFixedLabelAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFixedLabelAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster FixedLabel attributes
-    MTRClusterFixedLabelAttributeLabelListID = 0x00000000,
-    MTRClusterFixedLabelAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterFixedLabelAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterFixedLabelAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterFixedLabelAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterFixedLabelAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterFixedLabelAttributeLabelListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterFixedLabelAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterFixedLabelAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterFixedLabelAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterFixedLabelAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterFixedLabelAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster UserLabel deprecated attribute names
+    MTRClusterUserLabelAttributeLabelListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeLabelListID")
+    = 0x00000000,
+    MTRClusterUserLabelAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterUserLabelAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterUserLabelAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterUserLabelAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterUserLabelAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUserLabelAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster UserLabel attributes
-    MTRClusterUserLabelAttributeLabelListID = 0x00000000,
-    MTRClusterUserLabelAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterUserLabelAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterUserLabelAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterUserLabelAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterUserLabelAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterUserLabelAttributeLabelListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterUserLabelAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterUserLabelAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterUserLabelAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterUserLabelAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterUserLabelAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ProxyConfiguration deprecated attribute names
+    MTRClusterProxyConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterProxyConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterProxyConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterProxyConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterProxyConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ProxyConfiguration attributes
-    MTRClusterProxyConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterProxyConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterProxyConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterProxyConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterProxyConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterProxyConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterProxyConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterProxyConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterProxyConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterProxyConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ProxyDiscovery deprecated attribute names
+    MTRClusterProxyDiscoveryAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyDiscoveryAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterProxyDiscoveryAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyDiscoveryAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterProxyDiscoveryAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyDiscoveryAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterProxyDiscoveryAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyDiscoveryAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterProxyDiscoveryAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyDiscoveryAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ProxyDiscovery attributes
-    MTRClusterProxyDiscoveryAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterProxyDiscoveryAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterProxyDiscoveryAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterProxyDiscoveryAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterProxyDiscoveryAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterProxyDiscoveryAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterProxyDiscoveryAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterProxyDiscoveryAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterProxyDiscoveryAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterProxyDiscoveryAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ProxyValid deprecated attribute names
+    MTRClusterProxyValidAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyValidAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterProxyValidAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyValidAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterProxyValidAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyValidAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterProxyValidAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyValidAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterProxyValidAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterProxyValidAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ProxyValid attributes
-    MTRClusterProxyValidAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterProxyValidAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterProxyValidAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterProxyValidAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterProxyValidAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterProxyValidAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterProxyValidAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterProxyValidAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterProxyValidAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterProxyValidAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster BooleanState deprecated attribute names
+    MTRClusterBooleanStateAttributeStateValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeStateValueID")
+    = 0x00000000,
+    MTRClusterBooleanStateAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBooleanStateAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBooleanStateAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBooleanStateAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBooleanStateAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBooleanStateAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster BooleanState attributes
-    MTRClusterBooleanStateAttributeStateValueID = 0x00000000,
-    MTRClusterBooleanStateAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBooleanStateAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBooleanStateAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBooleanStateAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBooleanStateAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBooleanStateAttributeStateValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterBooleanStateAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBooleanStateAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBooleanStateAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBooleanStateAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBooleanStateAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ModeSelect deprecated attribute names
+    MTRClusterModeSelectAttributeDescriptionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeDescriptionID")
+    = 0x00000000,
+    MTRClusterModeSelectAttributeStandardNamespaceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeStandardNamespaceID")
+    = 0x00000001,
+    MTRClusterModeSelectAttributeSupportedModesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeSupportedModesID")
+    = 0x00000002,
+    MTRClusterModeSelectAttributeCurrentModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeCurrentModeID")
+    = 0x00000003,
+    MTRClusterModeSelectAttributeStartUpModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeStartUpModeID")
+    = 0x00000004,
+    MTRClusterModeSelectAttributeOnModeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterModeSelectAttributeOnModeID")
+    = 0x00000005,
+    MTRClusterModeSelectAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterModeSelectAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterModeSelectAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterModeSelectAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterModeSelectAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterModeSelectAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ModeSelect attributes
-    MTRClusterModeSelectAttributeDescriptionID = 0x00000000,
-    MTRClusterModeSelectAttributeStandardNamespaceID = 0x00000001,
-    MTRClusterModeSelectAttributeSupportedModesID = 0x00000002,
-    MTRClusterModeSelectAttributeCurrentModeID = 0x00000003,
-    MTRClusterModeSelectAttributeStartUpModeID = 0x00000004,
-    MTRClusterModeSelectAttributeOnModeID = 0x00000005,
-    MTRClusterModeSelectAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterModeSelectAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterModeSelectAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterModeSelectAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterModeSelectAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterModeSelectAttributeDescriptionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterModeSelectAttributeStandardNamespaceID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterModeSelectAttributeSupportedModesID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterModeSelectAttributeCurrentModeID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterModeSelectAttributeStartUpModeID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterModeSelectAttributeOnModeID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterModeSelectAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterModeSelectAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterModeSelectAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterModeSelectAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterModeSelectAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster DoorLock deprecated attribute names
+    MTRClusterDoorLockAttributeLockStateID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterDoorLockAttributeLockStateID")
+    = 0x00000000,
+    MTRClusterDoorLockAttributeLockTypeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterDoorLockAttributeLockTypeID")
+    = 0x00000001,
+    MTRClusterDoorLockAttributeActuatorEnabledID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeActuatorEnabledID")
+    = 0x00000002,
+    MTRClusterDoorLockAttributeDoorStateID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterDoorLockAttributeDoorStateID")
+    = 0x00000003,
+    MTRClusterDoorLockAttributeDoorOpenEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeDoorOpenEventsID")
+    = 0x00000004,
+    MTRClusterDoorLockAttributeDoorClosedEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeDoorClosedEventsID")
+    = 0x00000005,
+    MTRClusterDoorLockAttributeOpenPeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeOpenPeriodID")
+    = 0x00000006,
+    MTRClusterDoorLockAttributeNumberOfTotalUsersSupportedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfTotalUsersSupportedID")
+    = 0x00000011,
+    MTRClusterDoorLockAttributeNumberOfPINUsersSupportedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfPINUsersSupportedID")
+    = 0x00000012,
+    MTRClusterDoorLockAttributeNumberOfRFIDUsersSupportedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfRFIDUsersSupportedID")
+    = 0x00000013,
+    MTRClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID")
+    = 0x00000014,
+    MTRClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID")
+    = 0x00000015,
+    MTRClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID")
+    = 0x00000016,
+    MTRClusterDoorLockAttributeMaxPINCodeLengthID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeMaxPINCodeLengthID")
+    = 0x00000017,
+    MTRClusterDoorLockAttributeMinPINCodeLengthID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeMinPINCodeLengthID")
+    = 0x00000018,
+    MTRClusterDoorLockAttributeMaxRFIDCodeLengthID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeMaxRFIDCodeLengthID")
+    = 0x00000019,
+    MTRClusterDoorLockAttributeMinRFIDCodeLengthID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeMinRFIDCodeLengthID")
+    = 0x0000001A,
+    MTRClusterDoorLockAttributeCredentialRulesSupportID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeCredentialRulesSupportID")
+    = 0x0000001B,
+    MTRClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID")
+    = 0x0000001C,
+    MTRClusterDoorLockAttributeLanguageID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterDoorLockAttributeLanguageID")
+    = 0x00000021,
+    MTRClusterDoorLockAttributeLEDSettingsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeLEDSettingsID")
+    = 0x00000022,
+    MTRClusterDoorLockAttributeAutoRelockTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeAutoRelockTimeID")
+    = 0x00000023,
+    MTRClusterDoorLockAttributeSoundVolumeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeSoundVolumeID")
+    = 0x00000024,
+    MTRClusterDoorLockAttributeOperatingModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeOperatingModeID")
+    = 0x00000025,
+    MTRClusterDoorLockAttributeSupportedOperatingModesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeSupportedOperatingModesID")
+    = 0x00000026,
+    MTRClusterDoorLockAttributeDefaultConfigurationRegisterID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeDefaultConfigurationRegisterID")
+    = 0x00000027,
+    MTRClusterDoorLockAttributeEnableLocalProgrammingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeEnableLocalProgrammingID")
+    = 0x00000028,
+    MTRClusterDoorLockAttributeEnableOneTouchLockingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeEnableOneTouchLockingID")
+    = 0x00000029,
+    MTRClusterDoorLockAttributeEnableInsideStatusLEDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeEnableInsideStatusLEDID")
+    = 0x0000002A,
+    MTRClusterDoorLockAttributeEnablePrivacyModeButtonID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeEnablePrivacyModeButtonID")
+    = 0x0000002B,
+    MTRClusterDoorLockAttributeLocalProgrammingFeaturesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeLocalProgrammingFeaturesID")
+    = 0x0000002C,
+    MTRClusterDoorLockAttributeWrongCodeEntryLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeWrongCodeEntryLimitID")
+    = 0x00000030,
+    MTRClusterDoorLockAttributeUserCodeTemporaryDisableTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeUserCodeTemporaryDisableTimeID")
+    = 0x00000031,
+    MTRClusterDoorLockAttributeSendPINOverTheAirID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeSendPINOverTheAirID")
+    = 0x00000032,
+    MTRClusterDoorLockAttributeRequirePINforRemoteOperationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeRequirePINforRemoteOperationID")
+    = 0x00000033,
+    MTRClusterDoorLockAttributeExpiringUserTimeoutID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeExpiringUserTimeoutID")
+    = 0x00000035,
+    MTRClusterDoorLockAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterDoorLockAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterDoorLockAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterDoorLockAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterDoorLockAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterDoorLockAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster DoorLock attributes
-    MTRClusterDoorLockAttributeLockStateID = 0x00000000,
-    MTRClusterDoorLockAttributeLockTypeID = 0x00000001,
-    MTRClusterDoorLockAttributeActuatorEnabledID = 0x00000002,
-    MTRClusterDoorLockAttributeDoorStateID = 0x00000003,
-    MTRClusterDoorLockAttributeDoorOpenEventsID = 0x00000004,
-    MTRClusterDoorLockAttributeDoorClosedEventsID = 0x00000005,
-    MTRClusterDoorLockAttributeOpenPeriodID = 0x00000006,
-    MTRClusterDoorLockAttributeNumberOfTotalUsersSupportedID = 0x00000011,
-    MTRClusterDoorLockAttributeNumberOfPINUsersSupportedID = 0x00000012,
-    MTRClusterDoorLockAttributeNumberOfRFIDUsersSupportedID = 0x00000013,
-    MTRClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID = 0x00000014,
-    MTRClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID = 0x00000015,
-    MTRClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID = 0x00000016,
-    MTRClusterDoorLockAttributeMaxPINCodeLengthID = 0x00000017,
-    MTRClusterDoorLockAttributeMinPINCodeLengthID = 0x00000018,
-    MTRClusterDoorLockAttributeMaxRFIDCodeLengthID = 0x00000019,
-    MTRClusterDoorLockAttributeMinRFIDCodeLengthID = 0x0000001A,
-    MTRClusterDoorLockAttributeCredentialRulesSupportID = 0x0000001B,
-    MTRClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID = 0x0000001C,
-    MTRClusterDoorLockAttributeLanguageID = 0x00000021,
-    MTRClusterDoorLockAttributeLEDSettingsID = 0x00000022,
-    MTRClusterDoorLockAttributeAutoRelockTimeID = 0x00000023,
-    MTRClusterDoorLockAttributeSoundVolumeID = 0x00000024,
-    MTRClusterDoorLockAttributeOperatingModeID = 0x00000025,
-    MTRClusterDoorLockAttributeSupportedOperatingModesID = 0x00000026,
-    MTRClusterDoorLockAttributeDefaultConfigurationRegisterID = 0x00000027,
-    MTRClusterDoorLockAttributeEnableLocalProgrammingID = 0x00000028,
-    MTRClusterDoorLockAttributeEnableOneTouchLockingID = 0x00000029,
-    MTRClusterDoorLockAttributeEnableInsideStatusLEDID = 0x0000002A,
-    MTRClusterDoorLockAttributeEnablePrivacyModeButtonID = 0x0000002B,
-    MTRClusterDoorLockAttributeLocalProgrammingFeaturesID = 0x0000002C,
-    MTRClusterDoorLockAttributeWrongCodeEntryLimitID = 0x00000030,
-    MTRClusterDoorLockAttributeUserCodeTemporaryDisableTimeID = 0x00000031,
-    MTRClusterDoorLockAttributeSendPINOverTheAirID = 0x00000032,
-    MTRClusterDoorLockAttributeRequirePINforRemoteOperationID = 0x00000033,
-    MTRClusterDoorLockAttributeExpiringUserTimeoutID = 0x00000035,
-    MTRClusterDoorLockAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterDoorLockAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterDoorLockAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterDoorLockAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterDoorLockAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterDoorLockAttributeLockStateID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterDoorLockAttributeLockTypeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterDoorLockAttributeActuatorEnabledID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterDoorLockAttributeDoorStateID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterDoorLockAttributeDoorOpenEventsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterDoorLockAttributeDoorClosedEventsID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterDoorLockAttributeOpenPeriodID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfTotalUsersSupportedID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfPINUsersSupportedID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfRFIDUsersSupportedID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterDoorLockAttributeMaxPINCodeLengthID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterDoorLockAttributeMinPINCodeLengthID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRAttributeIDTypeClusterDoorLockAttributeMaxRFIDCodeLengthID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterDoorLockAttributeMinRFIDCodeLengthID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterDoorLockAttributeCredentialRulesSupportID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterDoorLockAttributeLanguageID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterDoorLockAttributeLEDSettingsID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterDoorLockAttributeAutoRelockTimeID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRAttributeIDTypeClusterDoorLockAttributeSoundVolumeID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRAttributeIDTypeClusterDoorLockAttributeOperatingModeID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRAttributeIDTypeClusterDoorLockAttributeSupportedOperatingModesID MTR_NEWLY_AVAILABLE = 0x00000026,
+    MTRAttributeIDTypeClusterDoorLockAttributeDefaultConfigurationRegisterID MTR_NEWLY_AVAILABLE = 0x00000027,
+    MTRAttributeIDTypeClusterDoorLockAttributeEnableLocalProgrammingID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRAttributeIDTypeClusterDoorLockAttributeEnableOneTouchLockingID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRAttributeIDTypeClusterDoorLockAttributeEnableInsideStatusLEDID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRAttributeIDTypeClusterDoorLockAttributeEnablePrivacyModeButtonID MTR_NEWLY_AVAILABLE = 0x0000002B,
+    MTRAttributeIDTypeClusterDoorLockAttributeLocalProgrammingFeaturesID MTR_NEWLY_AVAILABLE = 0x0000002C,
+    MTRAttributeIDTypeClusterDoorLockAttributeWrongCodeEntryLimitID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterDoorLockAttributeUserCodeTemporaryDisableTimeID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterDoorLockAttributeSendPINOverTheAirID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterDoorLockAttributeRequirePINforRemoteOperationID MTR_NEWLY_AVAILABLE = 0x00000033,
+    MTRAttributeIDTypeClusterDoorLockAttributeExpiringUserTimeoutID MTR_NEWLY_AVAILABLE = 0x00000035,
+    MTRAttributeIDTypeClusterDoorLockAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterDoorLockAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterDoorLockAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterDoorLockAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterDoorLockAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster WindowCovering deprecated attribute names
+    MTRClusterWindowCoveringAttributeTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeTypeID")
+    = 0x00000000,
+    MTRClusterWindowCoveringAttributePhysicalClosedLimitLiftID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitLiftID")
+    = 0x00000001,
+    MTRClusterWindowCoveringAttributePhysicalClosedLimitTiltID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitTiltID")
+    = 0x00000002,
+    MTRClusterWindowCoveringAttributeCurrentPositionLiftID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftID")
+    = 0x00000003,
+    MTRClusterWindowCoveringAttributeCurrentPositionTiltID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltID")
+    = 0x00000004,
+    MTRClusterWindowCoveringAttributeNumberOfActuationsLiftID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsLiftID")
+    = 0x00000005,
+    MTRClusterWindowCoveringAttributeNumberOfActuationsTiltID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsTiltID")
+    = 0x00000006,
+    MTRClusterWindowCoveringAttributeConfigStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeConfigStatusID")
+    = 0x00000007,
+    MTRClusterWindowCoveringAttributeCurrentPositionLiftPercentageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercentageID")
+    = 0x00000008,
+    MTRClusterWindowCoveringAttributeCurrentPositionTiltPercentageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercentageID")
+    = 0x00000009,
+    MTRClusterWindowCoveringAttributeOperationalStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeOperationalStatusID")
+    = 0x0000000A,
+    MTRClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID")
+    = 0x0000000B,
+    MTRClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID")
+    = 0x0000000C,
+    MTRClusterWindowCoveringAttributeEndProductTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeEndProductTypeID")
+    = 0x0000000D,
+    MTRClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID")
+    = 0x0000000E,
+    MTRClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID")
+    = 0x0000000F,
+    MTRClusterWindowCoveringAttributeInstalledOpenLimitLiftID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitLiftID")
+    = 0x00000010,
+    MTRClusterWindowCoveringAttributeInstalledClosedLimitLiftID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitLiftID")
+    = 0x00000011,
+    MTRClusterWindowCoveringAttributeInstalledOpenLimitTiltID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitTiltID")
+    = 0x00000012,
+    MTRClusterWindowCoveringAttributeInstalledClosedLimitTiltID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitTiltID")
+    = 0x00000013,
+    MTRClusterWindowCoveringAttributeModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeModeID")
+    = 0x00000017,
+    MTRClusterWindowCoveringAttributeSafetyStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeSafetyStatusID")
+    = 0x0000001A,
+    MTRClusterWindowCoveringAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterWindowCoveringAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterWindowCoveringAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterWindowCoveringAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterWindowCoveringAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWindowCoveringAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster WindowCovering attributes
-    MTRClusterWindowCoveringAttributeTypeID = 0x00000000,
-    MTRClusterWindowCoveringAttributePhysicalClosedLimitLiftID = 0x00000001,
-    MTRClusterWindowCoveringAttributePhysicalClosedLimitTiltID = 0x00000002,
-    MTRClusterWindowCoveringAttributeCurrentPositionLiftID = 0x00000003,
-    MTRClusterWindowCoveringAttributeCurrentPositionTiltID = 0x00000004,
-    MTRClusterWindowCoveringAttributeNumberOfActuationsLiftID = 0x00000005,
-    MTRClusterWindowCoveringAttributeNumberOfActuationsTiltID = 0x00000006,
-    MTRClusterWindowCoveringAttributeConfigStatusID = 0x00000007,
-    MTRClusterWindowCoveringAttributeCurrentPositionLiftPercentageID = 0x00000008,
-    MTRClusterWindowCoveringAttributeCurrentPositionTiltPercentageID = 0x00000009,
-    MTRClusterWindowCoveringAttributeOperationalStatusID = 0x0000000A,
-    MTRClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID = 0x0000000B,
-    MTRClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID = 0x0000000C,
-    MTRClusterWindowCoveringAttributeEndProductTypeID = 0x0000000D,
-    MTRClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID = 0x0000000E,
-    MTRClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID = 0x0000000F,
-    MTRClusterWindowCoveringAttributeInstalledOpenLimitLiftID = 0x00000010,
-    MTRClusterWindowCoveringAttributeInstalledClosedLimitLiftID = 0x00000011,
-    MTRClusterWindowCoveringAttributeInstalledOpenLimitTiltID = 0x00000012,
-    MTRClusterWindowCoveringAttributeInstalledClosedLimitTiltID = 0x00000013,
-    MTRClusterWindowCoveringAttributeModeID = 0x00000017,
-    MTRClusterWindowCoveringAttributeSafetyStatusID = 0x0000001A,
-    MTRClusterWindowCoveringAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterWindowCoveringAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterWindowCoveringAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterWindowCoveringAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterWindowCoveringAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeTypeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitLiftID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitTiltID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsLiftID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsTiltID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeConfigStatusID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercentageID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercentageID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeOperationalStatusID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeEndProductTypeID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitLiftID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitLiftID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitTiltID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitTiltID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeModeID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeSafetyStatusID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterWindowCoveringAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster BarrierControl deprecated attribute names
+    MTRClusterBarrierControlAttributeBarrierMovingStateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierMovingStateID")
+    = 0x00000001,
+    MTRClusterBarrierControlAttributeBarrierSafetyStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierSafetyStatusID")
+    = 0x00000002,
+    MTRClusterBarrierControlAttributeBarrierCapabilitiesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCapabilitiesID")
+    = 0x00000003,
+    MTRClusterBarrierControlAttributeBarrierOpenEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenEventsID")
+    = 0x00000004,
+    MTRClusterBarrierControlAttributeBarrierCloseEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCloseEventsID")
+    = 0x00000005,
+    MTRClusterBarrierControlAttributeBarrierCommandOpenEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandOpenEventsID")
+    = 0x00000006,
+    MTRClusterBarrierControlAttributeBarrierCommandCloseEventsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandCloseEventsID")
+    = 0x00000007,
+    MTRClusterBarrierControlAttributeBarrierOpenPeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenPeriodID")
+    = 0x00000008,
+    MTRClusterBarrierControlAttributeBarrierClosePeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierClosePeriodID")
+    = 0x00000009,
+    MTRClusterBarrierControlAttributeBarrierPositionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeBarrierPositionID")
+    = 0x0000000A,
+    MTRClusterBarrierControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBarrierControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBarrierControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBarrierControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBarrierControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBarrierControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster BarrierControl attributes
-    MTRClusterBarrierControlAttributeBarrierMovingStateID = 0x00000001,
-    MTRClusterBarrierControlAttributeBarrierSafetyStatusID = 0x00000002,
-    MTRClusterBarrierControlAttributeBarrierCapabilitiesID = 0x00000003,
-    MTRClusterBarrierControlAttributeBarrierOpenEventsID = 0x00000004,
-    MTRClusterBarrierControlAttributeBarrierCloseEventsID = 0x00000005,
-    MTRClusterBarrierControlAttributeBarrierCommandOpenEventsID = 0x00000006,
-    MTRClusterBarrierControlAttributeBarrierCommandCloseEventsID = 0x00000007,
-    MTRClusterBarrierControlAttributeBarrierOpenPeriodID = 0x00000008,
-    MTRClusterBarrierControlAttributeBarrierClosePeriodID = 0x00000009,
-    MTRClusterBarrierControlAttributeBarrierPositionID = 0x0000000A,
-    MTRClusterBarrierControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBarrierControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBarrierControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBarrierControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBarrierControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierMovingStateID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierSafetyStatusID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCapabilitiesID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenEventsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCloseEventsID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandOpenEventsID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandCloseEventsID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenPeriodID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierClosePeriodID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterBarrierControlAttributeBarrierPositionID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterBarrierControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBarrierControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBarrierControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBarrierControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBarrierControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster PumpConfigurationAndControl deprecated attribute names
+    MTRClusterPumpConfigurationAndControlAttributeMaxPressureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxPressureID")
+    = 0x00000000,
+    MTRClusterPumpConfigurationAndControlAttributeMaxSpeedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxSpeedID")
+    = 0x00000001,
+    MTRClusterPumpConfigurationAndControlAttributeMaxFlowID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxFlowID")
+    = 0x00000002,
+    MTRClusterPumpConfigurationAndControlAttributeMinConstPressureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstPressureID")
+    = 0x00000003,
+    MTRClusterPumpConfigurationAndControlAttributeMaxConstPressureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstPressureID")
+    = 0x00000004,
+    MTRClusterPumpConfigurationAndControlAttributeMinCompPressureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinCompPressureID")
+    = 0x00000005,
+    MTRClusterPumpConfigurationAndControlAttributeMaxCompPressureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxCompPressureID")
+    = 0x00000006,
+    MTRClusterPumpConfigurationAndControlAttributeMinConstSpeedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstSpeedID")
+    = 0x00000007,
+    MTRClusterPumpConfigurationAndControlAttributeMaxConstSpeedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstSpeedID")
+    = 0x00000008,
+    MTRClusterPumpConfigurationAndControlAttributeMinConstFlowID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstFlowID")
+    = 0x00000009,
+    MTRClusterPumpConfigurationAndControlAttributeMaxConstFlowID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstFlowID")
+    = 0x0000000A,
+    MTRClusterPumpConfigurationAndControlAttributeMinConstTempID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstTempID")
+    = 0x0000000B,
+    MTRClusterPumpConfigurationAndControlAttributeMaxConstTempID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstTempID")
+    = 0x0000000C,
+    MTRClusterPumpConfigurationAndControlAttributePumpStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePumpStatusID")
+    = 0x00000010,
+    MTRClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID")
+    = 0x00000011,
+    MTRClusterPumpConfigurationAndControlAttributeEffectiveControlModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveControlModeID")
+    = 0x00000012,
+    MTRClusterPumpConfigurationAndControlAttributeCapacityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeCapacityID")
+    = 0x00000013,
+    MTRClusterPumpConfigurationAndControlAttributeSpeedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeSpeedID")
+    = 0x00000014,
+    MTRClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID")
+    = 0x00000015,
+    MTRClusterPumpConfigurationAndControlAttributePowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePowerID")
+    = 0x00000016,
+    MTRClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID")
+    = 0x00000017,
+    MTRClusterPumpConfigurationAndControlAttributeOperationModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeOperationModeID")
+    = 0x00000020,
+    MTRClusterPumpConfigurationAndControlAttributeControlModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeControlModeID")
+    = 0x00000021,
+    MTRClusterPumpConfigurationAndControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterPumpConfigurationAndControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterPumpConfigurationAndControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterPumpConfigurationAndControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterPumpConfigurationAndControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster PumpConfigurationAndControl attributes
-    MTRClusterPumpConfigurationAndControlAttributeMaxPressureID = 0x00000000,
-    MTRClusterPumpConfigurationAndControlAttributeMaxSpeedID = 0x00000001,
-    MTRClusterPumpConfigurationAndControlAttributeMaxFlowID = 0x00000002,
-    MTRClusterPumpConfigurationAndControlAttributeMinConstPressureID = 0x00000003,
-    MTRClusterPumpConfigurationAndControlAttributeMaxConstPressureID = 0x00000004,
-    MTRClusterPumpConfigurationAndControlAttributeMinCompPressureID = 0x00000005,
-    MTRClusterPumpConfigurationAndControlAttributeMaxCompPressureID = 0x00000006,
-    MTRClusterPumpConfigurationAndControlAttributeMinConstSpeedID = 0x00000007,
-    MTRClusterPumpConfigurationAndControlAttributeMaxConstSpeedID = 0x00000008,
-    MTRClusterPumpConfigurationAndControlAttributeMinConstFlowID = 0x00000009,
-    MTRClusterPumpConfigurationAndControlAttributeMaxConstFlowID = 0x0000000A,
-    MTRClusterPumpConfigurationAndControlAttributeMinConstTempID = 0x0000000B,
-    MTRClusterPumpConfigurationAndControlAttributeMaxConstTempID = 0x0000000C,
-    MTRClusterPumpConfigurationAndControlAttributePumpStatusID = 0x00000010,
-    MTRClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID = 0x00000011,
-    MTRClusterPumpConfigurationAndControlAttributeEffectiveControlModeID = 0x00000012,
-    MTRClusterPumpConfigurationAndControlAttributeCapacityID = 0x00000013,
-    MTRClusterPumpConfigurationAndControlAttributeSpeedID = 0x00000014,
-    MTRClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID = 0x00000015,
-    MTRClusterPumpConfigurationAndControlAttributePowerID = 0x00000016,
-    MTRClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID = 0x00000017,
-    MTRClusterPumpConfigurationAndControlAttributeOperationModeID = 0x00000020,
-    MTRClusterPumpConfigurationAndControlAttributeControlModeID = 0x00000021,
-    MTRClusterPumpConfigurationAndControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterPumpConfigurationAndControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterPumpConfigurationAndControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterPumpConfigurationAndControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterPumpConfigurationAndControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxPressureID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxSpeedID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxFlowID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstPressureID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstPressureID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinCompPressureID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxCompPressureID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstSpeedID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstSpeedID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstFlowID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstFlowID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstTempID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstTempID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePumpStatusID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveControlModeID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeCapacityID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeSpeedID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePowerID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeOperationModeID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeControlModeID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Thermostat deprecated attribute names
+    MTRClusterThermostatAttributeLocalTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureID")
+    = 0x00000000,
+    MTRClusterThermostatAttributeOutdoorTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOutdoorTemperatureID")
+    = 0x00000001,
+    MTRClusterThermostatAttributeOccupancyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupancyID")
+    = 0x00000002,
+    MTRClusterThermostatAttributeAbsMinHeatSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAbsMinHeatSetpointLimitID")
+    = 0x00000003,
+    MTRClusterThermostatAttributeAbsMaxHeatSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAbsMaxHeatSetpointLimitID")
+    = 0x00000004,
+    MTRClusterThermostatAttributeAbsMinCoolSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAbsMinCoolSetpointLimitID")
+    = 0x00000005,
+    MTRClusterThermostatAttributeAbsMaxCoolSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAbsMaxCoolSetpointLimitID")
+    = 0x00000006,
+    MTRClusterThermostatAttributePICoolingDemandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributePICoolingDemandID")
+    = 0x00000007,
+    MTRClusterThermostatAttributePIHeatingDemandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributePIHeatingDemandID")
+    = 0x00000008,
+    MTRClusterThermostatAttributeHVACSystemTypeConfigurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeHVACSystemTypeConfigurationID")
+    = 0x00000009,
+    MTRClusterThermostatAttributeLocalTemperatureCalibrationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureCalibrationID")
+    = 0x00000010,
+    MTRClusterThermostatAttributeOccupiedCoolingSetpointID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupiedCoolingSetpointID")
+    = 0x00000011,
+    MTRClusterThermostatAttributeOccupiedHeatingSetpointID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupiedHeatingSetpointID")
+    = 0x00000012,
+    MTRClusterThermostatAttributeUnoccupiedCoolingSetpointID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedCoolingSetpointID")
+    = 0x00000013,
+    MTRClusterThermostatAttributeUnoccupiedHeatingSetpointID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedHeatingSetpointID")
+    = 0x00000014,
+    MTRClusterThermostatAttributeMinHeatSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeMinHeatSetpointLimitID")
+    = 0x00000015,
+    MTRClusterThermostatAttributeMaxHeatSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeMaxHeatSetpointLimitID")
+    = 0x00000016,
+    MTRClusterThermostatAttributeMinCoolSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeMinCoolSetpointLimitID")
+    = 0x00000017,
+    MTRClusterThermostatAttributeMaxCoolSetpointLimitID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeMaxCoolSetpointLimitID")
+    = 0x00000018,
+    MTRClusterThermostatAttributeMinSetpointDeadBandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeMinSetpointDeadBandID")
+    = 0x00000019,
+    MTRClusterThermostatAttributeRemoteSensingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeRemoteSensingID")
+    = 0x0000001A,
+    MTRClusterThermostatAttributeControlSequenceOfOperationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeControlSequenceOfOperationID")
+    = 0x0000001B,
+    MTRClusterThermostatAttributeSystemModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeSystemModeID")
+    = 0x0000001C,
+    MTRClusterThermostatAttributeThermostatRunningModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningModeID")
+    = 0x0000001E,
+    MTRClusterThermostatAttributeStartOfWeekID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeStartOfWeekID")
+    = 0x00000020,
+    MTRClusterThermostatAttributeNumberOfWeeklyTransitionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeNumberOfWeeklyTransitionsID")
+    = 0x00000021,
+    MTRClusterThermostatAttributeNumberOfDailyTransitionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeNumberOfDailyTransitionsID")
+    = 0x00000022,
+    MTRClusterThermostatAttributeTemperatureSetpointHoldID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldID")
+    = 0x00000023,
+    MTRClusterThermostatAttributeTemperatureSetpointHoldDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldDurationID")
+    = 0x00000024,
+    MTRClusterThermostatAttributeThermostatProgrammingOperationModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeThermostatProgrammingOperationModeID")
+    = 0x00000025,
+    MTRClusterThermostatAttributeThermostatRunningStateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningStateID")
+    = 0x00000029,
+    MTRClusterThermostatAttributeSetpointChangeSourceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceID")
+    = 0x00000030,
+    MTRClusterThermostatAttributeSetpointChangeAmountID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeAmountID")
+    = 0x00000031,
+    MTRClusterThermostatAttributeSetpointChangeSourceTimestampID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceTimestampID")
+    = 0x00000032,
+    MTRClusterThermostatAttributeOccupiedSetbackID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackID")
+    = 0x00000034,
+    MTRClusterThermostatAttributeOccupiedSetbackMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMinID")
+    = 0x00000035,
+    MTRClusterThermostatAttributeOccupiedSetbackMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMaxID")
+    = 0x00000036,
+    MTRClusterThermostatAttributeUnoccupiedSetbackID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackID")
+    = 0x00000037,
+    MTRClusterThermostatAttributeUnoccupiedSetbackMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMinID")
+    = 0x00000038,
+    MTRClusterThermostatAttributeUnoccupiedSetbackMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMaxID")
+    = 0x00000039,
+    MTRClusterThermostatAttributeEmergencyHeatDeltaID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeEmergencyHeatDeltaID")
+    = 0x0000003A,
+    MTRClusterThermostatAttributeACTypeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterThermostatAttributeACTypeID")
+    = 0x00000040,
+    MTRClusterThermostatAttributeACCapacityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACCapacityID")
+    = 0x00000041,
+    MTRClusterThermostatAttributeACRefrigerantTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACRefrigerantTypeID")
+    = 0x00000042,
+    MTRClusterThermostatAttributeACCompressorTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACCompressorTypeID")
+    = 0x00000043,
+    MTRClusterThermostatAttributeACErrorCodeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACErrorCodeID")
+    = 0x00000044,
+    MTRClusterThermostatAttributeACLouverPositionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACLouverPositionID")
+    = 0x00000045,
+    MTRClusterThermostatAttributeACCoilTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACCoilTemperatureID")
+    = 0x00000046,
+    MTRClusterThermostatAttributeACCapacityformatID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeACCapacityformatID")
+    = 0x00000047,
+    MTRClusterThermostatAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterThermostatAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterThermostatAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterThermostatAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterThermostatAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Thermostat attributes
-    MTRClusterThermostatAttributeLocalTemperatureID = 0x00000000,
-    MTRClusterThermostatAttributeOutdoorTemperatureID = 0x00000001,
-    MTRClusterThermostatAttributeOccupancyID = 0x00000002,
-    MTRClusterThermostatAttributeAbsMinHeatSetpointLimitID = 0x00000003,
-    MTRClusterThermostatAttributeAbsMaxHeatSetpointLimitID = 0x00000004,
-    MTRClusterThermostatAttributeAbsMinCoolSetpointLimitID = 0x00000005,
-    MTRClusterThermostatAttributeAbsMaxCoolSetpointLimitID = 0x00000006,
-    MTRClusterThermostatAttributePICoolingDemandID = 0x00000007,
-    MTRClusterThermostatAttributePIHeatingDemandID = 0x00000008,
-    MTRClusterThermostatAttributeHVACSystemTypeConfigurationID = 0x00000009,
-    MTRClusterThermostatAttributeLocalTemperatureCalibrationID = 0x00000010,
-    MTRClusterThermostatAttributeOccupiedCoolingSetpointID = 0x00000011,
-    MTRClusterThermostatAttributeOccupiedHeatingSetpointID = 0x00000012,
-    MTRClusterThermostatAttributeUnoccupiedCoolingSetpointID = 0x00000013,
-    MTRClusterThermostatAttributeUnoccupiedHeatingSetpointID = 0x00000014,
-    MTRClusterThermostatAttributeMinHeatSetpointLimitID = 0x00000015,
-    MTRClusterThermostatAttributeMaxHeatSetpointLimitID = 0x00000016,
-    MTRClusterThermostatAttributeMinCoolSetpointLimitID = 0x00000017,
-    MTRClusterThermostatAttributeMaxCoolSetpointLimitID = 0x00000018,
-    MTRClusterThermostatAttributeMinSetpointDeadBandID = 0x00000019,
-    MTRClusterThermostatAttributeRemoteSensingID = 0x0000001A,
-    MTRClusterThermostatAttributeControlSequenceOfOperationID = 0x0000001B,
-    MTRClusterThermostatAttributeSystemModeID = 0x0000001C,
-    MTRClusterThermostatAttributeThermostatRunningModeID = 0x0000001E,
-    MTRClusterThermostatAttributeStartOfWeekID = 0x00000020,
-    MTRClusterThermostatAttributeNumberOfWeeklyTransitionsID = 0x00000021,
-    MTRClusterThermostatAttributeNumberOfDailyTransitionsID = 0x00000022,
-    MTRClusterThermostatAttributeTemperatureSetpointHoldID = 0x00000023,
-    MTRClusterThermostatAttributeTemperatureSetpointHoldDurationID = 0x00000024,
-    MTRClusterThermostatAttributeThermostatProgrammingOperationModeID = 0x00000025,
-    MTRClusterThermostatAttributeThermostatRunningStateID = 0x00000029,
-    MTRClusterThermostatAttributeSetpointChangeSourceID = 0x00000030,
-    MTRClusterThermostatAttributeSetpointChangeAmountID = 0x00000031,
-    MTRClusterThermostatAttributeSetpointChangeSourceTimestampID = 0x00000032,
-    MTRClusterThermostatAttributeOccupiedSetbackID = 0x00000034,
-    MTRClusterThermostatAttributeOccupiedSetbackMinID = 0x00000035,
-    MTRClusterThermostatAttributeOccupiedSetbackMaxID = 0x00000036,
-    MTRClusterThermostatAttributeUnoccupiedSetbackID = 0x00000037,
-    MTRClusterThermostatAttributeUnoccupiedSetbackMinID = 0x00000038,
-    MTRClusterThermostatAttributeUnoccupiedSetbackMaxID = 0x00000039,
-    MTRClusterThermostatAttributeEmergencyHeatDeltaID = 0x0000003A,
-    MTRClusterThermostatAttributeACTypeID = 0x00000040,
-    MTRClusterThermostatAttributeACCapacityID = 0x00000041,
-    MTRClusterThermostatAttributeACRefrigerantTypeID = 0x00000042,
-    MTRClusterThermostatAttributeACCompressorTypeID = 0x00000043,
-    MTRClusterThermostatAttributeACErrorCodeID = 0x00000044,
-    MTRClusterThermostatAttributeACLouverPositionID = 0x00000045,
-    MTRClusterThermostatAttributeACCoilTemperatureID = 0x00000046,
-    MTRClusterThermostatAttributeACCapacityformatID = 0x00000047,
-    MTRClusterThermostatAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterThermostatAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterThermostatAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterThermostatAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterThermostatAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterThermostatAttributeOutdoorTemperatureID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupancyID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterThermostatAttributeAbsMinHeatSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterThermostatAttributeAbsMaxHeatSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterThermostatAttributeAbsMinCoolSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterThermostatAttributeAbsMaxCoolSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterThermostatAttributePICoolingDemandID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterThermostatAttributePIHeatingDemandID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterThermostatAttributeHVACSystemTypeConfigurationID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureCalibrationID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupiedCoolingSetpointID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupiedHeatingSetpointID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedCoolingSetpointID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedHeatingSetpointID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterThermostatAttributeMinHeatSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterThermostatAttributeMaxHeatSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterThermostatAttributeMinCoolSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterThermostatAttributeMaxCoolSetpointLimitID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRAttributeIDTypeClusterThermostatAttributeMinSetpointDeadBandID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterThermostatAttributeRemoteSensingID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterThermostatAttributeControlSequenceOfOperationID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterThermostatAttributeSystemModeID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningModeID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRAttributeIDTypeClusterThermostatAttributeStartOfWeekID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterThermostatAttributeNumberOfWeeklyTransitionsID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterThermostatAttributeNumberOfDailyTransitionsID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldDurationID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRAttributeIDTypeClusterThermostatAttributeThermostatProgrammingOperationModeID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningStateID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeAmountID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceTimestampID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackID MTR_NEWLY_AVAILABLE = 0x00000034,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMinID MTR_NEWLY_AVAILABLE = 0x00000035,
+    MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMaxID MTR_NEWLY_AVAILABLE = 0x00000036,
+    MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackID MTR_NEWLY_AVAILABLE = 0x00000037,
+    MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMinID MTR_NEWLY_AVAILABLE = 0x00000038,
+    MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMaxID MTR_NEWLY_AVAILABLE = 0x00000039,
+    MTRAttributeIDTypeClusterThermostatAttributeEmergencyHeatDeltaID MTR_NEWLY_AVAILABLE = 0x0000003A,
+    MTRAttributeIDTypeClusterThermostatAttributeACTypeID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRAttributeIDTypeClusterThermostatAttributeACCapacityID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRAttributeIDTypeClusterThermostatAttributeACRefrigerantTypeID MTR_NEWLY_AVAILABLE = 0x00000042,
+    MTRAttributeIDTypeClusterThermostatAttributeACCompressorTypeID MTR_NEWLY_AVAILABLE = 0x00000043,
+    MTRAttributeIDTypeClusterThermostatAttributeACErrorCodeID MTR_NEWLY_AVAILABLE = 0x00000044,
+    MTRAttributeIDTypeClusterThermostatAttributeACLouverPositionID MTR_NEWLY_AVAILABLE = 0x00000045,
+    MTRAttributeIDTypeClusterThermostatAttributeACCoilTemperatureID MTR_NEWLY_AVAILABLE = 0x00000046,
+    MTRAttributeIDTypeClusterThermostatAttributeACCapacityformatID MTR_NEWLY_AVAILABLE = 0x00000047,
+    MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterThermostatAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterThermostatAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterThermostatAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterThermostatAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster FanControl deprecated attribute names
+    MTRClusterFanControlAttributeFanModeID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterFanControlAttributeFanModeID")
+    = 0x00000000,
+    MTRClusterFanControlAttributeFanModeSequenceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeFanModeSequenceID")
+    = 0x00000001,
+    MTRClusterFanControlAttributePercentSettingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributePercentSettingID")
+    = 0x00000002,
+    MTRClusterFanControlAttributePercentCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributePercentCurrentID")
+    = 0x00000003,
+    MTRClusterFanControlAttributeSpeedMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeSpeedMaxID")
+    = 0x00000004,
+    MTRClusterFanControlAttributeSpeedSettingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeSpeedSettingID")
+    = 0x00000005,
+    MTRClusterFanControlAttributeSpeedCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeSpeedCurrentID")
+    = 0x00000006,
+    MTRClusterFanControlAttributeRockSupportID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeRockSupportID")
+    = 0x00000007,
+    MTRClusterFanControlAttributeRockSettingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeRockSettingID")
+    = 0x00000008,
+    MTRClusterFanControlAttributeWindSupportID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeWindSupportID")
+    = 0x00000009,
+    MTRClusterFanControlAttributeWindSettingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeWindSettingID")
+    = 0x0000000A,
+    MTRClusterFanControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterFanControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterFanControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterFanControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterFanControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFanControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster FanControl attributes
-    MTRClusterFanControlAttributeFanModeID = 0x00000000,
-    MTRClusterFanControlAttributeFanModeSequenceID = 0x00000001,
-    MTRClusterFanControlAttributePercentSettingID = 0x00000002,
-    MTRClusterFanControlAttributePercentCurrentID = 0x00000003,
-    MTRClusterFanControlAttributeSpeedMaxID = 0x00000004,
-    MTRClusterFanControlAttributeSpeedSettingID = 0x00000005,
-    MTRClusterFanControlAttributeSpeedCurrentID = 0x00000006,
-    MTRClusterFanControlAttributeRockSupportID = 0x00000007,
-    MTRClusterFanControlAttributeRockSettingID = 0x00000008,
-    MTRClusterFanControlAttributeWindSupportID = 0x00000009,
-    MTRClusterFanControlAttributeWindSettingID = 0x0000000A,
-    MTRClusterFanControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterFanControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterFanControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterFanControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterFanControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterFanControlAttributeFanModeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterFanControlAttributeFanModeSequenceID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterFanControlAttributePercentSettingID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterFanControlAttributePercentCurrentID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterFanControlAttributeSpeedMaxID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterFanControlAttributeSpeedSettingID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterFanControlAttributeSpeedCurrentID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterFanControlAttributeRockSupportID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterFanControlAttributeRockSettingID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterFanControlAttributeWindSupportID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterFanControlAttributeWindSettingID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterFanControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterFanControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterFanControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterFanControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterFanControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ThermostatUserInterfaceConfiguration deprecated attribute names
+    MTRClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID")
+    = 0x00000000,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID")
+    = 0x00000001,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID")
+    = 0x00000002,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ThermostatUserInterfaceConfiguration attributes
-    MTRClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID = 0x00000000,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID = 0x00000001,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID = 0x00000002,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID MTR_NEWLY_AVAILABLE
+    = 0x00000002,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ColorControl deprecated attribute names
+    MTRClusterColorControlAttributeCurrentHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCurrentHueID")
+    = 0x00000000,
+    MTRClusterColorControlAttributeCurrentSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCurrentSaturationID")
+    = 0x00000001,
+    MTRClusterColorControlAttributeRemainingTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeRemainingTimeID")
+    = 0x00000002,
+    MTRClusterColorControlAttributeCurrentXID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCurrentXID")
+    = 0x00000003,
+    MTRClusterColorControlAttributeCurrentYID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCurrentYID")
+    = 0x00000004,
+    MTRClusterColorControlAttributeDriftCompensationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeDriftCompensationID")
+    = 0x00000005,
+    MTRClusterColorControlAttributeCompensationTextID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCompensationTextID")
+    = 0x00000006,
+    MTRClusterColorControlAttributeColorTemperatureMiredsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorTemperatureMiredsID")
+    = 0x00000007,
+    MTRClusterColorControlAttributeColorModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorModeID")
+    = 0x00000008,
+    MTRClusterColorControlAttributeOptionsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeOptionsID")
+    = 0x0000000F,
+    MTRClusterColorControlAttributeNumberOfPrimariesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeNumberOfPrimariesID")
+    = 0x00000010,
+    MTRClusterColorControlAttributePrimary1XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary1XID")
+    = 0x00000011,
+    MTRClusterColorControlAttributePrimary1YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary1YID")
+    = 0x00000012,
+    MTRClusterColorControlAttributePrimary1IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary1IntensityID")
+    = 0x00000013,
+    MTRClusterColorControlAttributePrimary2XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary2XID")
+    = 0x00000015,
+    MTRClusterColorControlAttributePrimary2YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary2YID")
+    = 0x00000016,
+    MTRClusterColorControlAttributePrimary2IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary2IntensityID")
+    = 0x00000017,
+    MTRClusterColorControlAttributePrimary3XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary3XID")
+    = 0x00000019,
+    MTRClusterColorControlAttributePrimary3YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary3YID")
+    = 0x0000001A,
+    MTRClusterColorControlAttributePrimary3IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary3IntensityID")
+    = 0x0000001B,
+    MTRClusterColorControlAttributePrimary4XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary4XID")
+    = 0x00000020,
+    MTRClusterColorControlAttributePrimary4YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary4YID")
+    = 0x00000021,
+    MTRClusterColorControlAttributePrimary4IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary4IntensityID")
+    = 0x00000022,
+    MTRClusterColorControlAttributePrimary5XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary5XID")
+    = 0x00000024,
+    MTRClusterColorControlAttributePrimary5YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary5YID")
+    = 0x00000025,
+    MTRClusterColorControlAttributePrimary5IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary5IntensityID")
+    = 0x00000026,
+    MTRClusterColorControlAttributePrimary6XID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary6XID")
+    = 0x00000028,
+    MTRClusterColorControlAttributePrimary6YID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary6YID")
+    = 0x00000029,
+    MTRClusterColorControlAttributePrimary6IntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributePrimary6IntensityID")
+    = 0x0000002A,
+    MTRClusterColorControlAttributeWhitePointXID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeWhitePointXID")
+    = 0x00000030,
+    MTRClusterColorControlAttributeWhitePointYID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeWhitePointYID")
+    = 0x00000031,
+    MTRClusterColorControlAttributeColorPointRXID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointRXID")
+    = 0x00000032,
+    MTRClusterColorControlAttributeColorPointRYID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointRYID")
+    = 0x00000033,
+    MTRClusterColorControlAttributeColorPointRIntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointRIntensityID")
+    = 0x00000034,
+    MTRClusterColorControlAttributeColorPointGXID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointGXID")
+    = 0x00000036,
+    MTRClusterColorControlAttributeColorPointGYID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointGYID")
+    = 0x00000037,
+    MTRClusterColorControlAttributeColorPointGIntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointGIntensityID")
+    = 0x00000038,
+    MTRClusterColorControlAttributeColorPointBXID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointBXID")
+    = 0x0000003A,
+    MTRClusterColorControlAttributeColorPointBYID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointBYID")
+    = 0x0000003B,
+    MTRClusterColorControlAttributeColorPointBIntensityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorPointBIntensityID")
+    = 0x0000003C,
+    MTRClusterColorControlAttributeEnhancedCurrentHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeEnhancedCurrentHueID")
+    = 0x00004000,
+    MTRClusterColorControlAttributeEnhancedColorModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeEnhancedColorModeID")
+    = 0x00004001,
+    MTRClusterColorControlAttributeColorLoopActiveID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorLoopActiveID")
+    = 0x00004002,
+    MTRClusterColorControlAttributeColorLoopDirectionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorLoopDirectionID")
+    = 0x00004003,
+    MTRClusterColorControlAttributeColorLoopTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorLoopTimeID")
+    = 0x00004004,
+    MTRClusterColorControlAttributeColorLoopStartEnhancedHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorLoopStartEnhancedHueID")
+    = 0x00004005,
+    MTRClusterColorControlAttributeColorLoopStoredEnhancedHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorLoopStoredEnhancedHueID")
+    = 0x00004006,
+    MTRClusterColorControlAttributeColorCapabilitiesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorCapabilitiesID")
+    = 0x0000400A,
+    MTRClusterColorControlAttributeColorTempPhysicalMinMiredsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMinMiredsID")
+    = 0x0000400B,
+    MTRClusterColorControlAttributeColorTempPhysicalMaxMiredsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMaxMiredsID")
+    = 0x0000400C,
+    MTRClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID")
+    = 0x0000400D,
+    MTRClusterColorControlAttributeStartUpColorTemperatureMiredsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeStartUpColorTemperatureMiredsID")
+    = 0x00004010,
+    MTRClusterColorControlAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterColorControlAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterColorControlAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterColorControlAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterColorControlAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterColorControlAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ColorControl attributes
-    MTRClusterColorControlAttributeCurrentHueID = 0x00000000,
-    MTRClusterColorControlAttributeCurrentSaturationID = 0x00000001,
-    MTRClusterColorControlAttributeRemainingTimeID = 0x00000002,
-    MTRClusterColorControlAttributeCurrentXID = 0x00000003,
-    MTRClusterColorControlAttributeCurrentYID = 0x00000004,
-    MTRClusterColorControlAttributeDriftCompensationID = 0x00000005,
-    MTRClusterColorControlAttributeCompensationTextID = 0x00000006,
-    MTRClusterColorControlAttributeColorTemperatureMiredsID = 0x00000007,
-    MTRClusterColorControlAttributeColorModeID = 0x00000008,
-    MTRClusterColorControlAttributeOptionsID = 0x0000000F,
-    MTRClusterColorControlAttributeNumberOfPrimariesID = 0x00000010,
-    MTRClusterColorControlAttributePrimary1XID = 0x00000011,
-    MTRClusterColorControlAttributePrimary1YID = 0x00000012,
-    MTRClusterColorControlAttributePrimary1IntensityID = 0x00000013,
-    MTRClusterColorControlAttributePrimary2XID = 0x00000015,
-    MTRClusterColorControlAttributePrimary2YID = 0x00000016,
-    MTRClusterColorControlAttributePrimary2IntensityID = 0x00000017,
-    MTRClusterColorControlAttributePrimary3XID = 0x00000019,
-    MTRClusterColorControlAttributePrimary3YID = 0x0000001A,
-    MTRClusterColorControlAttributePrimary3IntensityID = 0x0000001B,
-    MTRClusterColorControlAttributePrimary4XID = 0x00000020,
-    MTRClusterColorControlAttributePrimary4YID = 0x00000021,
-    MTRClusterColorControlAttributePrimary4IntensityID = 0x00000022,
-    MTRClusterColorControlAttributePrimary5XID = 0x00000024,
-    MTRClusterColorControlAttributePrimary5YID = 0x00000025,
-    MTRClusterColorControlAttributePrimary5IntensityID = 0x00000026,
-    MTRClusterColorControlAttributePrimary6XID = 0x00000028,
-    MTRClusterColorControlAttributePrimary6YID = 0x00000029,
-    MTRClusterColorControlAttributePrimary6IntensityID = 0x0000002A,
-    MTRClusterColorControlAttributeWhitePointXID = 0x00000030,
-    MTRClusterColorControlAttributeWhitePointYID = 0x00000031,
-    MTRClusterColorControlAttributeColorPointRXID = 0x00000032,
-    MTRClusterColorControlAttributeColorPointRYID = 0x00000033,
-    MTRClusterColorControlAttributeColorPointRIntensityID = 0x00000034,
-    MTRClusterColorControlAttributeColorPointGXID = 0x00000036,
-    MTRClusterColorControlAttributeColorPointGYID = 0x00000037,
-    MTRClusterColorControlAttributeColorPointGIntensityID = 0x00000038,
-    MTRClusterColorControlAttributeColorPointBXID = 0x0000003A,
-    MTRClusterColorControlAttributeColorPointBYID = 0x0000003B,
-    MTRClusterColorControlAttributeColorPointBIntensityID = 0x0000003C,
-    MTRClusterColorControlAttributeEnhancedCurrentHueID = 0x00004000,
-    MTRClusterColorControlAttributeEnhancedColorModeID = 0x00004001,
-    MTRClusterColorControlAttributeColorLoopActiveID = 0x00004002,
-    MTRClusterColorControlAttributeColorLoopDirectionID = 0x00004003,
-    MTRClusterColorControlAttributeColorLoopTimeID = 0x00004004,
-    MTRClusterColorControlAttributeColorLoopStartEnhancedHueID = 0x00004005,
-    MTRClusterColorControlAttributeColorLoopStoredEnhancedHueID = 0x00004006,
-    MTRClusterColorControlAttributeColorCapabilitiesID = 0x0000400A,
-    MTRClusterColorControlAttributeColorTempPhysicalMinMiredsID = 0x0000400B,
-    MTRClusterColorControlAttributeColorTempPhysicalMaxMiredsID = 0x0000400C,
-    MTRClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID = 0x0000400D,
-    MTRClusterColorControlAttributeStartUpColorTemperatureMiredsID = 0x00004010,
-    MTRClusterColorControlAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterColorControlAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterColorControlAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterColorControlAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterColorControlAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterColorControlAttributeCurrentHueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterColorControlAttributeCurrentSaturationID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterColorControlAttributeRemainingTimeID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterColorControlAttributeCurrentXID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterColorControlAttributeCurrentYID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterColorControlAttributeDriftCompensationID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterColorControlAttributeCompensationTextID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterColorControlAttributeColorTemperatureMiredsID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterColorControlAttributeColorModeID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterColorControlAttributeOptionsID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterColorControlAttributeNumberOfPrimariesID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary1XID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary1YID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary1IntensityID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary2XID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary2YID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary2IntensityID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary3XID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary3YID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary3IntensityID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary4XID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary4YID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary4IntensityID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary5XID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary5YID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary5IntensityID MTR_NEWLY_AVAILABLE = 0x00000026,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary6XID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary6YID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRAttributeIDTypeClusterColorControlAttributePrimary6IntensityID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRAttributeIDTypeClusterColorControlAttributeWhitePointXID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterColorControlAttributeWhitePointYID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointRXID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointRYID MTR_NEWLY_AVAILABLE = 0x00000033,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointRIntensityID MTR_NEWLY_AVAILABLE = 0x00000034,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointGXID MTR_NEWLY_AVAILABLE = 0x00000036,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointGYID MTR_NEWLY_AVAILABLE = 0x00000037,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointGIntensityID MTR_NEWLY_AVAILABLE = 0x00000038,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointBXID MTR_NEWLY_AVAILABLE = 0x0000003A,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointBYID MTR_NEWLY_AVAILABLE = 0x0000003B,
+    MTRAttributeIDTypeClusterColorControlAttributeColorPointBIntensityID MTR_NEWLY_AVAILABLE = 0x0000003C,
+    MTRAttributeIDTypeClusterColorControlAttributeEnhancedCurrentHueID MTR_NEWLY_AVAILABLE = 0x00004000,
+    MTRAttributeIDTypeClusterColorControlAttributeEnhancedColorModeID MTR_NEWLY_AVAILABLE = 0x00004001,
+    MTRAttributeIDTypeClusterColorControlAttributeColorLoopActiveID MTR_NEWLY_AVAILABLE = 0x00004002,
+    MTRAttributeIDTypeClusterColorControlAttributeColorLoopDirectionID MTR_NEWLY_AVAILABLE = 0x00004003,
+    MTRAttributeIDTypeClusterColorControlAttributeColorLoopTimeID MTR_NEWLY_AVAILABLE = 0x00004004,
+    MTRAttributeIDTypeClusterColorControlAttributeColorLoopStartEnhancedHueID MTR_NEWLY_AVAILABLE = 0x00004005,
+    MTRAttributeIDTypeClusterColorControlAttributeColorLoopStoredEnhancedHueID MTR_NEWLY_AVAILABLE = 0x00004006,
+    MTRAttributeIDTypeClusterColorControlAttributeColorCapabilitiesID MTR_NEWLY_AVAILABLE = 0x0000400A,
+    MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMinMiredsID MTR_NEWLY_AVAILABLE = 0x0000400B,
+    MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMaxMiredsID MTR_NEWLY_AVAILABLE = 0x0000400C,
+    MTRAttributeIDTypeClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID MTR_NEWLY_AVAILABLE = 0x0000400D,
+    MTRAttributeIDTypeClusterColorControlAttributeStartUpColorTemperatureMiredsID MTR_NEWLY_AVAILABLE = 0x00004010,
+    MTRAttributeIDTypeClusterColorControlAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterColorControlAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterColorControlAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterColorControlAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterColorControlAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster BallastConfiguration deprecated attribute names
+    MTRClusterBallastConfigurationAttributePhysicalMinLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMinLevelID")
+    = 0x00000000,
+    MTRClusterBallastConfigurationAttributePhysicalMaxLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMaxLevelID")
+    = 0x00000001,
+    MTRClusterBallastConfigurationAttributeBallastStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastStatusID")
+    = 0x00000002,
+    MTRClusterBallastConfigurationAttributeMinLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeMinLevelID")
+    = 0x00000010,
+    MTRClusterBallastConfigurationAttributeMaxLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeMaxLevelID")
+    = 0x00000011,
+    MTRClusterBallastConfigurationAttributeIntrinsicBalanceFactorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeIntrinsicBalanceFactorID")
+    = 0x00000014,
+    MTRClusterBallastConfigurationAttributeBallastFactorAdjustmentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastFactorAdjustmentID")
+    = 0x00000015,
+    MTRClusterBallastConfigurationAttributeLampQuantityID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampQuantityID")
+    = 0x00000020,
+    MTRClusterBallastConfigurationAttributeLampTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampTypeID")
+    = 0x00000030,
+    MTRClusterBallastConfigurationAttributeLampManufacturerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampManufacturerID")
+    = 0x00000031,
+    MTRClusterBallastConfigurationAttributeLampRatedHoursID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampRatedHoursID")
+    = 0x00000032,
+    MTRClusterBallastConfigurationAttributeLampBurnHoursID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursID")
+    = 0x00000033,
+    MTRClusterBallastConfigurationAttributeLampAlarmModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampAlarmModeID")
+    = 0x00000034,
+    MTRClusterBallastConfigurationAttributeLampBurnHoursTripPointID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursTripPointID")
+    = 0x00000035,
+    MTRClusterBallastConfigurationAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterBallastConfigurationAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterBallastConfigurationAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterBallastConfigurationAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterBallastConfigurationAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterBallastConfigurationAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster BallastConfiguration attributes
-    MTRClusterBallastConfigurationAttributePhysicalMinLevelID = 0x00000000,
-    MTRClusterBallastConfigurationAttributePhysicalMaxLevelID = 0x00000001,
-    MTRClusterBallastConfigurationAttributeBallastStatusID = 0x00000002,
-    MTRClusterBallastConfigurationAttributeMinLevelID = 0x00000010,
-    MTRClusterBallastConfigurationAttributeMaxLevelID = 0x00000011,
-    MTRClusterBallastConfigurationAttributeIntrinsicBalanceFactorID = 0x00000014,
-    MTRClusterBallastConfigurationAttributeBallastFactorAdjustmentID = 0x00000015,
-    MTRClusterBallastConfigurationAttributeLampQuantityID = 0x00000020,
-    MTRClusterBallastConfigurationAttributeLampTypeID = 0x00000030,
-    MTRClusterBallastConfigurationAttributeLampManufacturerID = 0x00000031,
-    MTRClusterBallastConfigurationAttributeLampRatedHoursID = 0x00000032,
-    MTRClusterBallastConfigurationAttributeLampBurnHoursID = 0x00000033,
-    MTRClusterBallastConfigurationAttributeLampAlarmModeID = 0x00000034,
-    MTRClusterBallastConfigurationAttributeLampBurnHoursTripPointID = 0x00000035,
-    MTRClusterBallastConfigurationAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterBallastConfigurationAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterBallastConfigurationAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterBallastConfigurationAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterBallastConfigurationAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMinLevelID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMaxLevelID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastStatusID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeMinLevelID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeMaxLevelID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeIntrinsicBalanceFactorID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastFactorAdjustmentID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampQuantityID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampTypeID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampManufacturerID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampRatedHoursID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursID MTR_NEWLY_AVAILABLE = 0x00000033,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampAlarmModeID MTR_NEWLY_AVAILABLE = 0x00000034,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursTripPointID MTR_NEWLY_AVAILABLE = 0x00000035,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBallastConfigurationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster IlluminanceMeasurement deprecated attribute names
+    MTRClusterIlluminanceMeasurementAttributeMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMeasuredValueID")
+    = 0x00000000,
+    MTRClusterIlluminanceMeasurementAttributeMinMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMinMeasuredValueID")
+    = 0x00000001,
+    MTRClusterIlluminanceMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMaxMeasuredValueID")
+    = 0x00000002,
+    MTRClusterIlluminanceMeasurementAttributeToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeToleranceID")
+    = 0x00000003,
+    MTRClusterIlluminanceMeasurementAttributeLightSensorTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeLightSensorTypeID")
+    = 0x00000004,
+    MTRClusterIlluminanceMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterIlluminanceMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterIlluminanceMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterIlluminanceMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterIlluminanceMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster IlluminanceMeasurement attributes
-    MTRClusterIlluminanceMeasurementAttributeMeasuredValueID = 0x00000000,
-    MTRClusterIlluminanceMeasurementAttributeMinMeasuredValueID = 0x00000001,
-    MTRClusterIlluminanceMeasurementAttributeMaxMeasuredValueID = 0x00000002,
-    MTRClusterIlluminanceMeasurementAttributeToleranceID = 0x00000003,
-    MTRClusterIlluminanceMeasurementAttributeLightSensorTypeID = 0x00000004,
-    MTRClusterIlluminanceMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterIlluminanceMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterIlluminanceMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterIlluminanceMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterIlluminanceMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMinMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeToleranceID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeLightSensorTypeID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster TemperatureMeasurement deprecated attribute names
+    MTRClusterTemperatureMeasurementAttributeMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMeasuredValueID")
+    = 0x00000000,
+    MTRClusterTemperatureMeasurementAttributeMinMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMinMeasuredValueID")
+    = 0x00000001,
+    MTRClusterTemperatureMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMaxMeasuredValueID")
+    = 0x00000002,
+    MTRClusterTemperatureMeasurementAttributeToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeToleranceID")
+    = 0x00000003,
+    MTRClusterTemperatureMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTemperatureMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTemperatureMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTemperatureMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTemperatureMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTemperatureMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster TemperatureMeasurement attributes
-    MTRClusterTemperatureMeasurementAttributeMeasuredValueID = 0x00000000,
-    MTRClusterTemperatureMeasurementAttributeMinMeasuredValueID = 0x00000001,
-    MTRClusterTemperatureMeasurementAttributeMaxMeasuredValueID = 0x00000002,
-    MTRClusterTemperatureMeasurementAttributeToleranceID = 0x00000003,
-    MTRClusterTemperatureMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTemperatureMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTemperatureMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTemperatureMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTemperatureMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMinMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeToleranceID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterTemperatureMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster PressureMeasurement deprecated attribute names
+    MTRClusterPressureMeasurementAttributeMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeMeasuredValueID")
+    = 0x00000000,
+    MTRClusterPressureMeasurementAttributeMinMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeMinMeasuredValueID")
+    = 0x00000001,
+    MTRClusterPressureMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxMeasuredValueID")
+    = 0x00000002,
+    MTRClusterPressureMeasurementAttributeToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeToleranceID")
+    = 0x00000003,
+    MTRClusterPressureMeasurementAttributeScaledValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledValueID")
+    = 0x00000010,
+    MTRClusterPressureMeasurementAttributeMinScaledValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeMinScaledValueID")
+    = 0x00000011,
+    MTRClusterPressureMeasurementAttributeMaxScaledValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxScaledValueID")
+    = 0x00000012,
+    MTRClusterPressureMeasurementAttributeScaledToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledToleranceID")
+    = 0x00000013,
+    MTRClusterPressureMeasurementAttributeScaleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeScaleID")
+    = 0x00000014,
+    MTRClusterPressureMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterPressureMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterPressureMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterPressureMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterPressureMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterPressureMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster PressureMeasurement attributes
-    MTRClusterPressureMeasurementAttributeMeasuredValueID = 0x00000000,
-    MTRClusterPressureMeasurementAttributeMinMeasuredValueID = 0x00000001,
-    MTRClusterPressureMeasurementAttributeMaxMeasuredValueID = 0x00000002,
-    MTRClusterPressureMeasurementAttributeToleranceID = 0x00000003,
-    MTRClusterPressureMeasurementAttributeScaledValueID = 0x00000010,
-    MTRClusterPressureMeasurementAttributeMinScaledValueID = 0x00000011,
-    MTRClusterPressureMeasurementAttributeMaxScaledValueID = 0x00000012,
-    MTRClusterPressureMeasurementAttributeScaledToleranceID = 0x00000013,
-    MTRClusterPressureMeasurementAttributeScaleID = 0x00000014,
-    MTRClusterPressureMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterPressureMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterPressureMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterPressureMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterPressureMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeMinMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeToleranceID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledValueID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeMinScaledValueID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxScaledValueID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledToleranceID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeScaleID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterPressureMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster FlowMeasurement deprecated attribute names
+    MTRClusterFlowMeasurementAttributeMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeMeasuredValueID")
+    = 0x00000000,
+    MTRClusterFlowMeasurementAttributeMinMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeMinMeasuredValueID")
+    = 0x00000001,
+    MTRClusterFlowMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeMaxMeasuredValueID")
+    = 0x00000002,
+    MTRClusterFlowMeasurementAttributeToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeToleranceID")
+    = 0x00000003,
+    MTRClusterFlowMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterFlowMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterFlowMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterFlowMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterFlowMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFlowMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster FlowMeasurement attributes
-    MTRClusterFlowMeasurementAttributeMeasuredValueID = 0x00000000,
-    MTRClusterFlowMeasurementAttributeMinMeasuredValueID = 0x00000001,
-    MTRClusterFlowMeasurementAttributeMaxMeasuredValueID = 0x00000002,
-    MTRClusterFlowMeasurementAttributeToleranceID = 0x00000003,
-    MTRClusterFlowMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterFlowMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterFlowMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterFlowMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterFlowMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeMinMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeToleranceID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterFlowMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster RelativeHumidityMeasurement deprecated attribute names
+    MTRClusterRelativeHumidityMeasurementAttributeMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMeasuredValueID")
+    = 0x00000000,
+    MTRClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID")
+    = 0x00000001,
+    MTRClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID")
+    = 0x00000002,
+    MTRClusterRelativeHumidityMeasurementAttributeToleranceID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeToleranceID")
+    = 0x00000003,
+    MTRClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterRelativeHumidityMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterRelativeHumidityMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterRelativeHumidityMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster RelativeHumidityMeasurement attributes
-    MTRClusterRelativeHumidityMeasurementAttributeMeasuredValueID = 0x00000000,
-    MTRClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID = 0x00000001,
-    MTRClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID = 0x00000002,
-    MTRClusterRelativeHumidityMeasurementAttributeToleranceID = 0x00000003,
-    MTRClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterRelativeHumidityMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterRelativeHumidityMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterRelativeHumidityMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeToleranceID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster OccupancySensing deprecated attribute names
+    MTRClusterOccupancySensingAttributeOccupancyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancyID")
+    = 0x00000000,
+    MTRClusterOccupancySensingAttributeOccupancySensorTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeID")
+    = 0x00000001,
+    MTRClusterOccupancySensingAttributeOccupancySensorTypeBitmapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeBitmapID")
+    = 0x00000002,
+    MTRClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID")
+    = 0x00000010,
+    MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID")
+    = 0x00000011,
+    MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID")
+    = 0x00000012,
+    MTRClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID")
+    = 0x00000020,
+    MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID")
+    = 0x00000021,
+    MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID")
+    = 0x00000022,
+    MTRClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID")
+    = 0x00000030,
+    MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID")
+    = 0x00000031,
+    MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID")
+    = 0x00000032,
+    MTRClusterOccupancySensingAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterOccupancySensingAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterOccupancySensingAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterOccupancySensingAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterOccupancySensingAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterOccupancySensingAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster OccupancySensing attributes
-    MTRClusterOccupancySensingAttributeOccupancyID = 0x00000000,
-    MTRClusterOccupancySensingAttributeOccupancySensorTypeID = 0x00000001,
-    MTRClusterOccupancySensingAttributeOccupancySensorTypeBitmapID = 0x00000002,
-    MTRClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID = 0x00000010,
-    MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID = 0x00000011,
-    MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID = 0x00000012,
-    MTRClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID = 0x00000020,
-    MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID = 0x00000021,
-    MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID = 0x00000022,
-    MTRClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID = 0x00000030,
-    MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID = 0x00000031,
-    MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID = 0x00000032,
-    MTRClusterOccupancySensingAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterOccupancySensingAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterOccupancySensingAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterOccupancySensingAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterOccupancySensingAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancyID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeBitmapID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID MTR_NEWLY_AVAILABLE
+    = 0x00000032,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterOccupancySensingAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster WakeOnLan deprecated attribute names
+    MTRClusterWakeOnLanAttributeMACAddressID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeMACAddressID")
+    = 0x00000000,
+    MTRClusterWakeOnLanAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterWakeOnLanAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterWakeOnLanAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterWakeOnLanAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterWakeOnLanAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterWakeOnLanAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster WakeOnLan attributes
-    MTRClusterWakeOnLanAttributeMACAddressID = 0x00000000,
-    MTRClusterWakeOnLanAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterWakeOnLanAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterWakeOnLanAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterWakeOnLanAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterWakeOnLanAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeMACAddressID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterWakeOnLanAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster Channel deprecated attribute names
+    MTRClusterChannelAttributeChannelListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeChannelListID")
+    = 0x00000000,
+    MTRClusterChannelAttributeLineupID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterChannelAttributeLineupID")
+    = 0x00000001,
+    MTRClusterChannelAttributeCurrentChannelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeCurrentChannelID")
+    = 0x00000002,
+    MTRClusterChannelAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterChannelAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterChannelAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterChannelAttributeFeatureMapID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterChannelAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterChannelAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterChannelAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster Channel attributes
-    MTRClusterChannelAttributeChannelListID = 0x00000000,
-    MTRClusterChannelAttributeLineupID = 0x00000001,
-    MTRClusterChannelAttributeCurrentChannelID = 0x00000002,
-    MTRClusterChannelAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterChannelAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterChannelAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterChannelAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterChannelAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterChannelAttributeChannelListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterChannelAttributeLineupID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterChannelAttributeCurrentChannelID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterChannelAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterChannelAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterChannelAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterChannelAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterChannelAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster TargetNavigator deprecated attribute names
+    MTRClusterTargetNavigatorAttributeTargetListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeTargetListID")
+    = 0x00000000,
+    MTRClusterTargetNavigatorAttributeCurrentTargetID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeCurrentTargetID")
+    = 0x00000001,
+    MTRClusterTargetNavigatorAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTargetNavigatorAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTargetNavigatorAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTargetNavigatorAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTargetNavigatorAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterTargetNavigatorAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster TargetNavigator attributes
-    MTRClusterTargetNavigatorAttributeTargetListID = 0x00000000,
-    MTRClusterTargetNavigatorAttributeCurrentTargetID = 0x00000001,
-    MTRClusterTargetNavigatorAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTargetNavigatorAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTargetNavigatorAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTargetNavigatorAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTargetNavigatorAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeTargetListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeCurrentTargetID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterTargetNavigatorAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster MediaPlayback deprecated attribute names
+    MTRClusterMediaPlaybackAttributeCurrentStateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeCurrentStateID")
+    = 0x00000000,
+    MTRClusterMediaPlaybackAttributeStartTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeStartTimeID")
+    = 0x00000001,
+    MTRClusterMediaPlaybackAttributeDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeDurationID")
+    = 0x00000002,
+    MTRClusterMediaPlaybackAttributeSampledPositionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeSampledPositionID")
+    = 0x00000003,
+    MTRClusterMediaPlaybackAttributePlaybackSpeedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributePlaybackSpeedID")
+    = 0x00000004,
+    MTRClusterMediaPlaybackAttributeSeekRangeEndID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeEndID")
+    = 0x00000005,
+    MTRClusterMediaPlaybackAttributeSeekRangeStartID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeStartID")
+    = 0x00000006,
+    MTRClusterMediaPlaybackAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterMediaPlaybackAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterMediaPlaybackAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterMediaPlaybackAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterMediaPlaybackAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaPlaybackAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster MediaPlayback attributes
-    MTRClusterMediaPlaybackAttributeCurrentStateID = 0x00000000,
-    MTRClusterMediaPlaybackAttributeStartTimeID = 0x00000001,
-    MTRClusterMediaPlaybackAttributeDurationID = 0x00000002,
-    MTRClusterMediaPlaybackAttributeSampledPositionID = 0x00000003,
-    MTRClusterMediaPlaybackAttributePlaybackSpeedID = 0x00000004,
-    MTRClusterMediaPlaybackAttributeSeekRangeEndID = 0x00000005,
-    MTRClusterMediaPlaybackAttributeSeekRangeStartID = 0x00000006,
-    MTRClusterMediaPlaybackAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterMediaPlaybackAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterMediaPlaybackAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterMediaPlaybackAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterMediaPlaybackAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeCurrentStateID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeStartTimeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeDurationID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeSampledPositionID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributePlaybackSpeedID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeEndID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeStartID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterMediaPlaybackAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster MediaInput deprecated attribute names
+    MTRClusterMediaInputAttributeInputListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeInputListID")
+    = 0x00000000,
+    MTRClusterMediaInputAttributeCurrentInputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeCurrentInputID")
+    = 0x00000001,
+    MTRClusterMediaInputAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterMediaInputAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterMediaInputAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterMediaInputAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterMediaInputAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterMediaInputAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster MediaInput attributes
-    MTRClusterMediaInputAttributeInputListID = 0x00000000,
-    MTRClusterMediaInputAttributeCurrentInputID = 0x00000001,
-    MTRClusterMediaInputAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterMediaInputAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterMediaInputAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterMediaInputAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterMediaInputAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterMediaInputAttributeInputListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterMediaInputAttributeCurrentInputID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterMediaInputAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterMediaInputAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterMediaInputAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterMediaInputAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterMediaInputAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster LowPower deprecated attribute names
+    MTRClusterLowPowerAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLowPowerAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterLowPowerAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLowPowerAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterLowPowerAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLowPowerAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterLowPowerAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLowPowerAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterLowPowerAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterLowPowerAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster LowPower attributes
-    MTRClusterLowPowerAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterLowPowerAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterLowPowerAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterLowPowerAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterLowPowerAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterLowPowerAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterLowPowerAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterLowPowerAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterLowPowerAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterLowPowerAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster KeypadInput deprecated attribute names
+    MTRClusterKeypadInputAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterKeypadInputAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterKeypadInputAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterKeypadInputAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterKeypadInputAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterKeypadInputAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterKeypadInputAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterKeypadInputAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterKeypadInputAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterKeypadInputAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster KeypadInput attributes
-    MTRClusterKeypadInputAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterKeypadInputAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterKeypadInputAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterKeypadInputAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterKeypadInputAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterKeypadInputAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterKeypadInputAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterKeypadInputAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterKeypadInputAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterKeypadInputAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ContentLauncher deprecated attribute names
+    MTRClusterContentLauncherAttributeAcceptHeaderID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeAcceptHeaderID")
+    = 0x00000000,
+    MTRClusterContentLauncherAttributeSupportedStreamingProtocolsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeSupportedStreamingProtocolsID")
+    = 0x00000001,
+    MTRClusterContentLauncherAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterContentLauncherAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterContentLauncherAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterContentLauncherAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterContentLauncherAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterContentLauncherAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ContentLauncher attributes
-    MTRClusterContentLauncherAttributeAcceptHeaderID = 0x00000000,
-    MTRClusterContentLauncherAttributeSupportedStreamingProtocolsID = 0x00000001,
-    MTRClusterContentLauncherAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterContentLauncherAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterContentLauncherAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterContentLauncherAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterContentLauncherAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterContentLauncherAttributeAcceptHeaderID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterContentLauncherAttributeSupportedStreamingProtocolsID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterContentLauncherAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterContentLauncherAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterContentLauncherAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterContentLauncherAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterContentLauncherAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster AudioOutput deprecated attribute names
+    MTRClusterAudioOutputAttributeOutputListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeOutputListID")
+    = 0x00000000,
+    MTRClusterAudioOutputAttributeCurrentOutputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeCurrentOutputID")
+    = 0x00000001,
+    MTRClusterAudioOutputAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterAudioOutputAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterAudioOutputAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterAudioOutputAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterAudioOutputAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAudioOutputAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster AudioOutput attributes
-    MTRClusterAudioOutputAttributeOutputListID = 0x00000000,
-    MTRClusterAudioOutputAttributeCurrentOutputID = 0x00000001,
-    MTRClusterAudioOutputAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterAudioOutputAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterAudioOutputAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterAudioOutputAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterAudioOutputAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterAudioOutputAttributeOutputListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterAudioOutputAttributeCurrentOutputID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterAudioOutputAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterAudioOutputAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterAudioOutputAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterAudioOutputAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterAudioOutputAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ApplicationLauncher deprecated attribute names
+    MTRClusterApplicationLauncherAttributeCatalogListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeCatalogListID")
+    = 0x00000000,
+    MTRClusterApplicationLauncherAttributeCurrentAppID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeCurrentAppID")
+    = 0x00000001,
+    MTRClusterApplicationLauncherAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterApplicationLauncherAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterApplicationLauncherAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterApplicationLauncherAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterApplicationLauncherAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationLauncherAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ApplicationLauncher attributes
-    MTRClusterApplicationLauncherAttributeCatalogListID = 0x00000000,
-    MTRClusterApplicationLauncherAttributeCurrentAppID = 0x00000001,
-    MTRClusterApplicationLauncherAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterApplicationLauncherAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterApplicationLauncherAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterApplicationLauncherAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterApplicationLauncherAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeCatalogListID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeCurrentAppID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterApplicationLauncherAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ApplicationBasic deprecated attribute names
+    MTRClusterApplicationBasicAttributeVendorNameID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeVendorNameID")
+    = 0x00000000,
+    MTRClusterApplicationBasicAttributeVendorIDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeVendorIDID")
+    = 0x00000001,
+    MTRClusterApplicationBasicAttributeApplicationNameID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationNameID")
+    = 0x00000002,
+    MTRClusterApplicationBasicAttributeProductIDID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeProductIDID")
+    = 0x00000003,
+    MTRClusterApplicationBasicAttributeApplicationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationID")
+    = 0x00000004,
+    MTRClusterApplicationBasicAttributeStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeStatusID")
+    = 0x00000005,
+    MTRClusterApplicationBasicAttributeApplicationVersionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationVersionID")
+    = 0x00000006,
+    MTRClusterApplicationBasicAttributeAllowedVendorListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeAllowedVendorListID")
+    = 0x00000007,
+    MTRClusterApplicationBasicAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterApplicationBasicAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterApplicationBasicAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterApplicationBasicAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterApplicationBasicAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterApplicationBasicAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ApplicationBasic attributes
-    MTRClusterApplicationBasicAttributeVendorNameID = 0x00000000,
-    MTRClusterApplicationBasicAttributeVendorIDID = 0x00000001,
-    MTRClusterApplicationBasicAttributeApplicationNameID = 0x00000002,
-    MTRClusterApplicationBasicAttributeProductIDID = 0x00000003,
-    MTRClusterApplicationBasicAttributeApplicationID = 0x00000004,
-    MTRClusterApplicationBasicAttributeStatusID = 0x00000005,
-    MTRClusterApplicationBasicAttributeApplicationVersionID = 0x00000006,
-    MTRClusterApplicationBasicAttributeAllowedVendorListID = 0x00000007,
-    MTRClusterApplicationBasicAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterApplicationBasicAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterApplicationBasicAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterApplicationBasicAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterApplicationBasicAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeVendorNameID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeVendorIDID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationNameID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeProductIDID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeStatusID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationVersionID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeAllowedVendorListID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterApplicationBasicAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster AccountLogin deprecated attribute names
+    MTRClusterAccountLoginAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccountLoginAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterAccountLoginAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccountLoginAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterAccountLoginAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccountLoginAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterAccountLoginAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccountLoginAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterAccountLoginAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterAccountLoginAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster AccountLogin attributes
-    MTRClusterAccountLoginAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterAccountLoginAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterAccountLoginAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterAccountLoginAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterAccountLoginAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterAccountLoginAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterAccountLoginAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterAccountLoginAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterAccountLoginAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterAccountLoginAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster ElectricalMeasurement deprecated attribute names
+    MTRClusterElectricalMeasurementAttributeMeasurementTypeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasurementTypeID")
+    = 0x00000000,
+    MTRClusterElectricalMeasurementAttributeDcVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageID")
+    = 0x00000100,
+    MTRClusterElectricalMeasurementAttributeDcVoltageMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMinID")
+    = 0x00000101,
+    MTRClusterElectricalMeasurementAttributeDcVoltageMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMaxID")
+    = 0x00000102,
+    MTRClusterElectricalMeasurementAttributeDcCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentID")
+    = 0x00000103,
+    MTRClusterElectricalMeasurementAttributeDcCurrentMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMinID")
+    = 0x00000104,
+    MTRClusterElectricalMeasurementAttributeDcCurrentMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMaxID")
+    = 0x00000105,
+    MTRClusterElectricalMeasurementAttributeDcPowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerID")
+    = 0x00000106,
+    MTRClusterElectricalMeasurementAttributeDcPowerMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMinID")
+    = 0x00000107,
+    MTRClusterElectricalMeasurementAttributeDcPowerMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMaxID")
+    = 0x00000108,
+    MTRClusterElectricalMeasurementAttributeDcVoltageMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMultiplierID")
+    = 0x00000200,
+    MTRClusterElectricalMeasurementAttributeDcVoltageDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageDivisorID")
+    = 0x00000201,
+    MTRClusterElectricalMeasurementAttributeDcCurrentMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMultiplierID")
+    = 0x00000202,
+    MTRClusterElectricalMeasurementAttributeDcCurrentDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentDivisorID")
+    = 0x00000203,
+    MTRClusterElectricalMeasurementAttributeDcPowerMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMultiplierID")
+    = 0x00000204,
+    MTRClusterElectricalMeasurementAttributeDcPowerDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerDivisorID")
+    = 0x00000205,
+    MTRClusterElectricalMeasurementAttributeAcFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyID")
+    = 0x00000300,
+    MTRClusterElectricalMeasurementAttributeAcFrequencyMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMinID")
+    = 0x00000301,
+    MTRClusterElectricalMeasurementAttributeAcFrequencyMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMaxID")
+    = 0x00000302,
+    MTRClusterElectricalMeasurementAttributeNeutralCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeNeutralCurrentID")
+    = 0x00000303,
+    MTRClusterElectricalMeasurementAttributeTotalActivePowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalActivePowerID")
+    = 0x00000304,
+    MTRClusterElectricalMeasurementAttributeTotalReactivePowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalReactivePowerID")
+    = 0x00000305,
+    MTRClusterElectricalMeasurementAttributeTotalApparentPowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalApparentPowerID")
+    = 0x00000306,
+    MTRClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID")
+    = 0x00000307,
+    MTRClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID")
+    = 0x00000308,
+    MTRClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID")
+    = 0x00000309,
+    MTRClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID")
+    = 0x0000030A,
+    MTRClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID")
+    = 0x0000030B,
+    MTRClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID")
+    = 0x0000030C,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID")
+    = 0x0000030D,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID")
+    = 0x0000030E,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID")
+    = 0x0000030F,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID")
+    = 0x00000310,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID")
+    = 0x00000311,
+    MTRClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID")
+    = 0x00000312,
+    MTRClusterElectricalMeasurementAttributeAcFrequencyMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMultiplierID")
+    = 0x00000400,
+    MTRClusterElectricalMeasurementAttributeAcFrequencyDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyDivisorID")
+    = 0x00000401,
+    MTRClusterElectricalMeasurementAttributePowerMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerMultiplierID")
+    = 0x00000402,
+    MTRClusterElectricalMeasurementAttributePowerDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerDivisorID")
+    = 0x00000403,
+    MTRClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID")
+    = 0x00000404,
+    MTRClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID")
+    = 0x00000405,
+    MTRClusterElectricalMeasurementAttributeInstantaneousVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousVoltageID")
+    = 0x00000500,
+    MTRClusterElectricalMeasurementAttributeInstantaneousLineCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousLineCurrentID")
+    = 0x00000501,
+    MTRClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID")
+    = 0x00000502,
+    MTRClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID")
+    = 0x00000503,
+    MTRClusterElectricalMeasurementAttributeInstantaneousPowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousPowerID")
+    = 0x00000504,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageID")
+    = 0x00000505,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinID")
+    = 0x00000506,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxID")
+    = 0x00000507,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentID")
+    = 0x00000508,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinID")
+    = 0x00000509,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxID")
+    = 0x0000050A,
+    MTRClusterElectricalMeasurementAttributeActivePowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerID")
+    = 0x0000050B,
+    MTRClusterElectricalMeasurementAttributeActivePowerMinID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinID")
+    = 0x0000050C,
+    MTRClusterElectricalMeasurementAttributeActivePowerMaxID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxID")
+    = 0x0000050D,
+    MTRClusterElectricalMeasurementAttributeReactivePowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerID")
+    = 0x0000050E,
+    MTRClusterElectricalMeasurementAttributeApparentPowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerID")
+    = 0x0000050F,
+    MTRClusterElectricalMeasurementAttributePowerFactorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorID")
+    = 0x00000510,
+    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID")
+    = 0x00000511,
+    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID")
+    = 0x00000513,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID")
+    = 0x00000514,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID")
+    = 0x00000515,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID")
+    = 0x00000516,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID")
+    = 0x00000517,
+    MTRClusterElectricalMeasurementAttributeAcVoltageMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageMultiplierID")
+    = 0x00000600,
+    MTRClusterElectricalMeasurementAttributeAcVoltageDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageDivisorID")
+    = 0x00000601,
+    MTRClusterElectricalMeasurementAttributeAcCurrentMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentMultiplierID")
+    = 0x00000602,
+    MTRClusterElectricalMeasurementAttributeAcCurrentDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentDivisorID")
+    = 0x00000603,
+    MTRClusterElectricalMeasurementAttributeAcPowerMultiplierID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerMultiplierID")
+    = 0x00000604,
+    MTRClusterElectricalMeasurementAttributeAcPowerDivisorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerDivisorID")
+    = 0x00000605,
+    MTRClusterElectricalMeasurementAttributeOverloadAlarmsMaskID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeOverloadAlarmsMaskID")
+    = 0x00000700,
+    MTRClusterElectricalMeasurementAttributeVoltageOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeVoltageOverloadID")
+    = 0x00000701,
+    MTRClusterElectricalMeasurementAttributeCurrentOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeCurrentOverloadID")
+    = 0x00000702,
+    MTRClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID")
+    = 0x00000800,
+    MTRClusterElectricalMeasurementAttributeAcVoltageOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageOverloadID")
+    = 0x00000801,
+    MTRClusterElectricalMeasurementAttributeAcCurrentOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentOverloadID")
+    = 0x00000802,
+    MTRClusterElectricalMeasurementAttributeAcActivePowerOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcActivePowerOverloadID")
+    = 0x00000803,
+    MTRClusterElectricalMeasurementAttributeAcReactivePowerOverloadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcReactivePowerOverloadID")
+    = 0x00000804,
+    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageID")
+    = 0x00000805,
+    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID")
+    = 0x00000806,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID")
+    = 0x00000807,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID")
+    = 0x00000808,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSagID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagID")
+    = 0x00000809,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellID")
+    = 0x0000080A,
+    MTRClusterElectricalMeasurementAttributeLineCurrentPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseBID")
+    = 0x00000901,
+    MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseBID")
+    = 0x00000902,
+    MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID")
+    = 0x00000903,
+    MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseBID")
+    = 0x00000905,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID")
+    = 0x00000906,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID")
+    = 0x00000907,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseBID")
+    = 0x00000908,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID")
+    = 0x00000909,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID")
+    = 0x0000090A,
+    MTRClusterElectricalMeasurementAttributeActivePowerPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseBID")
+    = 0x0000090B,
+    MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseBID")
+    = 0x0000090C,
+    MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID")
+    = 0x0000090D,
+    MTRClusterElectricalMeasurementAttributeReactivePowerPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseBID")
+    = 0x0000090E,
+    MTRClusterElectricalMeasurementAttributeApparentPowerPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseBID")
+    = 0x0000090F,
+    MTRClusterElectricalMeasurementAttributePowerFactorPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseBID")
+    = 0x00000910,
+    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseBID")
+    = 0x00000911,
+    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID")
+    = 0x00000912,
+    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID")
+    = 0x00000913,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID")
+    = 0x00000914,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID")
+    = 0x00000915,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID")
+    = 0x00000916,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID")
+    = 0x00000917,
+    MTRClusterElectricalMeasurementAttributeLineCurrentPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseCID")
+    = 0x00000A01,
+    MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseCID")
+    = 0x00000A02,
+    MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID")
+    = 0x00000A03,
+    MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseCID")
+    = 0x00000A05,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID")
+    = 0x00000A06,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID")
+    = 0x00000A07,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseCID")
+    = 0x00000A08,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID")
+    = 0x00000A09,
+    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID")
+    = 0x00000A0A,
+    MTRClusterElectricalMeasurementAttributeActivePowerPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseCID")
+    = 0x00000A0B,
+    MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseCID")
+    = 0x00000A0C,
+    MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID")
+    = 0x00000A0D,
+    MTRClusterElectricalMeasurementAttributeReactivePowerPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseCID")
+    = 0x00000A0E,
+    MTRClusterElectricalMeasurementAttributeApparentPowerPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseCID")
+    = 0x00000A0F,
+    MTRClusterElectricalMeasurementAttributePowerFactorPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseCID")
+    = 0x00000A10,
+    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseCID")
+    = 0x00000A11,
+    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID")
+    = 0x00000A12,
+    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID")
+    = 0x00000A13,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID")
+    = 0x00000A14,
+    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID")
+    = 0x00000A15,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID")
+    = 0x00000A16,
+    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID")
+    = 0x00000A17,
+    MTRClusterElectricalMeasurementAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterElectricalMeasurementAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterElectricalMeasurementAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterElectricalMeasurementAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterElectricalMeasurementAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterElectricalMeasurementAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster ElectricalMeasurement attributes
-    MTRClusterElectricalMeasurementAttributeMeasurementTypeID = 0x00000000,
-    MTRClusterElectricalMeasurementAttributeDcVoltageID = 0x00000100,
-    MTRClusterElectricalMeasurementAttributeDcVoltageMinID = 0x00000101,
-    MTRClusterElectricalMeasurementAttributeDcVoltageMaxID = 0x00000102,
-    MTRClusterElectricalMeasurementAttributeDcCurrentID = 0x00000103,
-    MTRClusterElectricalMeasurementAttributeDcCurrentMinID = 0x00000104,
-    MTRClusterElectricalMeasurementAttributeDcCurrentMaxID = 0x00000105,
-    MTRClusterElectricalMeasurementAttributeDcPowerID = 0x00000106,
-    MTRClusterElectricalMeasurementAttributeDcPowerMinID = 0x00000107,
-    MTRClusterElectricalMeasurementAttributeDcPowerMaxID = 0x00000108,
-    MTRClusterElectricalMeasurementAttributeDcVoltageMultiplierID = 0x00000200,
-    MTRClusterElectricalMeasurementAttributeDcVoltageDivisorID = 0x00000201,
-    MTRClusterElectricalMeasurementAttributeDcCurrentMultiplierID = 0x00000202,
-    MTRClusterElectricalMeasurementAttributeDcCurrentDivisorID = 0x00000203,
-    MTRClusterElectricalMeasurementAttributeDcPowerMultiplierID = 0x00000204,
-    MTRClusterElectricalMeasurementAttributeDcPowerDivisorID = 0x00000205,
-    MTRClusterElectricalMeasurementAttributeAcFrequencyID = 0x00000300,
-    MTRClusterElectricalMeasurementAttributeAcFrequencyMinID = 0x00000301,
-    MTRClusterElectricalMeasurementAttributeAcFrequencyMaxID = 0x00000302,
-    MTRClusterElectricalMeasurementAttributeNeutralCurrentID = 0x00000303,
-    MTRClusterElectricalMeasurementAttributeTotalActivePowerID = 0x00000304,
-    MTRClusterElectricalMeasurementAttributeTotalReactivePowerID = 0x00000305,
-    MTRClusterElectricalMeasurementAttributeTotalApparentPowerID = 0x00000306,
-    MTRClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID = 0x00000307,
-    MTRClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID = 0x00000308,
-    MTRClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID = 0x00000309,
-    MTRClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID = 0x0000030A,
-    MTRClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID = 0x0000030B,
-    MTRClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID = 0x0000030C,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID = 0x0000030D,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID = 0x0000030E,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID = 0x0000030F,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID = 0x00000310,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID = 0x00000311,
-    MTRClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID = 0x00000312,
-    MTRClusterElectricalMeasurementAttributeAcFrequencyMultiplierID = 0x00000400,
-    MTRClusterElectricalMeasurementAttributeAcFrequencyDivisorID = 0x00000401,
-    MTRClusterElectricalMeasurementAttributePowerMultiplierID = 0x00000402,
-    MTRClusterElectricalMeasurementAttributePowerDivisorID = 0x00000403,
-    MTRClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID = 0x00000404,
-    MTRClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID = 0x00000405,
-    MTRClusterElectricalMeasurementAttributeInstantaneousVoltageID = 0x00000500,
-    MTRClusterElectricalMeasurementAttributeInstantaneousLineCurrentID = 0x00000501,
-    MTRClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID = 0x00000502,
-    MTRClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID = 0x00000503,
-    MTRClusterElectricalMeasurementAttributeInstantaneousPowerID = 0x00000504,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageID = 0x00000505,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMinID = 0x00000506,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxID = 0x00000507,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentID = 0x00000508,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMinID = 0x00000509,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxID = 0x0000050A,
-    MTRClusterElectricalMeasurementAttributeActivePowerID = 0x0000050B,
-    MTRClusterElectricalMeasurementAttributeActivePowerMinID = 0x0000050C,
-    MTRClusterElectricalMeasurementAttributeActivePowerMaxID = 0x0000050D,
-    MTRClusterElectricalMeasurementAttributeReactivePowerID = 0x0000050E,
-    MTRClusterElectricalMeasurementAttributeApparentPowerID = 0x0000050F,
-    MTRClusterElectricalMeasurementAttributePowerFactorID = 0x00000510,
-    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID = 0x00000511,
-    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID = 0x00000513,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID = 0x00000514,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID = 0x00000515,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID = 0x00000516,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID = 0x00000517,
-    MTRClusterElectricalMeasurementAttributeAcVoltageMultiplierID = 0x00000600,
-    MTRClusterElectricalMeasurementAttributeAcVoltageDivisorID = 0x00000601,
-    MTRClusterElectricalMeasurementAttributeAcCurrentMultiplierID = 0x00000602,
-    MTRClusterElectricalMeasurementAttributeAcCurrentDivisorID = 0x00000603,
-    MTRClusterElectricalMeasurementAttributeAcPowerMultiplierID = 0x00000604,
-    MTRClusterElectricalMeasurementAttributeAcPowerDivisorID = 0x00000605,
-    MTRClusterElectricalMeasurementAttributeOverloadAlarmsMaskID = 0x00000700,
-    MTRClusterElectricalMeasurementAttributeVoltageOverloadID = 0x00000701,
-    MTRClusterElectricalMeasurementAttributeCurrentOverloadID = 0x00000702,
-    MTRClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID = 0x00000800,
-    MTRClusterElectricalMeasurementAttributeAcVoltageOverloadID = 0x00000801,
-    MTRClusterElectricalMeasurementAttributeAcCurrentOverloadID = 0x00000802,
-    MTRClusterElectricalMeasurementAttributeAcActivePowerOverloadID = 0x00000803,
-    MTRClusterElectricalMeasurementAttributeAcReactivePowerOverloadID = 0x00000804,
-    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageID = 0x00000805,
-    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID = 0x00000806,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID = 0x00000807,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID = 0x00000808,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSagID = 0x00000809,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellID = 0x0000080A,
-    MTRClusterElectricalMeasurementAttributeLineCurrentPhaseBID = 0x00000901,
-    MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseBID = 0x00000902,
-    MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID = 0x00000903,
-    MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseBID = 0x00000905,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID = 0x00000906,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID = 0x00000907,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseBID = 0x00000908,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID = 0x00000909,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID = 0x0000090A,
-    MTRClusterElectricalMeasurementAttributeActivePowerPhaseBID = 0x0000090B,
-    MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseBID = 0x0000090C,
-    MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID = 0x0000090D,
-    MTRClusterElectricalMeasurementAttributeReactivePowerPhaseBID = 0x0000090E,
-    MTRClusterElectricalMeasurementAttributeApparentPowerPhaseBID = 0x0000090F,
-    MTRClusterElectricalMeasurementAttributePowerFactorPhaseBID = 0x00000910,
-    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseBID = 0x00000911,
-    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID = 0x00000912,
-    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID = 0x00000913,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID = 0x00000914,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID = 0x00000915,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID = 0x00000916,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID = 0x00000917,
-    MTRClusterElectricalMeasurementAttributeLineCurrentPhaseCID = 0x00000A01,
-    MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseCID = 0x00000A02,
-    MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID = 0x00000A03,
-    MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseCID = 0x00000A05,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID = 0x00000A06,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID = 0x00000A07,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseCID = 0x00000A08,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID = 0x00000A09,
-    MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID = 0x00000A0A,
-    MTRClusterElectricalMeasurementAttributeActivePowerPhaseCID = 0x00000A0B,
-    MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseCID = 0x00000A0C,
-    MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID = 0x00000A0D,
-    MTRClusterElectricalMeasurementAttributeReactivePowerPhaseCID = 0x00000A0E,
-    MTRClusterElectricalMeasurementAttributeApparentPowerPhaseCID = 0x00000A0F,
-    MTRClusterElectricalMeasurementAttributePowerFactorPhaseCID = 0x00000A10,
-    MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseCID = 0x00000A11,
-    MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID = 0x00000A12,
-    MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID = 0x00000A13,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID = 0x00000A14,
-    MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID = 0x00000A15,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID = 0x00000A16,
-    MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID = 0x00000A17,
-    MTRClusterElectricalMeasurementAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterElectricalMeasurementAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterElectricalMeasurementAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterElectricalMeasurementAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterElectricalMeasurementAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
-
-    // Cluster UnitTesting attributes
-    MTRClusterUnitTestingAttributeBooleanID MTR_NEWLY_AVAILABLE = 0x00000000,
-    MTRClusterUnitTestingAttributeBitmap8ID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTRClusterUnitTestingAttributeBitmap16ID MTR_NEWLY_AVAILABLE = 0x00000002,
-    MTRClusterUnitTestingAttributeBitmap32ID MTR_NEWLY_AVAILABLE = 0x00000003,
-    MTRClusterUnitTestingAttributeBitmap64ID MTR_NEWLY_AVAILABLE = 0x00000004,
-    MTRClusterUnitTestingAttributeInt8uID MTR_NEWLY_AVAILABLE = 0x00000005,
-    MTRClusterUnitTestingAttributeInt16uID MTR_NEWLY_AVAILABLE = 0x00000006,
-    MTRClusterUnitTestingAttributeInt24uID MTR_NEWLY_AVAILABLE = 0x00000007,
-    MTRClusterUnitTestingAttributeInt32uID MTR_NEWLY_AVAILABLE = 0x00000008,
-    MTRClusterUnitTestingAttributeInt40uID MTR_NEWLY_AVAILABLE = 0x00000009,
-    MTRClusterUnitTestingAttributeInt48uID MTR_NEWLY_AVAILABLE = 0x0000000A,
-    MTRClusterUnitTestingAttributeInt56uID MTR_NEWLY_AVAILABLE = 0x0000000B,
-    MTRClusterUnitTestingAttributeInt64uID MTR_NEWLY_AVAILABLE = 0x0000000C,
-    MTRClusterUnitTestingAttributeInt8sID MTR_NEWLY_AVAILABLE = 0x0000000D,
-    MTRClusterUnitTestingAttributeInt16sID MTR_NEWLY_AVAILABLE = 0x0000000E,
-    MTRClusterUnitTestingAttributeInt24sID MTR_NEWLY_AVAILABLE = 0x0000000F,
-    MTRClusterUnitTestingAttributeInt32sID MTR_NEWLY_AVAILABLE = 0x00000010,
-    MTRClusterUnitTestingAttributeInt40sID MTR_NEWLY_AVAILABLE = 0x00000011,
-    MTRClusterUnitTestingAttributeInt48sID MTR_NEWLY_AVAILABLE = 0x00000012,
-    MTRClusterUnitTestingAttributeInt56sID MTR_NEWLY_AVAILABLE = 0x00000013,
-    MTRClusterUnitTestingAttributeInt64sID MTR_NEWLY_AVAILABLE = 0x00000014,
-    MTRClusterUnitTestingAttributeEnum8ID MTR_NEWLY_AVAILABLE = 0x00000015,
-    MTRClusterUnitTestingAttributeEnum16ID MTR_NEWLY_AVAILABLE = 0x00000016,
-    MTRClusterUnitTestingAttributeFloatSingleID MTR_NEWLY_AVAILABLE = 0x00000017,
-    MTRClusterUnitTestingAttributeFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00000018,
-    MTRClusterUnitTestingAttributeOctetStringID MTR_NEWLY_AVAILABLE = 0x00000019,
-    MTRClusterUnitTestingAttributeListInt8uID MTR_NEWLY_AVAILABLE = 0x0000001A,
-    MTRClusterUnitTestingAttributeListOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001B,
-    MTRClusterUnitTestingAttributeListStructOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001C,
-    MTRClusterUnitTestingAttributeLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001D,
-    MTRClusterUnitTestingAttributeCharStringID MTR_NEWLY_AVAILABLE = 0x0000001E,
-    MTRClusterUnitTestingAttributeLongCharStringID MTR_NEWLY_AVAILABLE = 0x0000001F,
-    MTRClusterUnitTestingAttributeEpochUsID MTR_NEWLY_AVAILABLE = 0x00000020,
-    MTRClusterUnitTestingAttributeEpochSID MTR_NEWLY_AVAILABLE = 0x00000021,
-    MTRClusterUnitTestingAttributeVendorIdID MTR_NEWLY_AVAILABLE = 0x00000022,
-    MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID MTR_NEWLY_AVAILABLE = 0x00000023,
-    MTRClusterUnitTestingAttributeEnumAttrID MTR_NEWLY_AVAILABLE = 0x00000024,
-    MTRClusterUnitTestingAttributeStructAttrID MTR_NEWLY_AVAILABLE = 0x00000025,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00000026,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00000027,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00000028,
-    MTRClusterUnitTestingAttributeRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00000029,
-    MTRClusterUnitTestingAttributeListLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000002A,
-    MTRClusterUnitTestingAttributeListFabricScopedID MTR_NEWLY_AVAILABLE = 0x0000002B,
-    MTRClusterUnitTestingAttributeTimedWriteBooleanID MTR_NEWLY_AVAILABLE = 0x00000030,
-    MTRClusterUnitTestingAttributeGeneralErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000031,
-    MTRClusterUnitTestingAttributeClusterErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000032,
-    MTRClusterUnitTestingAttributeUnsupportedID MTR_NEWLY_AVAILABLE = 0x000000FF,
-    MTRClusterUnitTestingAttributeNullableBooleanID MTR_NEWLY_AVAILABLE = 0x00004000,
-    MTRClusterUnitTestingAttributeNullableBitmap8ID MTR_NEWLY_AVAILABLE = 0x00004001,
-    MTRClusterUnitTestingAttributeNullableBitmap16ID MTR_NEWLY_AVAILABLE = 0x00004002,
-    MTRClusterUnitTestingAttributeNullableBitmap32ID MTR_NEWLY_AVAILABLE = 0x00004003,
-    MTRClusterUnitTestingAttributeNullableBitmap64ID MTR_NEWLY_AVAILABLE = 0x00004004,
-    MTRClusterUnitTestingAttributeNullableInt8uID MTR_NEWLY_AVAILABLE = 0x00004005,
-    MTRClusterUnitTestingAttributeNullableInt16uID MTR_NEWLY_AVAILABLE = 0x00004006,
-    MTRClusterUnitTestingAttributeNullableInt24uID MTR_NEWLY_AVAILABLE = 0x00004007,
-    MTRClusterUnitTestingAttributeNullableInt32uID MTR_NEWLY_AVAILABLE = 0x00004008,
-    MTRClusterUnitTestingAttributeNullableInt40uID MTR_NEWLY_AVAILABLE = 0x00004009,
-    MTRClusterUnitTestingAttributeNullableInt48uID MTR_NEWLY_AVAILABLE = 0x0000400A,
-    MTRClusterUnitTestingAttributeNullableInt56uID MTR_NEWLY_AVAILABLE = 0x0000400B,
-    MTRClusterUnitTestingAttributeNullableInt64uID MTR_NEWLY_AVAILABLE = 0x0000400C,
-    MTRClusterUnitTestingAttributeNullableInt8sID MTR_NEWLY_AVAILABLE = 0x0000400D,
-    MTRClusterUnitTestingAttributeNullableInt16sID MTR_NEWLY_AVAILABLE = 0x0000400E,
-    MTRClusterUnitTestingAttributeNullableInt24sID MTR_NEWLY_AVAILABLE = 0x0000400F,
-    MTRClusterUnitTestingAttributeNullableInt32sID MTR_NEWLY_AVAILABLE = 0x00004010,
-    MTRClusterUnitTestingAttributeNullableInt40sID MTR_NEWLY_AVAILABLE = 0x00004011,
-    MTRClusterUnitTestingAttributeNullableInt48sID MTR_NEWLY_AVAILABLE = 0x00004012,
-    MTRClusterUnitTestingAttributeNullableInt56sID MTR_NEWLY_AVAILABLE = 0x00004013,
-    MTRClusterUnitTestingAttributeNullableInt64sID MTR_NEWLY_AVAILABLE = 0x00004014,
-    MTRClusterUnitTestingAttributeNullableEnum8ID MTR_NEWLY_AVAILABLE = 0x00004015,
-    MTRClusterUnitTestingAttributeNullableEnum16ID MTR_NEWLY_AVAILABLE = 0x00004016,
-    MTRClusterUnitTestingAttributeNullableFloatSingleID MTR_NEWLY_AVAILABLE = 0x00004017,
-    MTRClusterUnitTestingAttributeNullableFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00004018,
-    MTRClusterUnitTestingAttributeNullableOctetStringID MTR_NEWLY_AVAILABLE = 0x00004019,
-    MTRClusterUnitTestingAttributeNullableCharStringID MTR_NEWLY_AVAILABLE = 0x0000401E,
-    MTRClusterUnitTestingAttributeNullableEnumAttrID MTR_NEWLY_AVAILABLE = 0x00004024,
-    MTRClusterUnitTestingAttributeNullableStructID MTR_NEWLY_AVAILABLE = 0x00004025,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00004026,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00004027,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00004028,
-    MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00004029,
-    MTRClusterUnitTestingAttributeWriteOnlyInt8uID MTR_NEWLY_AVAILABLE = 0x0000402A,
-    MTRClusterUnitTestingAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterUnitTestingAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterUnitTestingAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterUnitTestingAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterUnitTestingAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
-
-    // Cluster TestCluster attributes
-    MTRClusterTestClusterAttributeBooleanID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBooleanID") = 0x00000000,
-    MTRClusterTestClusterAttributeBitmap8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap8ID") = 0x00000001,
-    MTRClusterTestClusterAttributeBitmap16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap16ID")
-    = 0x00000002,
-    MTRClusterTestClusterAttributeBitmap32ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap32ID")
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasurementTypeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageID MTR_NEWLY_AVAILABLE = 0x00000100,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMinID MTR_NEWLY_AVAILABLE = 0x00000101,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMaxID MTR_NEWLY_AVAILABLE = 0x00000102,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentID MTR_NEWLY_AVAILABLE = 0x00000103,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMinID MTR_NEWLY_AVAILABLE = 0x00000104,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMaxID MTR_NEWLY_AVAILABLE = 0x00000105,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerID MTR_NEWLY_AVAILABLE = 0x00000106,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMinID MTR_NEWLY_AVAILABLE = 0x00000107,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMaxID MTR_NEWLY_AVAILABLE = 0x00000108,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMultiplierID MTR_NEWLY_AVAILABLE = 0x00000200,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageDivisorID MTR_NEWLY_AVAILABLE = 0x00000201,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMultiplierID MTR_NEWLY_AVAILABLE = 0x00000202,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentDivisorID MTR_NEWLY_AVAILABLE = 0x00000203,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMultiplierID MTR_NEWLY_AVAILABLE = 0x00000204,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerDivisorID MTR_NEWLY_AVAILABLE = 0x00000205,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyID MTR_NEWLY_AVAILABLE = 0x00000300,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMinID MTR_NEWLY_AVAILABLE = 0x00000301,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMaxID MTR_NEWLY_AVAILABLE = 0x00000302,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeNeutralCurrentID MTR_NEWLY_AVAILABLE = 0x00000303,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalActivePowerID MTR_NEWLY_AVAILABLE = 0x00000304,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalReactivePowerID MTR_NEWLY_AVAILABLE = 0x00000305,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalApparentPowerID MTR_NEWLY_AVAILABLE = 0x00000306,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000307,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000308,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000309,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030A,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030B,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030C,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030D,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030E,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x0000030F,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000310,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000311,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID MTR_NEWLY_AVAILABLE = 0x00000312,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMultiplierID MTR_NEWLY_AVAILABLE = 0x00000400,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyDivisorID MTR_NEWLY_AVAILABLE = 0x00000401,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerMultiplierID MTR_NEWLY_AVAILABLE = 0x00000402,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerDivisorID MTR_NEWLY_AVAILABLE = 0x00000403,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID MTR_NEWLY_AVAILABLE = 0x00000404,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID MTR_NEWLY_AVAILABLE = 0x00000405,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousVoltageID MTR_NEWLY_AVAILABLE = 0x00000500,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousLineCurrentID MTR_NEWLY_AVAILABLE = 0x00000501,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID MTR_NEWLY_AVAILABLE = 0x00000502,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID MTR_NEWLY_AVAILABLE = 0x00000503,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousPowerID MTR_NEWLY_AVAILABLE = 0x00000504,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageID MTR_NEWLY_AVAILABLE = 0x00000505,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinID MTR_NEWLY_AVAILABLE = 0x00000506,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxID MTR_NEWLY_AVAILABLE = 0x00000507,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentID MTR_NEWLY_AVAILABLE = 0x00000508,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinID MTR_NEWLY_AVAILABLE = 0x00000509,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxID MTR_NEWLY_AVAILABLE = 0x0000050A,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerID MTR_NEWLY_AVAILABLE = 0x0000050B,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinID MTR_NEWLY_AVAILABLE = 0x0000050C,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxID MTR_NEWLY_AVAILABLE = 0x0000050D,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerID MTR_NEWLY_AVAILABLE = 0x0000050E,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerID MTR_NEWLY_AVAILABLE = 0x0000050F,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorID MTR_NEWLY_AVAILABLE = 0x00000510,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID MTR_NEWLY_AVAILABLE = 0x00000511,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID MTR_NEWLY_AVAILABLE = 0x00000513,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID MTR_NEWLY_AVAILABLE = 0x00000514,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID MTR_NEWLY_AVAILABLE = 0x00000515,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID MTR_NEWLY_AVAILABLE = 0x00000516,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID MTR_NEWLY_AVAILABLE = 0x00000517,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageMultiplierID MTR_NEWLY_AVAILABLE = 0x00000600,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageDivisorID MTR_NEWLY_AVAILABLE = 0x00000601,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentMultiplierID MTR_NEWLY_AVAILABLE = 0x00000602,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentDivisorID MTR_NEWLY_AVAILABLE = 0x00000603,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerMultiplierID MTR_NEWLY_AVAILABLE = 0x00000604,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerDivisorID MTR_NEWLY_AVAILABLE = 0x00000605,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeOverloadAlarmsMaskID MTR_NEWLY_AVAILABLE = 0x00000700,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeVoltageOverloadID MTR_NEWLY_AVAILABLE = 0x00000701,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeCurrentOverloadID MTR_NEWLY_AVAILABLE = 0x00000702,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID MTR_NEWLY_AVAILABLE = 0x00000800,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageOverloadID MTR_NEWLY_AVAILABLE = 0x00000801,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentOverloadID MTR_NEWLY_AVAILABLE = 0x00000802,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcActivePowerOverloadID MTR_NEWLY_AVAILABLE = 0x00000803,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcReactivePowerOverloadID MTR_NEWLY_AVAILABLE = 0x00000804,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageID MTR_NEWLY_AVAILABLE = 0x00000805,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID MTR_NEWLY_AVAILABLE = 0x00000806,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID MTR_NEWLY_AVAILABLE = 0x00000807,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID MTR_NEWLY_AVAILABLE = 0x00000808,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagID MTR_NEWLY_AVAILABLE = 0x00000809,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellID MTR_NEWLY_AVAILABLE = 0x0000080A,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseBID MTR_NEWLY_AVAILABLE = 0x00000901,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseBID MTR_NEWLY_AVAILABLE = 0x00000902,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID MTR_NEWLY_AVAILABLE = 0x00000903,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseBID MTR_NEWLY_AVAILABLE = 0x00000905,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID MTR_NEWLY_AVAILABLE = 0x00000906,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID MTR_NEWLY_AVAILABLE = 0x00000907,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseBID MTR_NEWLY_AVAILABLE = 0x00000908,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID MTR_NEWLY_AVAILABLE = 0x00000909,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090A,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090B,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090C,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090D,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090E,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseBID MTR_NEWLY_AVAILABLE = 0x0000090F,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseBID MTR_NEWLY_AVAILABLE = 0x00000910,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseBID MTR_NEWLY_AVAILABLE
+    = 0x00000911,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID MTR_NEWLY_AVAILABLE = 0x00000912,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID MTR_NEWLY_AVAILABLE = 0x00000913,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID MTR_NEWLY_AVAILABLE = 0x00000914,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID MTR_NEWLY_AVAILABLE = 0x00000915,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID MTR_NEWLY_AVAILABLE = 0x00000916,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID MTR_NEWLY_AVAILABLE = 0x00000917,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A01,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A02,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A03,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseCID MTR_NEWLY_AVAILABLE = 0x00000A05,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A06,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A07,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A08,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A09,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0A,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0B,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0C,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0D,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0E,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A0F,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A10,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodPhaseCID MTR_NEWLY_AVAILABLE
+    = 0x00000A11,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A12,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A13,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A14,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A15,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A16,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID MTR_NEWLY_AVAILABLE = 0x00000A17,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterElectricalMeasurementAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster TestCluster deprecated attribute names
+    MTRClusterTestClusterAttributeBooleanID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeBooleanID")
+    = 0x00000000,
+    MTRClusterTestClusterAttributeBitmap8ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeBitmap8ID")
+    = 0x00000001,
+    MTRClusterTestClusterAttributeBitmap16ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeBitmap16ID")
+    = 0x00000002,
+    MTRClusterTestClusterAttributeBitmap32ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeBitmap32ID")
     = 0x00000003,
-    MTRClusterTestClusterAttributeBitmap64ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeBitmap64ID")
+    MTRClusterTestClusterAttributeBitmap64ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeBitmap64ID")
     = 0x00000004,
-    MTRClusterTestClusterAttributeInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt8uID") = 0x00000005,
-    MTRClusterTestClusterAttributeInt16uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt16uID") = 0x00000006,
-    MTRClusterTestClusterAttributeInt24uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt24uID") = 0x00000007,
-    MTRClusterTestClusterAttributeInt32uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt32uID") = 0x00000008,
-    MTRClusterTestClusterAttributeInt40uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt40uID") = 0x00000009,
-    MTRClusterTestClusterAttributeInt48uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt48uID") = 0x0000000A,
-    MTRClusterTestClusterAttributeInt56uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt56uID") = 0x0000000B,
-    MTRClusterTestClusterAttributeInt64uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt64uID") = 0x0000000C,
-    MTRClusterTestClusterAttributeInt8sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt8sID") = 0x0000000D,
-    MTRClusterTestClusterAttributeInt16sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt16sID") = 0x0000000E,
-    MTRClusterTestClusterAttributeInt24sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt24sID") = 0x0000000F,
-    MTRClusterTestClusterAttributeInt32sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt32sID") = 0x00000010,
-    MTRClusterTestClusterAttributeInt40sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt40sID") = 0x00000011,
-    MTRClusterTestClusterAttributeInt48sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt48sID") = 0x00000012,
-    MTRClusterTestClusterAttributeInt56sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt56sID") = 0x00000013,
-    MTRClusterTestClusterAttributeInt64sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeInt64sID") = 0x00000014,
-    MTRClusterTestClusterAttributeEnum8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnum8ID") = 0x00000015,
-    MTRClusterTestClusterAttributeEnum16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnum16ID") = 0x00000016,
-    MTRClusterTestClusterAttributeFloatSingleID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeFloatSingleID")
+    MTRClusterTestClusterAttributeInt8uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt8uID")
+    = 0x00000005,
+    MTRClusterTestClusterAttributeInt16uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt16uID")
+    = 0x00000006,
+    MTRClusterTestClusterAttributeInt24uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt24uID")
+    = 0x00000007,
+    MTRClusterTestClusterAttributeInt32uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt32uID")
+    = 0x00000008,
+    MTRClusterTestClusterAttributeInt40uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt40uID")
+    = 0x00000009,
+    MTRClusterTestClusterAttributeInt48uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt48uID")
+    = 0x0000000A,
+    MTRClusterTestClusterAttributeInt56uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt56uID")
+    = 0x0000000B,
+    MTRClusterTestClusterAttributeInt64uID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt64uID")
+    = 0x0000000C,
+    MTRClusterTestClusterAttributeInt8sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt8sID")
+    = 0x0000000D,
+    MTRClusterTestClusterAttributeInt16sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt16sID")
+    = 0x0000000E,
+    MTRClusterTestClusterAttributeInt24sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt24sID")
+    = 0x0000000F,
+    MTRClusterTestClusterAttributeInt32sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt32sID")
+    = 0x00000010,
+    MTRClusterTestClusterAttributeInt40sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt40sID")
+    = 0x00000011,
+    MTRClusterTestClusterAttributeInt48sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt48sID")
+    = 0x00000012,
+    MTRClusterTestClusterAttributeInt56sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt56sID")
+    = 0x00000013,
+    MTRClusterTestClusterAttributeInt64sID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeInt64sID")
+    = 0x00000014,
+    MTRClusterTestClusterAttributeEnum8ID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeEnum8ID")
+    = 0x00000015,
+    MTRClusterTestClusterAttributeEnum16ID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeEnum16ID")
+    = 0x00000016,
+    MTRClusterTestClusterAttributeFloatSingleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeFloatSingleID")
     = 0x00000017,
-    MTRClusterTestClusterAttributeFloatDoubleID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeFloatDoubleID")
+    MTRClusterTestClusterAttributeFloatDoubleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeFloatDoubleID")
     = 0x00000018,
-    MTRClusterTestClusterAttributeOctetStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeOctetStringID")
+    MTRClusterTestClusterAttributeOctetStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeOctetStringID")
     = 0x00000019,
-    MTRClusterTestClusterAttributeListInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeListInt8uID")
+    MTRClusterTestClusterAttributeListInt8uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListInt8uID")
     = 0x0000001A,
     MTRClusterTestClusterAttributeListOctetStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeListOctetStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListOctetStringID")
     = 0x0000001B,
     MTRClusterTestClusterAttributeListStructOctetStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeListStructOctetStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListStructOctetStringID")
     = 0x0000001C,
     MTRClusterTestClusterAttributeLongOctetStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeLongOctetStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeLongOctetStringID")
     = 0x0000001D,
-    MTRClusterTestClusterAttributeCharStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeCharStringID")
+    MTRClusterTestClusterAttributeCharStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeCharStringID")
     = 0x0000001E,
-    MTRClusterTestClusterAttributeLongCharStringID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeLongCharStringID")
+    MTRClusterTestClusterAttributeLongCharStringID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeLongCharStringID")
     = 0x0000001F,
-    MTRClusterTestClusterAttributeEpochUsID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEpochUsID") = 0x00000020,
-    MTRClusterTestClusterAttributeEpochSID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEpochSID") = 0x00000021,
-    MTRClusterTestClusterAttributeVendorIdID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeVendorIdID")
+    MTRClusterTestClusterAttributeEpochUsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeEpochUsID")
+    = 0x00000020,
+    MTRClusterTestClusterAttributeEpochSID MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterUnitTestingAttributeEpochSID")
+    = 0x00000021,
+    MTRClusterTestClusterAttributeVendorIdID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeVendorIdID")
     = 0x00000022,
     MTRClusterTestClusterAttributeListNullablesAndOptionalsStructID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListNullablesAndOptionalsStructID")
     = 0x00000023,
-    MTRClusterTestClusterAttributeEnumAttrID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeEnumAttrID")
+    MTRClusterTestClusterAttributeEnumAttrID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeEnumAttrID")
     = 0x00000024,
-    MTRClusterTestClusterAttributeStructAttrID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeStructAttrID")
+    MTRClusterTestClusterAttributeStructAttrID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeStructAttrID")
     = 0x00000025,
     MTRClusterTestClusterAttributeRangeRestrictedInt8uID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt8uID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8uID")
     = 0x00000026,
     MTRClusterTestClusterAttributeRangeRestrictedInt8sID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt8sID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8sID")
     = 0x00000027,
     MTRClusterTestClusterAttributeRangeRestrictedInt16uID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt16uID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16uID")
     = 0x00000028,
     MTRClusterTestClusterAttributeRangeRestrictedInt16sID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeRangeRestrictedInt16sID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16sID")
     = 0x00000029,
     MTRClusterTestClusterAttributeListLongOctetStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeListLongOctetStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListLongOctetStringID")
     = 0x0000002A,
     MTRClusterTestClusterAttributeListFabricScopedID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeListFabricScopedID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeListFabricScopedID")
     = 0x0000002B,
     MTRClusterTestClusterAttributeTimedWriteBooleanID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeTimedWriteBooleanID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeTimedWriteBooleanID")
     = 0x00000030,
     MTRClusterTestClusterAttributeGeneralErrorBooleanID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeGeneralErrorBooleanID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeGeneralErrorBooleanID")
     = 0x00000031,
     MTRClusterTestClusterAttributeClusterErrorBooleanID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeClusterErrorBooleanID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeClusterErrorBooleanID")
     = 0x00000032,
-    MTRClusterTestClusterAttributeUnsupportedID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeUnsupportedID")
+    MTRClusterTestClusterAttributeUnsupportedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeUnsupportedID")
     = 0x000000FF,
     MTRClusterTestClusterAttributeNullableBooleanID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableBooleanID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableBooleanID")
     = 0x00004000,
     MTRClusterTestClusterAttributeNullableBitmap8ID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableBitmap8ID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap8ID")
     = 0x00004001,
     MTRClusterTestClusterAttributeNullableBitmap16ID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableBitmap16ID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap16ID")
     = 0x00004002,
     MTRClusterTestClusterAttributeNullableBitmap32ID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableBitmap32ID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap32ID")
     = 0x00004003,
     MTRClusterTestClusterAttributeNullableBitmap64ID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableBitmap64ID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap64ID")
     = 0x00004004,
-    MTRClusterTestClusterAttributeNullableInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt8uID")
+    MTRClusterTestClusterAttributeNullableInt8uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8uID")
     = 0x00004005,
-    MTRClusterTestClusterAttributeNullableInt16uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt16uID")
+    MTRClusterTestClusterAttributeNullableInt16uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16uID")
     = 0x00004006,
-    MTRClusterTestClusterAttributeNullableInt24uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt24uID")
+    MTRClusterTestClusterAttributeNullableInt24uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24uID")
     = 0x00004007,
-    MTRClusterTestClusterAttributeNullableInt32uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt32uID")
+    MTRClusterTestClusterAttributeNullableInt32uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32uID")
     = 0x00004008,
-    MTRClusterTestClusterAttributeNullableInt40uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt40uID")
+    MTRClusterTestClusterAttributeNullableInt40uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40uID")
     = 0x00004009,
-    MTRClusterTestClusterAttributeNullableInt48uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt48uID")
+    MTRClusterTestClusterAttributeNullableInt48uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48uID")
     = 0x0000400A,
-    MTRClusterTestClusterAttributeNullableInt56uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt56uID")
+    MTRClusterTestClusterAttributeNullableInt56uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56uID")
     = 0x0000400B,
-    MTRClusterTestClusterAttributeNullableInt64uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt64uID")
+    MTRClusterTestClusterAttributeNullableInt64uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64uID")
     = 0x0000400C,
-    MTRClusterTestClusterAttributeNullableInt8sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt8sID")
+    MTRClusterTestClusterAttributeNullableInt8sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8sID")
     = 0x0000400D,
-    MTRClusterTestClusterAttributeNullableInt16sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt16sID")
+    MTRClusterTestClusterAttributeNullableInt16sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16sID")
     = 0x0000400E,
-    MTRClusterTestClusterAttributeNullableInt24sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt24sID")
+    MTRClusterTestClusterAttributeNullableInt24sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24sID")
     = 0x0000400F,
-    MTRClusterTestClusterAttributeNullableInt32sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt32sID")
+    MTRClusterTestClusterAttributeNullableInt32sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32sID")
     = 0x00004010,
-    MTRClusterTestClusterAttributeNullableInt40sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt40sID")
+    MTRClusterTestClusterAttributeNullableInt40sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40sID")
     = 0x00004011,
-    MTRClusterTestClusterAttributeNullableInt48sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt48sID")
+    MTRClusterTestClusterAttributeNullableInt48sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48sID")
     = 0x00004012,
-    MTRClusterTestClusterAttributeNullableInt56sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt56sID")
+    MTRClusterTestClusterAttributeNullableInt56sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56sID")
     = 0x00004013,
-    MTRClusterTestClusterAttributeNullableInt64sID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableInt64sID")
+    MTRClusterTestClusterAttributeNullableInt64sID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64sID")
     = 0x00004014,
-    MTRClusterTestClusterAttributeNullableEnum8ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableEnum8ID")
+    MTRClusterTestClusterAttributeNullableEnum8ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum8ID")
     = 0x00004015,
-    MTRClusterTestClusterAttributeNullableEnum16ID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableEnum16ID")
+    MTRClusterTestClusterAttributeNullableEnum16ID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum16ID")
     = 0x00004016,
     MTRClusterTestClusterAttributeNullableFloatSingleID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableFloatSingleID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatSingleID")
     = 0x00004017,
     MTRClusterTestClusterAttributeNullableFloatDoubleID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableFloatDoubleID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatDoubleID")
     = 0x00004018,
     MTRClusterTestClusterAttributeNullableOctetStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableOctetStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableOctetStringID")
     = 0x00004019,
     MTRClusterTestClusterAttributeNullableCharStringID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableCharStringID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableCharStringID")
     = 0x0000401E,
     MTRClusterTestClusterAttributeNullableEnumAttrID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableEnumAttrID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnumAttrID")
     = 0x00004024,
-    MTRClusterTestClusterAttributeNullableStructID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeNullableStructID")
+    MTRClusterTestClusterAttributeNullableStructID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableStructID")
     = 0x00004025,
     MTRClusterTestClusterAttributeNullableRangeRestrictedInt8uID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8uID")
     = 0x00004026,
     MTRClusterTestClusterAttributeNullableRangeRestrictedInt8sID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8sID")
     = 0x00004027,
     MTRClusterTestClusterAttributeNullableRangeRestrictedInt16uID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16uID")
     = 0x00004028,
     MTRClusterTestClusterAttributeNullableRangeRestrictedInt16sID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID")
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16sID")
     = 0x00004029,
-    MTRClusterTestClusterAttributeWriteOnlyInt8uID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingAttributeWriteOnlyInt8uID")
+    MTRClusterTestClusterAttributeWriteOnlyInt8uID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeWriteOnlyInt8uID")
     = 0x0000402A,
-    MTRClusterTestClusterAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterTestClusterAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterTestClusterAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterTestClusterAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterTestClusterAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRClusterTestClusterAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterTestClusterAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterTestClusterAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterTestClusterAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterTestClusterAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterUnitTestingAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
+
+    // Cluster UnitTesting attributes
+    MTRAttributeIDTypeClusterUnitTestingAttributeBooleanID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterUnitTestingAttributeBitmap8ID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterUnitTestingAttributeBitmap16ID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterUnitTestingAttributeBitmap32ID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterUnitTestingAttributeBitmap64ID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt8uID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt16uID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt24uID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt32uID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt40uID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt48uID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt56uID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt64uID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt8sID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt16sID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt24sID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt32sID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt40sID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt48sID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt56sID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterUnitTestingAttributeInt64sID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRAttributeIDTypeClusterUnitTestingAttributeEnum8ID MTR_NEWLY_AVAILABLE = 0x00000015,
+    MTRAttributeIDTypeClusterUnitTestingAttributeEnum16ID MTR_NEWLY_AVAILABLE = 0x00000016,
+    MTRAttributeIDTypeClusterUnitTestingAttributeFloatSingleID MTR_NEWLY_AVAILABLE = 0x00000017,
+    MTRAttributeIDTypeClusterUnitTestingAttributeFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00000018,
+    MTRAttributeIDTypeClusterUnitTestingAttributeOctetStringID MTR_NEWLY_AVAILABLE = 0x00000019,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListInt8uID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListStructOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRAttributeIDTypeClusterUnitTestingAttributeLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRAttributeIDTypeClusterUnitTestingAttributeCharStringID MTR_NEWLY_AVAILABLE = 0x0000001E,
+    MTRAttributeIDTypeClusterUnitTestingAttributeLongCharStringID MTR_NEWLY_AVAILABLE = 0x0000001F,
+    MTRAttributeIDTypeClusterUnitTestingAttributeEpochUsID MTR_NEWLY_AVAILABLE = 0x00000020,
+    MTRAttributeIDTypeClusterUnitTestingAttributeEpochSID MTR_NEWLY_AVAILABLE = 0x00000021,
+    MTRAttributeIDTypeClusterUnitTestingAttributeVendorIdID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListNullablesAndOptionalsStructID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRAttributeIDTypeClusterUnitTestingAttributeEnumAttrID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRAttributeIDTypeClusterUnitTestingAttributeStructAttrID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00000026,
+    MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00000027,
+    MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00000029,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListLongOctetStringID MTR_NEWLY_AVAILABLE = 0x0000002A,
+    MTRAttributeIDTypeClusterUnitTestingAttributeListFabricScopedID MTR_NEWLY_AVAILABLE = 0x0000002B,
+    MTRAttributeIDTypeClusterUnitTestingAttributeTimedWriteBooleanID MTR_NEWLY_AVAILABLE = 0x00000030,
+    MTRAttributeIDTypeClusterUnitTestingAttributeGeneralErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000031,
+    MTRAttributeIDTypeClusterUnitTestingAttributeClusterErrorBooleanID MTR_NEWLY_AVAILABLE = 0x00000032,
+    MTRAttributeIDTypeClusterUnitTestingAttributeUnsupportedID MTR_NEWLY_AVAILABLE = 0x000000FF,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableBooleanID MTR_NEWLY_AVAILABLE = 0x00004000,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap8ID MTR_NEWLY_AVAILABLE = 0x00004001,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap16ID MTR_NEWLY_AVAILABLE = 0x00004002,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap32ID MTR_NEWLY_AVAILABLE = 0x00004003,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap64ID MTR_NEWLY_AVAILABLE = 0x00004004,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8uID MTR_NEWLY_AVAILABLE = 0x00004005,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16uID MTR_NEWLY_AVAILABLE = 0x00004006,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24uID MTR_NEWLY_AVAILABLE = 0x00004007,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32uID MTR_NEWLY_AVAILABLE = 0x00004008,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40uID MTR_NEWLY_AVAILABLE = 0x00004009,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48uID MTR_NEWLY_AVAILABLE = 0x0000400A,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56uID MTR_NEWLY_AVAILABLE = 0x0000400B,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64uID MTR_NEWLY_AVAILABLE = 0x0000400C,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8sID MTR_NEWLY_AVAILABLE = 0x0000400D,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16sID MTR_NEWLY_AVAILABLE = 0x0000400E,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24sID MTR_NEWLY_AVAILABLE = 0x0000400F,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32sID MTR_NEWLY_AVAILABLE = 0x00004010,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40sID MTR_NEWLY_AVAILABLE = 0x00004011,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48sID MTR_NEWLY_AVAILABLE = 0x00004012,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56sID MTR_NEWLY_AVAILABLE = 0x00004013,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64sID MTR_NEWLY_AVAILABLE = 0x00004014,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum8ID MTR_NEWLY_AVAILABLE = 0x00004015,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum16ID MTR_NEWLY_AVAILABLE = 0x00004016,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatSingleID MTR_NEWLY_AVAILABLE = 0x00004017,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatDoubleID MTR_NEWLY_AVAILABLE = 0x00004018,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableOctetStringID MTR_NEWLY_AVAILABLE = 0x00004019,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableCharStringID MTR_NEWLY_AVAILABLE = 0x0000401E,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnumAttrID MTR_NEWLY_AVAILABLE = 0x00004024,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableStructID MTR_NEWLY_AVAILABLE = 0x00004025,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8uID MTR_NEWLY_AVAILABLE = 0x00004026,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8sID MTR_NEWLY_AVAILABLE = 0x00004027,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16uID MTR_NEWLY_AVAILABLE = 0x00004028,
+    MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16sID MTR_NEWLY_AVAILABLE = 0x00004029,
+    MTRAttributeIDTypeClusterUnitTestingAttributeWriteOnlyInt8uID MTR_NEWLY_AVAILABLE = 0x0000402A,
+    MTRAttributeIDTypeClusterUnitTestingAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterUnitTestingAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterUnitTestingAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterUnitTestingAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterUnitTestingAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
+    // Cluster FaultInjection deprecated attribute names
+    MTRClusterFaultInjectionAttributeGeneratedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFaultInjectionAttributeGeneratedCommandListID")
+    = MTRClusterGlobalAttributeGeneratedCommandListID,
+    MTRClusterFaultInjectionAttributeAcceptedCommandListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFaultInjectionAttributeAcceptedCommandListID")
+    = MTRClusterGlobalAttributeAcceptedCommandListID,
+    MTRClusterFaultInjectionAttributeAttributeListID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFaultInjectionAttributeAttributeListID")
+    = MTRClusterGlobalAttributeAttributeListID,
+    MTRClusterFaultInjectionAttributeFeatureMapID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFaultInjectionAttributeFeatureMapID")
+    = MTRClusterGlobalAttributeFeatureMapID,
+    MTRClusterFaultInjectionAttributeClusterRevisionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRAttributeIDTypeClusterFaultInjectionAttributeClusterRevisionID")
+    = MTRClusterGlobalAttributeClusterRevisionID,
 
     // Cluster FaultInjection attributes
-    MTRClusterFaultInjectionAttributeGeneratedCommandListID = MTRClusterGlobalAttributeGeneratedCommandListID,
-    MTRClusterFaultInjectionAttributeAcceptedCommandListID = MTRClusterGlobalAttributeAcceptedCommandListID,
-    MTRClusterFaultInjectionAttributeAttributeListID = MTRClusterGlobalAttributeAttributeListID,
-    MTRClusterFaultInjectionAttributeFeatureMapID = MTRClusterGlobalAttributeFeatureMapID,
-    MTRClusterFaultInjectionAttributeClusterRevisionID = MTRClusterGlobalAttributeClusterRevisionID,
+    MTRAttributeIDTypeClusterFaultInjectionAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+    MTRAttributeIDTypeClusterFaultInjectionAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+    MTRAttributeIDTypeClusterFaultInjectionAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterFaultInjectionAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterFaultInjectionAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
 
 };
 
 #pragma mark - Commands IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) {
+typedef NS_ENUM(uint32_t, MTRCommandIDType) {
+
+    // Cluster Identify deprecated command id names
+    MTRClusterIdentifyCommandIdentifyID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterIdentifyCommandIdentifyID")
+    = 0x00000000,
+    MTRClusterIdentifyCommandTriggerEffectID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterIdentifyCommandTriggerEffectID")
+    = 0x00000040,
 
     // Cluster Identify commands
-    MTRClusterIdentifyCommandIdentifyID = 0x00000000,
-    MTRClusterIdentifyCommandTriggerEffectID = 0x00000040,
+    MTRCommandIDTypeClusterIdentifyCommandIdentifyID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterIdentifyCommandTriggerEffectID MTR_NEWLY_AVAILABLE = 0x00000040,
+
+    // Cluster Groups deprecated command id names
+    MTRClusterGroupsCommandAddGroupID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterGroupsCommandAddGroupID")
+    = 0x00000000,
+    MTRClusterGroupsCommandAddGroupResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandAddGroupResponseID")
+    = 0x00000000,
+    MTRClusterGroupsCommandViewGroupID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterGroupsCommandViewGroupID")
+    = 0x00000001,
+    MTRClusterGroupsCommandViewGroupResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandViewGroupResponseID")
+    = 0x00000001,
+    MTRClusterGroupsCommandGetGroupMembershipID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipID")
+    = 0x00000002,
+    MTRClusterGroupsCommandGetGroupMembershipResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipResponseID")
+    = 0x00000002,
+    MTRClusterGroupsCommandRemoveGroupID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterGroupsCommandRemoveGroupID")
+    = 0x00000003,
+    MTRClusterGroupsCommandRemoveGroupResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandRemoveGroupResponseID")
+    = 0x00000003,
+    MTRClusterGroupsCommandRemoveAllGroupsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandRemoveAllGroupsID")
+    = 0x00000004,
+    MTRClusterGroupsCommandAddGroupIfIdentifyingID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupsCommandAddGroupIfIdentifyingID")
+    = 0x00000005,
 
     // Cluster Groups commands
-    MTRClusterGroupsCommandAddGroupID = 0x00000000,
-    MTRClusterGroupsCommandAddGroupResponseID = 0x00000000,
-    MTRClusterGroupsCommandViewGroupID = 0x00000001,
-    MTRClusterGroupsCommandViewGroupResponseID = 0x00000001,
-    MTRClusterGroupsCommandGetGroupMembershipID = 0x00000002,
-    MTRClusterGroupsCommandGetGroupMembershipResponseID = 0x00000002,
-    MTRClusterGroupsCommandRemoveGroupID = 0x00000003,
-    MTRClusterGroupsCommandRemoveGroupResponseID = 0x00000003,
-    MTRClusterGroupsCommandRemoveAllGroupsID = 0x00000004,
-    MTRClusterGroupsCommandAddGroupIfIdentifyingID = 0x00000005,
+    MTRCommandIDTypeClusterGroupsCommandAddGroupID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterGroupsCommandAddGroupResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterGroupsCommandViewGroupID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterGroupsCommandViewGroupResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterGroupsCommandGetGroupMembershipResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterGroupsCommandRemoveGroupID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterGroupsCommandRemoveGroupResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterGroupsCommandRemoveAllGroupsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterGroupsCommandAddGroupIfIdentifyingID MTR_NEWLY_AVAILABLE = 0x00000005,
+
+    // Cluster Scenes deprecated command id names
+    MTRClusterScenesCommandAddSceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandAddSceneID")
+    = 0x00000000,
+    MTRClusterScenesCommandAddSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandAddSceneResponseID")
+    = 0x00000000,
+    MTRClusterScenesCommandViewSceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandViewSceneID")
+    = 0x00000001,
+    MTRClusterScenesCommandViewSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandViewSceneResponseID")
+    = 0x00000001,
+    MTRClusterScenesCommandRemoveSceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandRemoveSceneID")
+    = 0x00000002,
+    MTRClusterScenesCommandRemoveSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandRemoveSceneResponseID")
+    = 0x00000002,
+    MTRClusterScenesCommandRemoveAllScenesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandRemoveAllScenesID")
+    = 0x00000003,
+    MTRClusterScenesCommandRemoveAllScenesResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandRemoveAllScenesResponseID")
+    = 0x00000003,
+    MTRClusterScenesCommandStoreSceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandStoreSceneID")
+    = 0x00000004,
+    MTRClusterScenesCommandStoreSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandStoreSceneResponseID")
+    = 0x00000004,
+    MTRClusterScenesCommandRecallSceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandRecallSceneID")
+    = 0x00000005,
+    MTRClusterScenesCommandGetSceneMembershipID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandGetSceneMembershipID")
+    = 0x00000006,
+    MTRClusterScenesCommandGetSceneMembershipResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandGetSceneMembershipResponseID")
+    = 0x00000006,
+    MTRClusterScenesCommandEnhancedAddSceneID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandEnhancedAddSceneID")
+    = 0x00000040,
+    MTRClusterScenesCommandEnhancedAddSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandEnhancedAddSceneResponseID")
+    = 0x00000040,
+    MTRClusterScenesCommandEnhancedViewSceneID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandEnhancedViewSceneID")
+    = 0x00000041,
+    MTRClusterScenesCommandEnhancedViewSceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandEnhancedViewSceneResponseID")
+    = 0x00000041,
+    MTRClusterScenesCommandCopySceneID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterScenesCommandCopySceneID")
+    = 0x00000042,
+    MTRClusterScenesCommandCopySceneResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterScenesCommandCopySceneResponseID")
+    = 0x00000042,
 
     // Cluster Scenes commands
-    MTRClusterScenesCommandAddSceneID = 0x00000000,
-    MTRClusterScenesCommandAddSceneResponseID = 0x00000000,
-    MTRClusterScenesCommandViewSceneID = 0x00000001,
-    MTRClusterScenesCommandViewSceneResponseID = 0x00000001,
-    MTRClusterScenesCommandRemoveSceneID = 0x00000002,
-    MTRClusterScenesCommandRemoveSceneResponseID = 0x00000002,
-    MTRClusterScenesCommandRemoveAllScenesID = 0x00000003,
-    MTRClusterScenesCommandRemoveAllScenesResponseID = 0x00000003,
-    MTRClusterScenesCommandStoreSceneID = 0x00000004,
-    MTRClusterScenesCommandStoreSceneResponseID = 0x00000004,
-    MTRClusterScenesCommandRecallSceneID = 0x00000005,
-    MTRClusterScenesCommandGetSceneMembershipID = 0x00000006,
-    MTRClusterScenesCommandGetSceneMembershipResponseID = 0x00000006,
-    MTRClusterScenesCommandEnhancedAddSceneID = 0x00000040,
-    MTRClusterScenesCommandEnhancedAddSceneResponseID = 0x00000040,
-    MTRClusterScenesCommandEnhancedViewSceneID = 0x00000041,
-    MTRClusterScenesCommandEnhancedViewSceneResponseID = 0x00000041,
-    MTRClusterScenesCommandCopySceneID = 0x00000042,
-    MTRClusterScenesCommandCopySceneResponseID = 0x00000042,
+    MTRCommandIDTypeClusterScenesCommandAddSceneID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterScenesCommandAddSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterScenesCommandViewSceneID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterScenesCommandViewSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterScenesCommandRemoveSceneID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterScenesCommandRemoveSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterScenesCommandRemoveAllScenesID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterScenesCommandRemoveAllScenesResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterScenesCommandStoreSceneID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterScenesCommandStoreSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterScenesCommandRecallSceneID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterScenesCommandGetSceneMembershipID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterScenesCommandGetSceneMembershipResponseID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterScenesCommandEnhancedAddSceneID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRCommandIDTypeClusterScenesCommandEnhancedAddSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRCommandIDTypeClusterScenesCommandEnhancedViewSceneID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRCommandIDTypeClusterScenesCommandEnhancedViewSceneResponseID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRCommandIDTypeClusterScenesCommandCopySceneID MTR_NEWLY_AVAILABLE = 0x00000042,
+    MTRCommandIDTypeClusterScenesCommandCopySceneResponseID MTR_NEWLY_AVAILABLE = 0x00000042,
+
+    // Cluster OnOff deprecated command id names
+    MTRClusterOnOffCommandOffID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterOnOffCommandOffID") = 0x00000000,
+    MTRClusterOnOffCommandOnID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterOnOffCommandOnID") = 0x00000001,
+    MTRClusterOnOffCommandToggleID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterOnOffCommandToggleID") = 0x00000002,
+    MTRClusterOnOffCommandOffWithEffectID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterOnOffCommandOffWithEffectID")
+    = 0x00000040,
+    MTRClusterOnOffCommandOnWithRecallGlobalSceneID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOnOffCommandOnWithRecallGlobalSceneID")
+    = 0x00000041,
+    MTRClusterOnOffCommandOnWithTimedOffID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterOnOffCommandOnWithTimedOffID")
+    = 0x00000042,
 
     // Cluster OnOff commands
-    MTRClusterOnOffCommandOffID = 0x00000000,
-    MTRClusterOnOffCommandOnID = 0x00000001,
-    MTRClusterOnOffCommandToggleID = 0x00000002,
-    MTRClusterOnOffCommandOffWithEffectID = 0x00000040,
-    MTRClusterOnOffCommandOnWithRecallGlobalSceneID = 0x00000041,
-    MTRClusterOnOffCommandOnWithTimedOffID = 0x00000042,
+    MTRCommandIDTypeClusterOnOffCommandOffID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterOnOffCommandOnID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterOnOffCommandToggleID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterOnOffCommandOffWithEffectID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRCommandIDTypeClusterOnOffCommandOnWithRecallGlobalSceneID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRCommandIDTypeClusterOnOffCommandOnWithTimedOffID MTR_NEWLY_AVAILABLE = 0x00000042,
+
+    // Cluster LevelControl deprecated command id names
+    MTRClusterLevelControlCommandMoveToLevelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandMoveToLevelID")
+    = 0x00000000,
+    MTRClusterLevelControlCommandMoveID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterLevelControlCommandMoveID")
+    = 0x00000001,
+    MTRClusterLevelControlCommandStepID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterLevelControlCommandStepID")
+    = 0x00000002,
+    MTRClusterLevelControlCommandStopID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterLevelControlCommandStopID")
+    = 0x00000003,
+    MTRClusterLevelControlCommandMoveToLevelWithOnOffID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandMoveToLevelWithOnOffID")
+    = 0x00000004,
+    MTRClusterLevelControlCommandMoveWithOnOffID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandMoveWithOnOffID")
+    = 0x00000005,
+    MTRClusterLevelControlCommandStepWithOnOffID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandStepWithOnOffID")
+    = 0x00000006,
+    MTRClusterLevelControlCommandStopWithOnOffID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandStopWithOnOffID")
+    = 0x00000007,
+    MTRClusterLevelControlCommandMoveToClosestFrequencyID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterLevelControlCommandMoveToClosestFrequencyID")
+    = 0x00000008,
 
     // Cluster LevelControl commands
-    MTRClusterLevelControlCommandMoveToLevelID = 0x00000000,
-    MTRClusterLevelControlCommandMoveID = 0x00000001,
-    MTRClusterLevelControlCommandStepID = 0x00000002,
-    MTRClusterLevelControlCommandStopID = 0x00000003,
-    MTRClusterLevelControlCommandMoveToLevelWithOnOffID = 0x00000004,
-    MTRClusterLevelControlCommandMoveWithOnOffID = 0x00000005,
-    MTRClusterLevelControlCommandStepWithOnOffID = 0x00000006,
-    MTRClusterLevelControlCommandStopWithOnOffID = 0x00000007,
-    MTRClusterLevelControlCommandMoveToClosestFrequencyID = 0x00000008,
+    MTRCommandIDTypeClusterLevelControlCommandMoveToLevelID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterLevelControlCommandMoveID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterLevelControlCommandStepID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterLevelControlCommandStopID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterLevelControlCommandMoveToLevelWithOnOffID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterLevelControlCommandMoveWithOnOffID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterLevelControlCommandStepWithOnOffID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterLevelControlCommandStopWithOnOffID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterLevelControlCommandMoveToClosestFrequencyID MTR_NEWLY_AVAILABLE = 0x00000008,
+
+    // Cluster Actions deprecated command id names
+    MTRClusterActionsCommandInstantActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandInstantActionID")
+    = 0x00000000,
+    MTRClusterActionsCommandInstantActionWithTransitionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterActionsCommandInstantActionWithTransitionID")
+    = 0x00000001,
+    MTRClusterActionsCommandStartActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandStartActionID")
+    = 0x00000002,
+    MTRClusterActionsCommandStartActionWithDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterActionsCommandStartActionWithDurationID")
+    = 0x00000003,
+    MTRClusterActionsCommandStopActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandStopActionID")
+    = 0x00000004,
+    MTRClusterActionsCommandPauseActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandPauseActionID")
+    = 0x00000005,
+    MTRClusterActionsCommandPauseActionWithDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterActionsCommandPauseActionWithDurationID")
+    = 0x00000006,
+    MTRClusterActionsCommandResumeActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandResumeActionID")
+    = 0x00000007,
+    MTRClusterActionsCommandEnableActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandEnableActionID")
+    = 0x00000008,
+    MTRClusterActionsCommandEnableActionWithDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterActionsCommandEnableActionWithDurationID")
+    = 0x00000009,
+    MTRClusterActionsCommandDisableActionID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterActionsCommandDisableActionID")
+    = 0x0000000A,
+    MTRClusterActionsCommandDisableActionWithDurationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterActionsCommandDisableActionWithDurationID")
+    = 0x0000000B,
 
     // Cluster Actions commands
-    MTRClusterActionsCommandInstantActionID = 0x00000000,
-    MTRClusterActionsCommandInstantActionWithTransitionID = 0x00000001,
-    MTRClusterActionsCommandStartActionID = 0x00000002,
-    MTRClusterActionsCommandStartActionWithDurationID = 0x00000003,
-    MTRClusterActionsCommandStopActionID = 0x00000004,
-    MTRClusterActionsCommandPauseActionID = 0x00000005,
-    MTRClusterActionsCommandPauseActionWithDurationID = 0x00000006,
-    MTRClusterActionsCommandResumeActionID = 0x00000007,
-    MTRClusterActionsCommandEnableActionID = 0x00000008,
-    MTRClusterActionsCommandEnableActionWithDurationID = 0x00000009,
-    MTRClusterActionsCommandDisableActionID = 0x0000000A,
-    MTRClusterActionsCommandDisableActionWithDurationID = 0x0000000B,
+    MTRCommandIDTypeClusterActionsCommandInstantActionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterActionsCommandInstantActionWithTransitionID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterActionsCommandStartActionID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterActionsCommandStartActionWithDurationID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterActionsCommandStopActionID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterActionsCommandPauseActionID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterActionsCommandPauseActionWithDurationID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterActionsCommandResumeActionID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterActionsCommandEnableActionID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterActionsCommandEnableActionWithDurationID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterActionsCommandDisableActionID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterActionsCommandDisableActionWithDurationID MTR_NEWLY_AVAILABLE = 0x0000000B,
+
+    // Cluster Basic deprecated command id names
+    MTRClusterBasicCommandMfgSpecificPingID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterBasicCommandMfgSpecificPingID")
+    = 0x10020000,
 
     // Cluster Basic commands
-    MTRClusterBasicCommandMfgSpecificPingID = 0x10020000,
+    MTRCommandIDTypeClusterBasicCommandMfgSpecificPingID MTR_NEWLY_AVAILABLE = 0x10020000,
+
+    // Cluster OtaSoftwareUpdateProvider deprecated command id names
+    MTRClusterOtaSoftwareUpdateProviderCommandQueryImageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandQueryImageID")
+    = 0x00000000,
+    MTRClusterOtaSoftwareUpdateProviderCommandQueryImageResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandQueryImageResponseID")
+    = 0x00000001,
+    MTRClusterOtaSoftwareUpdateProviderCommandApplyUpdateRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandApplyUpdateRequestID")
+    = 0x00000002,
+    MTRClusterOtaSoftwareUpdateProviderCommandApplyUpdateResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandApplyUpdateResponseID")
+    = 0x00000003,
+    MTRClusterOtaSoftwareUpdateProviderCommandNotifyUpdateAppliedID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandNotifyUpdateAppliedID")
+    = 0x00000004,
 
     // Cluster OtaSoftwareUpdateProvider commands
-    MTRClusterOtaSoftwareUpdateProviderCommandQueryImageID = 0x00000000,
-    MTRClusterOtaSoftwareUpdateProviderCommandQueryImageResponseID = 0x00000001,
-    MTRClusterOtaSoftwareUpdateProviderCommandApplyUpdateRequestID = 0x00000002,
-    MTRClusterOtaSoftwareUpdateProviderCommandApplyUpdateResponseID = 0x00000003,
-    MTRClusterOtaSoftwareUpdateProviderCommandNotifyUpdateAppliedID = 0x00000004,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandQueryImageID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandQueryImageResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandApplyUpdateRequestID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandApplyUpdateResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateProviderCommandNotifyUpdateAppliedID MTR_NEWLY_AVAILABLE = 0x00000004,
+
+    // Cluster OtaSoftwareUpdateRequestor deprecated command id names
+    MTRClusterOtaSoftwareUpdateRequestorCommandAnnounceOtaProviderID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOtaSoftwareUpdateRequestorCommandAnnounceOtaProviderID")
+    = 0x00000000,
 
     // Cluster OtaSoftwareUpdateRequestor commands
-    MTRClusterOtaSoftwareUpdateRequestorCommandAnnounceOtaProviderID = 0x00000000,
+    MTRCommandIDTypeClusterOtaSoftwareUpdateRequestorCommandAnnounceOtaProviderID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster GeneralCommissioning deprecated command id names
+    MTRClusterGeneralCommissioningCommandArmFailSafeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeID")
+    = 0x00000000,
+    MTRClusterGeneralCommissioningCommandArmFailSafeResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeResponseID")
+    = 0x00000001,
+    MTRClusterGeneralCommissioningCommandSetRegulatoryConfigID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigID")
+    = 0x00000002,
+    MTRClusterGeneralCommissioningCommandSetRegulatoryConfigResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigResponseID")
+    = 0x00000003,
+    MTRClusterGeneralCommissioningCommandCommissioningCompleteID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteID")
+    = 0x00000004,
+    MTRClusterGeneralCommissioningCommandCommissioningCompleteResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteResponseID")
+    = 0x00000005,
 
     // Cluster GeneralCommissioning commands
-    MTRClusterGeneralCommissioningCommandArmFailSafeID = 0x00000000,
-    MTRClusterGeneralCommissioningCommandArmFailSafeResponseID = 0x00000001,
-    MTRClusterGeneralCommissioningCommandSetRegulatoryConfigID = 0x00000002,
-    MTRClusterGeneralCommissioningCommandSetRegulatoryConfigResponseID = 0x00000003,
-    MTRClusterGeneralCommissioningCommandCommissioningCompleteID = 0x00000004,
-    MTRClusterGeneralCommissioningCommandCommissioningCompleteResponseID = 0x00000005,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandArmFailSafeResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandSetRegulatoryConfigResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterGeneralCommissioningCommandCommissioningCompleteResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+
+    // Cluster NetworkCommissioning deprecated command id names
+    MTRClusterNetworkCommissioningCommandScanNetworksID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksID")
+    = 0x00000000,
+    MTRClusterNetworkCommissioningCommandScanNetworksResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksResponseID")
+    = 0x00000001,
+    MTRClusterNetworkCommissioningCommandAddOrUpdateWiFiNetworkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateWiFiNetworkID")
+    = 0x00000002,
+    MTRClusterNetworkCommissioningCommandAddOrUpdateThreadNetworkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateThreadNetworkID")
+    = 0x00000003,
+    MTRClusterNetworkCommissioningCommandRemoveNetworkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandRemoveNetworkID")
+    = 0x00000004,
+    MTRClusterNetworkCommissioningCommandNetworkConfigResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandNetworkConfigResponseID")
+    = 0x00000005,
+    MTRClusterNetworkCommissioningCommandConnectNetworkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkID")
+    = 0x00000006,
+    MTRClusterNetworkCommissioningCommandConnectNetworkResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkResponseID")
+    = 0x00000007,
+    MTRClusterNetworkCommissioningCommandReorderNetworkID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterNetworkCommissioningCommandReorderNetworkID")
+    = 0x00000008,
 
     // Cluster NetworkCommissioning commands
-    MTRClusterNetworkCommissioningCommandScanNetworksID = 0x00000000,
-    MTRClusterNetworkCommissioningCommandScanNetworksResponseID = 0x00000001,
-    MTRClusterNetworkCommissioningCommandAddOrUpdateWiFiNetworkID = 0x00000002,
-    MTRClusterNetworkCommissioningCommandAddOrUpdateThreadNetworkID = 0x00000003,
-    MTRClusterNetworkCommissioningCommandRemoveNetworkID = 0x00000004,
-    MTRClusterNetworkCommissioningCommandNetworkConfigResponseID = 0x00000005,
-    MTRClusterNetworkCommissioningCommandConnectNetworkID = 0x00000006,
-    MTRClusterNetworkCommissioningCommandConnectNetworkResponseID = 0x00000007,
-    MTRClusterNetworkCommissioningCommandReorderNetworkID = 0x00000008,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandScanNetworksResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateWiFiNetworkID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandAddOrUpdateThreadNetworkID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandRemoveNetworkID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandNetworkConfigResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandConnectNetworkResponseID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterNetworkCommissioningCommandReorderNetworkID MTR_NEWLY_AVAILABLE = 0x00000008,
+
+    // Cluster DiagnosticLogs deprecated command id names
+    MTRClusterDiagnosticLogsCommandRetrieveLogsRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsRequestID")
+    = 0x00000000,
+    MTRClusterDiagnosticLogsCommandRetrieveLogsResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsResponseID")
+    = 0x00000001,
 
     // Cluster DiagnosticLogs commands
-    MTRClusterDiagnosticLogsCommandRetrieveLogsRequestID = 0x00000000,
-    MTRClusterDiagnosticLogsCommandRetrieveLogsResponseID = 0x00000001,
+    MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsRequestID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterDiagnosticLogsCommandRetrieveLogsResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster GeneralDiagnostics deprecated command id names
+    MTRClusterGeneralDiagnosticsCommandTestEventTriggerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGeneralDiagnosticsCommandTestEventTriggerID")
+    = 0x00000000,
 
     // Cluster GeneralDiagnostics commands
-    MTRClusterGeneralDiagnosticsCommandTestEventTriggerID = 0x00000000,
+    MTRCommandIDTypeClusterGeneralDiagnosticsCommandTestEventTriggerID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster SoftwareDiagnostics deprecated command id names
+    MTRClusterSoftwareDiagnosticsCommandResetWatermarksID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterSoftwareDiagnosticsCommandResetWatermarksID")
+    = 0x00000000,
 
     // Cluster SoftwareDiagnostics commands
-    MTRClusterSoftwareDiagnosticsCommandResetWatermarksID = 0x00000000,
+    MTRCommandIDTypeClusterSoftwareDiagnosticsCommandResetWatermarksID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster ThreadNetworkDiagnostics deprecated command id names
+    MTRClusterThreadNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThreadNetworkDiagnosticsCommandResetCountsID")
+    = 0x00000000,
 
     // Cluster ThreadNetworkDiagnostics commands
-    MTRClusterThreadNetworkDiagnosticsCommandResetCountsID = 0x00000000,
+    MTRCommandIDTypeClusterThreadNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster WiFiNetworkDiagnostics deprecated command id names
+    MTRClusterWiFiNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWiFiNetworkDiagnosticsCommandResetCountsID")
+    = 0x00000000,
 
     // Cluster WiFiNetworkDiagnostics commands
-    MTRClusterWiFiNetworkDiagnosticsCommandResetCountsID = 0x00000000,
+    MTRCommandIDTypeClusterWiFiNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster EthernetNetworkDiagnostics deprecated command id names
+    MTRClusterEthernetNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterEthernetNetworkDiagnosticsCommandResetCountsID")
+    = 0x00000000,
 
     // Cluster EthernetNetworkDiagnostics commands
-    MTRClusterEthernetNetworkDiagnosticsCommandResetCountsID = 0x00000000,
+    MTRCommandIDTypeClusterEthernetNetworkDiagnosticsCommandResetCountsID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster TimeSynchronization deprecated command id names
+    MTRClusterTimeSynchronizationCommandSetUtcTimeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterTimeSynchronizationCommandSetUtcTimeID")
+    = 0x00000000,
 
     // Cluster TimeSynchronization commands
-    MTRClusterTimeSynchronizationCommandSetUtcTimeID = 0x00000000,
+    MTRCommandIDTypeClusterTimeSynchronizationCommandSetUtcTimeID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster AdministratorCommissioning deprecated command id names
+    MTRClusterAdministratorCommissioningCommandOpenCommissioningWindowID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenCommissioningWindowID")
+    = 0x00000000,
+    MTRClusterAdministratorCommissioningCommandOpenBasicCommissioningWindowID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenBasicCommissioningWindowID")
+    = 0x00000001,
+    MTRClusterAdministratorCommissioningCommandRevokeCommissioningID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAdministratorCommissioningCommandRevokeCommissioningID")
+    = 0x00000002,
 
     // Cluster AdministratorCommissioning commands
-    MTRClusterAdministratorCommissioningCommandOpenCommissioningWindowID = 0x00000000,
-    MTRClusterAdministratorCommissioningCommandOpenBasicCommissioningWindowID = 0x00000001,
-    MTRClusterAdministratorCommissioningCommandRevokeCommissioningID = 0x00000002,
+    MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenCommissioningWindowID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterAdministratorCommissioningCommandOpenBasicCommissioningWindowID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterAdministratorCommissioningCommandRevokeCommissioningID MTR_NEWLY_AVAILABLE = 0x00000002,
+
+    // Cluster OperationalCredentials deprecated command id names
+    MTRClusterOperationalCredentialsCommandAttestationRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationRequestID")
+    = 0x00000000,
+    MTRClusterOperationalCredentialsCommandAttestationResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationResponseID")
+    = 0x00000001,
+    MTRClusterOperationalCredentialsCommandCertificateChainRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainRequestID")
+    = 0x00000002,
+    MTRClusterOperationalCredentialsCommandCertificateChainResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainResponseID")
+    = 0x00000003,
+    MTRClusterOperationalCredentialsCommandCSRRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandCSRRequestID")
+    = 0x00000004,
+    MTRClusterOperationalCredentialsCommandCSRResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandCSRResponseID")
+    = 0x00000005,
+    MTRClusterOperationalCredentialsCommandAddNOCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandAddNOCID")
+    = 0x00000006,
+    MTRClusterOperationalCredentialsCommandUpdateNOCID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateNOCID")
+    = 0x00000007,
+    MTRClusterOperationalCredentialsCommandNOCResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandNOCResponseID")
+    = 0x00000008,
+    MTRClusterOperationalCredentialsCommandUpdateFabricLabelID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateFabricLabelID")
+    = 0x00000009,
+    MTRClusterOperationalCredentialsCommandRemoveFabricID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandRemoveFabricID")
+    = 0x0000000A,
+    MTRClusterOperationalCredentialsCommandAddTrustedRootCertificateID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterOperationalCredentialsCommandAddTrustedRootCertificateID")
+    = 0x0000000B,
 
     // Cluster OperationalCredentials commands
-    MTRClusterOperationalCredentialsCommandAttestationRequestID = 0x00000000,
-    MTRClusterOperationalCredentialsCommandAttestationResponseID = 0x00000001,
-    MTRClusterOperationalCredentialsCommandCertificateChainRequestID = 0x00000002,
-    MTRClusterOperationalCredentialsCommandCertificateChainResponseID = 0x00000003,
-    MTRClusterOperationalCredentialsCommandCSRRequestID = 0x00000004,
-    MTRClusterOperationalCredentialsCommandCSRResponseID = 0x00000005,
-    MTRClusterOperationalCredentialsCommandAddNOCID = 0x00000006,
-    MTRClusterOperationalCredentialsCommandUpdateNOCID = 0x00000007,
-    MTRClusterOperationalCredentialsCommandNOCResponseID = 0x00000008,
-    MTRClusterOperationalCredentialsCommandUpdateFabricLabelID = 0x00000009,
-    MTRClusterOperationalCredentialsCommandRemoveFabricID = 0x0000000A,
-    MTRClusterOperationalCredentialsCommandAddTrustedRootCertificateID = 0x0000000B,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationRequestID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandAttestationResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainRequestID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandCertificateChainResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandCSRRequestID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandCSRResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandAddNOCID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateNOCID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandNOCResponseID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandUpdateFabricLabelID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandRemoveFabricID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterOperationalCredentialsCommandAddTrustedRootCertificateID MTR_NEWLY_AVAILABLE = 0x0000000B,
+
+    // Cluster GroupKeyManagement deprecated command id names
+    MTRClusterGroupKeyManagementCommandKeySetWriteID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetWriteID")
+    = 0x00000000,
+    MTRClusterGroupKeyManagementCommandKeySetReadID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadID")
+    = 0x00000001,
+    MTRClusterGroupKeyManagementCommandKeySetReadResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadResponseID")
+    = 0x00000002,
+    MTRClusterGroupKeyManagementCommandKeySetRemoveID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetRemoveID")
+    = 0x00000003,
+    MTRClusterGroupKeyManagementCommandKeySetReadAllIndicesID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesID")
+    = 0x00000004,
+    MTRClusterGroupKeyManagementCommandKeySetReadAllIndicesResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesResponseID")
+    = 0x00000005,
 
     // Cluster GroupKeyManagement commands
-    MTRClusterGroupKeyManagementCommandKeySetWriteID = 0x00000000,
-    MTRClusterGroupKeyManagementCommandKeySetReadID = 0x00000001,
-    MTRClusterGroupKeyManagementCommandKeySetReadResponseID = 0x00000002,
-    MTRClusterGroupKeyManagementCommandKeySetRemoveID = 0x00000003,
-    MTRClusterGroupKeyManagementCommandKeySetReadAllIndicesID = 0x00000004,
-    MTRClusterGroupKeyManagementCommandKeySetReadAllIndicesResponseID = 0x00000005,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetWriteID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetRemoveID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterGroupKeyManagementCommandKeySetReadAllIndicesResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+
+    // Cluster ModeSelect deprecated command id names
+    MTRClusterModeSelectCommandChangeToModeID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterModeSelectCommandChangeToModeID")
+    = 0x00000000,
 
     // Cluster ModeSelect commands
-    MTRClusterModeSelectCommandChangeToModeID = 0x00000000,
+    MTRCommandIDTypeClusterModeSelectCommandChangeToModeID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster DoorLock deprecated command id names
+    MTRClusterDoorLockCommandLockDoorID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterDoorLockCommandLockDoorID")
+    = 0x00000000,
+    MTRClusterDoorLockCommandUnlockDoorID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterDoorLockCommandUnlockDoorID")
+    = 0x00000001,
+    MTRClusterDoorLockCommandUnlockWithTimeoutID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandUnlockWithTimeoutID")
+    = 0x00000003,
+    MTRClusterDoorLockCommandSetWeekDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandSetWeekDayScheduleID")
+    = 0x0000000B,
+    MTRClusterDoorLockCommandGetWeekDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleID")
+    = 0x0000000C,
+    MTRClusterDoorLockCommandGetWeekDayScheduleResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleResponseID")
+    = 0x0000000C,
+    MTRClusterDoorLockCommandClearWeekDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandClearWeekDayScheduleID")
+    = 0x0000000D,
+    MTRClusterDoorLockCommandSetYearDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandSetYearDayScheduleID")
+    = 0x0000000E,
+    MTRClusterDoorLockCommandGetYearDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleID")
+    = 0x0000000F,
+    MTRClusterDoorLockCommandGetYearDayScheduleResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleResponseID")
+    = 0x0000000F,
+    MTRClusterDoorLockCommandClearYearDayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandClearYearDayScheduleID")
+    = 0x00000010,
+    MTRClusterDoorLockCommandSetHolidayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandSetHolidayScheduleID")
+    = 0x00000011,
+    MTRClusterDoorLockCommandGetHolidayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleID")
+    = 0x00000012,
+    MTRClusterDoorLockCommandGetHolidayScheduleResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleResponseID")
+    = 0x00000012,
+    MTRClusterDoorLockCommandClearHolidayScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandClearHolidayScheduleID")
+    = 0x00000013,
+    MTRClusterDoorLockCommandSetUserID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterDoorLockCommandSetUserID")
+    = 0x0000001A,
+    MTRClusterDoorLockCommandGetUserID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterDoorLockCommandGetUserID")
+    = 0x0000001B,
+    MTRClusterDoorLockCommandGetUserResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetUserResponseID")
+    = 0x0000001C,
+    MTRClusterDoorLockCommandClearUserID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterDoorLockCommandClearUserID")
+    = 0x0000001D,
+    MTRClusterDoorLockCommandSetCredentialID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandSetCredentialID")
+    = 0x00000022,
+    MTRClusterDoorLockCommandSetCredentialResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandSetCredentialResponseID")
+    = 0x00000023,
+    MTRClusterDoorLockCommandGetCredentialStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusID")
+    = 0x00000024,
+    MTRClusterDoorLockCommandGetCredentialStatusResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusResponseID")
+    = 0x00000025,
+    MTRClusterDoorLockCommandClearCredentialID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterDoorLockCommandClearCredentialID")
+    = 0x00000026,
 
     // Cluster DoorLock commands
-    MTRClusterDoorLockCommandLockDoorID = 0x00000000,
-    MTRClusterDoorLockCommandUnlockDoorID = 0x00000001,
-    MTRClusterDoorLockCommandUnlockWithTimeoutID = 0x00000003,
-    MTRClusterDoorLockCommandSetWeekDayScheduleID = 0x0000000B,
-    MTRClusterDoorLockCommandGetWeekDayScheduleID = 0x0000000C,
-    MTRClusterDoorLockCommandGetWeekDayScheduleResponseID = 0x0000000C,
-    MTRClusterDoorLockCommandClearWeekDayScheduleID = 0x0000000D,
-    MTRClusterDoorLockCommandSetYearDayScheduleID = 0x0000000E,
-    MTRClusterDoorLockCommandGetYearDayScheduleID = 0x0000000F,
-    MTRClusterDoorLockCommandGetYearDayScheduleResponseID = 0x0000000F,
-    MTRClusterDoorLockCommandClearYearDayScheduleID = 0x00000010,
-    MTRClusterDoorLockCommandSetHolidayScheduleID = 0x00000011,
-    MTRClusterDoorLockCommandGetHolidayScheduleID = 0x00000012,
-    MTRClusterDoorLockCommandGetHolidayScheduleResponseID = 0x00000012,
-    MTRClusterDoorLockCommandClearHolidayScheduleID = 0x00000013,
-    MTRClusterDoorLockCommandSetUserID = 0x0000001A,
-    MTRClusterDoorLockCommandGetUserID = 0x0000001B,
-    MTRClusterDoorLockCommandGetUserResponseID = 0x0000001C,
-    MTRClusterDoorLockCommandClearUserID = 0x0000001D,
-    MTRClusterDoorLockCommandSetCredentialID = 0x00000022,
-    MTRClusterDoorLockCommandSetCredentialResponseID = 0x00000023,
-    MTRClusterDoorLockCommandGetCredentialStatusID = 0x00000024,
-    MTRClusterDoorLockCommandGetCredentialStatusResponseID = 0x00000025,
-    MTRClusterDoorLockCommandClearCredentialID = 0x00000026,
+    MTRCommandIDTypeClusterDoorLockCommandLockDoorID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterDoorLockCommandUnlockDoorID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterDoorLockCommandUnlockWithTimeoutID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterDoorLockCommandSetWeekDayScheduleID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRCommandIDTypeClusterDoorLockCommandGetWeekDayScheduleResponseID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRCommandIDTypeClusterDoorLockCommandClearWeekDayScheduleID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRCommandIDTypeClusterDoorLockCommandSetYearDayScheduleID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRCommandIDTypeClusterDoorLockCommandGetYearDayScheduleResponseID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRCommandIDTypeClusterDoorLockCommandClearYearDayScheduleID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRCommandIDTypeClusterDoorLockCommandSetHolidayScheduleID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRCommandIDTypeClusterDoorLockCommandGetHolidayScheduleResponseID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRCommandIDTypeClusterDoorLockCommandClearHolidayScheduleID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRCommandIDTypeClusterDoorLockCommandSetUserID MTR_NEWLY_AVAILABLE = 0x0000001A,
+    MTRCommandIDTypeClusterDoorLockCommandGetUserID MTR_NEWLY_AVAILABLE = 0x0000001B,
+    MTRCommandIDTypeClusterDoorLockCommandGetUserResponseID MTR_NEWLY_AVAILABLE = 0x0000001C,
+    MTRCommandIDTypeClusterDoorLockCommandClearUserID MTR_NEWLY_AVAILABLE = 0x0000001D,
+    MTRCommandIDTypeClusterDoorLockCommandSetCredentialID MTR_NEWLY_AVAILABLE = 0x00000022,
+    MTRCommandIDTypeClusterDoorLockCommandSetCredentialResponseID MTR_NEWLY_AVAILABLE = 0x00000023,
+    MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusID MTR_NEWLY_AVAILABLE = 0x00000024,
+    MTRCommandIDTypeClusterDoorLockCommandGetCredentialStatusResponseID MTR_NEWLY_AVAILABLE = 0x00000025,
+    MTRCommandIDTypeClusterDoorLockCommandClearCredentialID MTR_NEWLY_AVAILABLE = 0x00000026,
+
+    // Cluster WindowCovering deprecated command id names
+    MTRClusterWindowCoveringCommandUpOrOpenID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandUpOrOpenID")
+    = 0x00000000,
+    MTRClusterWindowCoveringCommandDownOrCloseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandDownOrCloseID")
+    = 0x00000001,
+    MTRClusterWindowCoveringCommandStopMotionID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandStopMotionID")
+    = 0x00000002,
+    MTRClusterWindowCoveringCommandGoToLiftValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftValueID")
+    = 0x00000004,
+    MTRClusterWindowCoveringCommandGoToLiftPercentageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftPercentageID")
+    = 0x00000005,
+    MTRClusterWindowCoveringCommandGoToTiltValueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltValueID")
+    = 0x00000007,
+    MTRClusterWindowCoveringCommandGoToTiltPercentageID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltPercentageID")
+    = 0x00000008,
 
     // Cluster WindowCovering commands
-    MTRClusterWindowCoveringCommandUpOrOpenID = 0x00000000,
-    MTRClusterWindowCoveringCommandDownOrCloseID = 0x00000001,
-    MTRClusterWindowCoveringCommandStopMotionID = 0x00000002,
-    MTRClusterWindowCoveringCommandGoToLiftValueID = 0x00000004,
-    MTRClusterWindowCoveringCommandGoToLiftPercentageID = 0x00000005,
-    MTRClusterWindowCoveringCommandGoToTiltValueID = 0x00000007,
-    MTRClusterWindowCoveringCommandGoToTiltPercentageID = 0x00000008,
+    MTRCommandIDTypeClusterWindowCoveringCommandUpOrOpenID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterWindowCoveringCommandDownOrCloseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterWindowCoveringCommandStopMotionID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftValueID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterWindowCoveringCommandGoToLiftPercentageID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltValueID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterWindowCoveringCommandGoToTiltPercentageID MTR_NEWLY_AVAILABLE = 0x00000008,
+
+    // Cluster BarrierControl deprecated command id names
+    MTRClusterBarrierControlCommandBarrierControlGoToPercentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterBarrierControlCommandBarrierControlGoToPercentID")
+    = 0x00000000,
+    MTRClusterBarrierControlCommandBarrierControlStopID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterBarrierControlCommandBarrierControlStopID")
+    = 0x00000001,
 
     // Cluster BarrierControl commands
-    MTRClusterBarrierControlCommandBarrierControlGoToPercentID = 0x00000000,
-    MTRClusterBarrierControlCommandBarrierControlStopID = 0x00000001,
+    MTRCommandIDTypeClusterBarrierControlCommandBarrierControlGoToPercentID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterBarrierControlCommandBarrierControlStopID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster Thermostat deprecated command id names
+    MTRClusterThermostatCommandSetpointRaiseLowerID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThermostatCommandSetpointRaiseLowerID")
+    = 0x00000000,
+    MTRClusterThermostatCommandGetWeeklyScheduleResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleResponseID")
+    = 0x00000000,
+    MTRClusterThermostatCommandSetWeeklyScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThermostatCommandSetWeeklyScheduleID")
+    = 0x00000001,
+    MTRClusterThermostatCommandGetWeeklyScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleID")
+    = 0x00000002,
+    MTRClusterThermostatCommandClearWeeklyScheduleID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterThermostatCommandClearWeeklyScheduleID")
+    = 0x00000003,
 
     // Cluster Thermostat commands
-    MTRClusterThermostatCommandSetpointRaiseLowerID = 0x00000000,
-    MTRClusterThermostatCommandGetWeeklyScheduleResponseID = 0x00000000,
-    MTRClusterThermostatCommandSetWeeklyScheduleID = 0x00000001,
-    MTRClusterThermostatCommandGetWeeklyScheduleID = 0x00000002,
-    MTRClusterThermostatCommandClearWeeklyScheduleID = 0x00000003,
+    MTRCommandIDTypeClusterThermostatCommandSetpointRaiseLowerID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterThermostatCommandSetWeeklyScheduleID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterThermostatCommandGetWeeklyScheduleID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterThermostatCommandClearWeeklyScheduleID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster ColorControl deprecated command id names
+    MTRClusterColorControlCommandMoveToHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveToHueID")
+    = 0x00000000,
+    MTRClusterColorControlCommandMoveHueID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterColorControlCommandMoveHueID")
+    = 0x00000001,
+    MTRClusterColorControlCommandStepHueID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterColorControlCommandStepHueID")
+    = 0x00000002,
+    MTRClusterColorControlCommandMoveToSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveToSaturationID")
+    = 0x00000003,
+    MTRClusterColorControlCommandMoveSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveSaturationID")
+    = 0x00000004,
+    MTRClusterColorControlCommandStepSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandStepSaturationID")
+    = 0x00000005,
+    MTRClusterColorControlCommandMoveToHueAndSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveToHueAndSaturationID")
+    = 0x00000006,
+    MTRClusterColorControlCommandMoveToColorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveToColorID")
+    = 0x00000007,
+    MTRClusterColorControlCommandMoveColorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveColorID")
+    = 0x00000008,
+    MTRClusterColorControlCommandStepColorID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandStepColorID")
+    = 0x00000009,
+    MTRClusterColorControlCommandMoveToColorTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveToColorTemperatureID")
+    = 0x0000000A,
+    MTRClusterColorControlCommandEnhancedMoveToHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueID")
+    = 0x00000040,
+    MTRClusterColorControlCommandEnhancedMoveHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandEnhancedMoveHueID")
+    = 0x00000041,
+    MTRClusterColorControlCommandEnhancedStepHueID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandEnhancedStepHueID")
+    = 0x00000042,
+    MTRClusterColorControlCommandEnhancedMoveToHueAndSaturationID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueAndSaturationID")
+    = 0x00000043,
+    MTRClusterColorControlCommandColorLoopSetID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandColorLoopSetID")
+    = 0x00000044,
+    MTRClusterColorControlCommandStopMoveStepID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandStopMoveStepID")
+    = 0x00000047,
+    MTRClusterColorControlCommandMoveColorTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandMoveColorTemperatureID")
+    = 0x0000004B,
+    MTRClusterColorControlCommandStepColorTemperatureID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterColorControlCommandStepColorTemperatureID")
+    = 0x0000004C,
 
     // Cluster ColorControl commands
-    MTRClusterColorControlCommandMoveToHueID = 0x00000000,
-    MTRClusterColorControlCommandMoveHueID = 0x00000001,
-    MTRClusterColorControlCommandStepHueID = 0x00000002,
-    MTRClusterColorControlCommandMoveToSaturationID = 0x00000003,
-    MTRClusterColorControlCommandMoveSaturationID = 0x00000004,
-    MTRClusterColorControlCommandStepSaturationID = 0x00000005,
-    MTRClusterColorControlCommandMoveToHueAndSaturationID = 0x00000006,
-    MTRClusterColorControlCommandMoveToColorID = 0x00000007,
-    MTRClusterColorControlCommandMoveColorID = 0x00000008,
-    MTRClusterColorControlCommandStepColorID = 0x00000009,
-    MTRClusterColorControlCommandMoveToColorTemperatureID = 0x0000000A,
-    MTRClusterColorControlCommandEnhancedMoveToHueID = 0x00000040,
-    MTRClusterColorControlCommandEnhancedMoveHueID = 0x00000041,
-    MTRClusterColorControlCommandEnhancedStepHueID = 0x00000042,
-    MTRClusterColorControlCommandEnhancedMoveToHueAndSaturationID = 0x00000043,
-    MTRClusterColorControlCommandColorLoopSetID = 0x00000044,
-    MTRClusterColorControlCommandStopMoveStepID = 0x00000047,
-    MTRClusterColorControlCommandMoveColorTemperatureID = 0x0000004B,
-    MTRClusterColorControlCommandStepColorTemperatureID = 0x0000004C,
+    MTRCommandIDTypeClusterColorControlCommandMoveToHueID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterColorControlCommandMoveHueID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterColorControlCommandStepHueID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterColorControlCommandMoveToSaturationID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterColorControlCommandMoveSaturationID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterColorControlCommandStepSaturationID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterColorControlCommandMoveToHueAndSaturationID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterColorControlCommandMoveToColorID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterColorControlCommandMoveColorID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterColorControlCommandStepColorID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterColorControlCommandMoveToColorTemperatureID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueID MTR_NEWLY_AVAILABLE = 0x00000040,
+    MTRCommandIDTypeClusterColorControlCommandEnhancedMoveHueID MTR_NEWLY_AVAILABLE = 0x00000041,
+    MTRCommandIDTypeClusterColorControlCommandEnhancedStepHueID MTR_NEWLY_AVAILABLE = 0x00000042,
+    MTRCommandIDTypeClusterColorControlCommandEnhancedMoveToHueAndSaturationID MTR_NEWLY_AVAILABLE = 0x00000043,
+    MTRCommandIDTypeClusterColorControlCommandColorLoopSetID MTR_NEWLY_AVAILABLE = 0x00000044,
+    MTRCommandIDTypeClusterColorControlCommandStopMoveStepID MTR_NEWLY_AVAILABLE = 0x00000047,
+    MTRCommandIDTypeClusterColorControlCommandMoveColorTemperatureID MTR_NEWLY_AVAILABLE = 0x0000004B,
+    MTRCommandIDTypeClusterColorControlCommandStepColorTemperatureID MTR_NEWLY_AVAILABLE = 0x0000004C,
+
+    // Cluster Channel deprecated command id names
+    MTRClusterChannelCommandChangeChannelID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterChannelCommandChangeChannelID")
+    = 0x00000000,
+    MTRClusterChannelCommandChangeChannelResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterChannelCommandChangeChannelResponseID")
+    = 0x00000001,
+    MTRClusterChannelCommandChangeChannelByNumberID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterChannelCommandChangeChannelByNumberID")
+    = 0x00000002,
+    MTRClusterChannelCommandSkipChannelID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterChannelCommandSkipChannelID")
+    = 0x00000003,
 
     // Cluster Channel commands
-    MTRClusterChannelCommandChangeChannelID = 0x00000000,
-    MTRClusterChannelCommandChangeChannelResponseID = 0x00000001,
-    MTRClusterChannelCommandChangeChannelByNumberID = 0x00000002,
-    MTRClusterChannelCommandSkipChannelID = 0x00000003,
+    MTRCommandIDTypeClusterChannelCommandChangeChannelID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterChannelCommandChangeChannelResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterChannelCommandChangeChannelByNumberID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterChannelCommandSkipChannelID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster TargetNavigator deprecated command id names
+    MTRClusterTargetNavigatorCommandNavigateTargetID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetID")
+    = 0x00000000,
+    MTRClusterTargetNavigatorCommandNavigateTargetResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetResponseID")
+    = 0x00000001,
 
     // Cluster TargetNavigator commands
-    MTRClusterTargetNavigatorCommandNavigateTargetID = 0x00000000,
-    MTRClusterTargetNavigatorCommandNavigateTargetResponseID = 0x00000001,
+    MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterTargetNavigatorCommandNavigateTargetResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster MediaPlayback deprecated command id names
+    MTRClusterMediaPlaybackCommandPlayID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterMediaPlaybackCommandPlayID")
+    = 0x00000000,
+    MTRClusterMediaPlaybackCommandPauseID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterMediaPlaybackCommandPauseID")
+    = 0x00000001,
+    MTRClusterMediaPlaybackCommandStopPlaybackID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandStopPlaybackID")
+    = 0x00000002,
+    MTRClusterMediaPlaybackCommandStartOverID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandStartOverID")
+    = 0x00000003,
+    MTRClusterMediaPlaybackCommandPreviousID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandPreviousID")
+    = 0x00000004,
+    MTRClusterMediaPlaybackCommandNextID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterMediaPlaybackCommandNextID")
+    = 0x00000005,
+    MTRClusterMediaPlaybackCommandRewindID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterMediaPlaybackCommandRewindID")
+    = 0x00000006,
+    MTRClusterMediaPlaybackCommandFastForwardID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandFastForwardID")
+    = 0x00000007,
+    MTRClusterMediaPlaybackCommandSkipForwardID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandSkipForwardID")
+    = 0x00000008,
+    MTRClusterMediaPlaybackCommandSkipBackwardID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandSkipBackwardID")
+    = 0x00000009,
+    MTRClusterMediaPlaybackCommandPlaybackResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaPlaybackCommandPlaybackResponseID")
+    = 0x0000000A,
+    MTRClusterMediaPlaybackCommandSeekID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterMediaPlaybackCommandSeekID")
+    = 0x0000000B,
 
     // Cluster MediaPlayback commands
-    MTRClusterMediaPlaybackCommandPlayID = 0x00000000,
-    MTRClusterMediaPlaybackCommandPauseID = 0x00000001,
-    MTRClusterMediaPlaybackCommandStopPlaybackID = 0x00000002,
-    MTRClusterMediaPlaybackCommandStartOverID = 0x00000003,
-    MTRClusterMediaPlaybackCommandPreviousID = 0x00000004,
-    MTRClusterMediaPlaybackCommandNextID = 0x00000005,
-    MTRClusterMediaPlaybackCommandRewindID = 0x00000006,
-    MTRClusterMediaPlaybackCommandFastForwardID = 0x00000007,
-    MTRClusterMediaPlaybackCommandSkipForwardID = 0x00000008,
-    MTRClusterMediaPlaybackCommandSkipBackwardID = 0x00000009,
-    MTRClusterMediaPlaybackCommandPlaybackResponseID = 0x0000000A,
-    MTRClusterMediaPlaybackCommandSeekID = 0x0000000B,
+    MTRCommandIDTypeClusterMediaPlaybackCommandPlayID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterMediaPlaybackCommandPauseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterMediaPlaybackCommandStopPlaybackID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterMediaPlaybackCommandStartOverID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterMediaPlaybackCommandPreviousID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterMediaPlaybackCommandNextID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterMediaPlaybackCommandRewindID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterMediaPlaybackCommandFastForwardID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterMediaPlaybackCommandSkipForwardID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterMediaPlaybackCommandSkipBackwardID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterMediaPlaybackCommandPlaybackResponseID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterMediaPlaybackCommandSeekID MTR_NEWLY_AVAILABLE = 0x0000000B,
+
+    // Cluster MediaInput deprecated command id names
+    MTRClusterMediaInputCommandSelectInputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaInputCommandSelectInputID")
+    = 0x00000000,
+    MTRClusterMediaInputCommandShowInputStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaInputCommandShowInputStatusID")
+    = 0x00000001,
+    MTRClusterMediaInputCommandHideInputStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaInputCommandHideInputStatusID")
+    = 0x00000002,
+    MTRClusterMediaInputCommandRenameInputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterMediaInputCommandRenameInputID")
+    = 0x00000003,
 
     // Cluster MediaInput commands
-    MTRClusterMediaInputCommandSelectInputID = 0x00000000,
-    MTRClusterMediaInputCommandShowInputStatusID = 0x00000001,
-    MTRClusterMediaInputCommandHideInputStatusID = 0x00000002,
-    MTRClusterMediaInputCommandRenameInputID = 0x00000003,
+    MTRCommandIDTypeClusterMediaInputCommandSelectInputID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterMediaInputCommandShowInputStatusID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterMediaInputCommandHideInputStatusID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterMediaInputCommandRenameInputID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster LowPower deprecated command id names
+    MTRClusterLowPowerCommandSleepID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterLowPowerCommandSleepID") = 0x00000000,
 
     // Cluster LowPower commands
-    MTRClusterLowPowerCommandSleepID = 0x00000000,
+    MTRCommandIDTypeClusterLowPowerCommandSleepID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster KeypadInput deprecated command id names
+    MTRClusterKeypadInputCommandSendKeyID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterKeypadInputCommandSendKeyID")
+    = 0x00000000,
+    MTRClusterKeypadInputCommandSendKeyResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterKeypadInputCommandSendKeyResponseID")
+    = 0x00000001,
 
     // Cluster KeypadInput commands
-    MTRClusterKeypadInputCommandSendKeyID = 0x00000000,
-    MTRClusterKeypadInputCommandSendKeyResponseID = 0x00000001,
+    MTRCommandIDTypeClusterKeypadInputCommandSendKeyID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterKeypadInputCommandSendKeyResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster ContentLauncher deprecated command id names
+    MTRClusterContentLauncherCommandLaunchContentID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterContentLauncherCommandLaunchContentID")
+    = 0x00000000,
+    MTRClusterContentLauncherCommandLaunchURLID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterContentLauncherCommandLaunchURLID")
+    = 0x00000001,
+    MTRClusterContentLauncherCommandLaunchResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterContentLauncherCommandLaunchResponseID")
+    = 0x00000002,
 
     // Cluster ContentLauncher commands
-    MTRClusterContentLauncherCommandLaunchContentID = 0x00000000,
-    MTRClusterContentLauncherCommandLaunchURLID = 0x00000001,
-    MTRClusterContentLauncherCommandLaunchResponseID = 0x00000002,
+    MTRCommandIDTypeClusterContentLauncherCommandLaunchContentID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterContentLauncherCommandLaunchURLID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterContentLauncherCommandLaunchResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+
+    // Cluster AudioOutput deprecated command id names
+    MTRClusterAudioOutputCommandSelectOutputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAudioOutputCommandSelectOutputID")
+    = 0x00000000,
+    MTRClusterAudioOutputCommandRenameOutputID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAudioOutputCommandRenameOutputID")
+    = 0x00000001,
 
     // Cluster AudioOutput commands
-    MTRClusterAudioOutputCommandSelectOutputID = 0x00000000,
-    MTRClusterAudioOutputCommandRenameOutputID = 0x00000001,
+    MTRCommandIDTypeClusterAudioOutputCommandSelectOutputID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterAudioOutputCommandRenameOutputID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster ApplicationLauncher deprecated command id names
+    MTRClusterApplicationLauncherCommandLaunchAppID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterApplicationLauncherCommandLaunchAppID")
+    = 0x00000000,
+    MTRClusterApplicationLauncherCommandStopAppID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterApplicationLauncherCommandStopAppID")
+    = 0x00000001,
+    MTRClusterApplicationLauncherCommandHideAppID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterApplicationLauncherCommandHideAppID")
+    = 0x00000002,
+    MTRClusterApplicationLauncherCommandLauncherResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterApplicationLauncherCommandLauncherResponseID")
+    = 0x00000003,
 
     // Cluster ApplicationLauncher commands
-    MTRClusterApplicationLauncherCommandLaunchAppID = 0x00000000,
-    MTRClusterApplicationLauncherCommandStopAppID = 0x00000001,
-    MTRClusterApplicationLauncherCommandHideAppID = 0x00000002,
-    MTRClusterApplicationLauncherCommandLauncherResponseID = 0x00000003,
+    MTRCommandIDTypeClusterApplicationLauncherCommandLaunchAppID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterApplicationLauncherCommandStopAppID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterApplicationLauncherCommandHideAppID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterApplicationLauncherCommandLauncherResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster AccountLogin deprecated command id names
+    MTRClusterAccountLoginCommandGetSetupPINID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINID")
+    = 0x00000000,
+    MTRClusterAccountLoginCommandGetSetupPINResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINResponseID")
+    = 0x00000001,
+    MTRClusterAccountLoginCommandLoginID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterAccountLoginCommandLoginID")
+    = 0x00000002,
+    MTRClusterAccountLoginCommandLogoutID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterAccountLoginCommandLogoutID")
+    = 0x00000003,
 
     // Cluster AccountLogin commands
-    MTRClusterAccountLoginCommandGetSetupPINID = 0x00000000,
-    MTRClusterAccountLoginCommandGetSetupPINResponseID = 0x00000001,
-    MTRClusterAccountLoginCommandLoginID = 0x00000002,
-    MTRClusterAccountLoginCommandLogoutID = 0x00000003,
+    MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterAccountLoginCommandGetSetupPINResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterAccountLoginCommandLoginID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterAccountLoginCommandLogoutID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster ElectricalMeasurement deprecated command id names
+    MTRClusterElectricalMeasurementCommandGetProfileInfoResponseCommandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterElectricalMeasurementCommandGetProfileInfoResponseCommandID")
+    = 0x00000000,
+    MTRClusterElectricalMeasurementCommandGetProfileInfoCommandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterElectricalMeasurementCommandGetProfileInfoCommandID")
+    = 0x00000000,
+    MTRClusterElectricalMeasurementCommandGetMeasurementProfileResponseCommandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterElectricalMeasurementCommandGetMeasurementProfileResponseCommandID")
+    = 0x00000001,
+    MTRClusterElectricalMeasurementCommandGetMeasurementProfileCommandID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterElectricalMeasurementCommandGetMeasurementProfileCommandID")
+    = 0x00000001,
 
     // Cluster ElectricalMeasurement commands
-    MTRClusterElectricalMeasurementCommandGetProfileInfoResponseCommandID = 0x00000000,
-    MTRClusterElectricalMeasurementCommandGetProfileInfoCommandID = 0x00000000,
-    MTRClusterElectricalMeasurementCommandGetMeasurementProfileResponseCommandID = 0x00000001,
-    MTRClusterElectricalMeasurementCommandGetMeasurementProfileCommandID = 0x00000001,
+    MTRCommandIDTypeClusterElectricalMeasurementCommandGetProfileInfoResponseCommandID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterElectricalMeasurementCommandGetProfileInfoCommandID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterElectricalMeasurementCommandGetMeasurementProfileResponseCommandID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterElectricalMeasurementCommandGetMeasurementProfileCommandID MTR_NEWLY_AVAILABLE = 0x00000001,
 
-    // Cluster UnitTesting commands
-    MTRClusterUnitTestingCommandTestID MTR_NEWLY_AVAILABLE = 0x00000000,
-    MTRClusterUnitTestingCommandTestSpecificResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
-    MTRClusterUnitTestingCommandTestNotHandledID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTRClusterUnitTestingCommandTestAddArgumentsResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTRClusterUnitTestingCommandTestSpecificID MTR_NEWLY_AVAILABLE = 0x00000002,
-    MTRClusterUnitTestingCommandTestSimpleArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
-    MTRClusterUnitTestingCommandTestUnknownCommandID MTR_NEWLY_AVAILABLE = 0x00000003,
-    MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
-    MTRClusterUnitTestingCommandTestAddArgumentsID MTR_NEWLY_AVAILABLE = 0x00000004,
-    MTRClusterUnitTestingCommandTestListInt8UReverseResponseID MTR_NEWLY_AVAILABLE = 0x00000004,
-    MTRClusterUnitTestingCommandTestSimpleArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000005,
-    MTRClusterUnitTestingCommandTestEnumsResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
-    MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000006,
-    MTRClusterUnitTestingCommandTestNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000006,
-    MTRClusterUnitTestingCommandTestStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000007,
-    MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000007,
-    MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000008,
-    MTRClusterUnitTestingCommandBooleanResponseID MTR_NEWLY_AVAILABLE = 0x00000008,
-    MTRClusterUnitTestingCommandTestListStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000009,
-    MTRClusterUnitTestingCommandSimpleStructResponseID MTR_NEWLY_AVAILABLE = 0x00000009,
-    MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000A,
-    MTRClusterUnitTestingCommandTestEmitTestEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000A,
-    MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000B,
-    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000B,
-    MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000C,
-    MTRClusterUnitTestingCommandTestListInt8UReverseRequestID MTR_NEWLY_AVAILABLE = 0x0000000D,
-    MTRClusterUnitTestingCommandTestEnumsRequestID MTR_NEWLY_AVAILABLE = 0x0000000E,
-    MTRClusterUnitTestingCommandTestNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x0000000F,
-    MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x00000010,
-    MTRClusterUnitTestingCommandSimpleStructEchoRequestID MTR_NEWLY_AVAILABLE = 0x00000011,
-    MTRClusterUnitTestingCommandTimedInvokeRequestID MTR_NEWLY_AVAILABLE = 0x00000012,
-    MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000013,
-    MTRClusterUnitTestingCommandTestEmitTestEventRequestID MTR_NEWLY_AVAILABLE = 0x00000014,
-    MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID MTR_NEWLY_AVAILABLE = 0x00000015,
-
-    // Cluster TestCluster commands
-    MTRClusterTestClusterCommandTestID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestID") = 0x00000000,
+    // Cluster TestCluster deprecated command id names
+    MTRClusterTestClusterCommandTestID MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterUnitTestingCommandTestID")
+    = 0x00000000,
     MTRClusterTestClusterCommandTestSpecificResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestSpecificResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestSpecificResponseID")
     = 0x00000000,
-    MTRClusterTestClusterCommandTestNotHandledID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestNotHandledID")
+    MTRClusterTestClusterCommandTestNotHandledID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestNotHandledID")
     = 0x00000001,
     MTRClusterTestClusterCommandTestAddArgumentsResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestAddArgumentsResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsResponseID")
     = 0x00000001,
-    MTRClusterTestClusterCommandTestSpecificID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestSpecificID")
+    MTRClusterTestClusterCommandTestSpecificID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestSpecificID")
     = 0x00000002,
     MTRClusterTestClusterCommandTestSimpleArgumentResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestSimpleArgumentResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentResponseID")
     = 0x00000002,
     MTRClusterTestClusterCommandTestUnknownCommandID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestUnknownCommandID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestUnknownCommandID")
     = 0x00000003,
     MTRClusterTestClusterCommandTestStructArrayArgumentResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestStructArrayArgumentResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentResponseID")
     = 0x00000003,
-    MTRClusterTestClusterCommandTestAddArgumentsID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestAddArgumentsID")
+    MTRClusterTestClusterCommandTestAddArgumentsID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsID")
     = 0x00000004,
     MTRClusterTestClusterCommandTestListInt8UReverseResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestListInt8UReverseResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseResponseID")
     = 0x00000004,
     MTRClusterTestClusterCommandTestSimpleArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestSimpleArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentRequestID")
     = 0x00000005,
     MTRClusterTestClusterCommandTestEnumsResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestEnumsResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEnumsResponseID")
     = 0x00000005,
     MTRClusterTestClusterCommandTestStructArrayArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestStructArrayArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentRequestID")
     = 0x00000006,
     MTRClusterTestClusterCommandTestNullableOptionalResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestNullableOptionalResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalResponseID")
     = 0x00000006,
     MTRClusterTestClusterCommandTestStructArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestStructArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestStructArgumentRequestID")
     = 0x00000007,
     MTRClusterTestClusterCommandTestComplexNullableOptionalResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestComplexNullableOptionalResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalResponseID")
     = 0x00000007,
     MTRClusterTestClusterCommandTestNestedStructArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestNestedStructArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructArgumentRequestID")
     = 0x00000008,
-    MTRClusterTestClusterCommandBooleanResponseID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandBooleanResponseID")
+    MTRClusterTestClusterCommandBooleanResponseID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandBooleanResponseID")
     = 0x00000008,
     MTRClusterTestClusterCommandTestListStructArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestListStructArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestListStructArgumentRequestID")
     = 0x00000009,
     MTRClusterTestClusterCommandSimpleStructResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandSimpleStructResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandSimpleStructResponseID")
     = 0x00000009,
     MTRClusterTestClusterCommandTestListInt8UArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestListInt8UArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UArgumentRequestID")
     = 0x0000000A,
     MTRClusterTestClusterCommandTestEmitTestEventResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestEmitTestEventResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventResponseID")
     = 0x0000000A,
     MTRClusterTestClusterCommandTestNestedStructListArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestNestedStructListArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructListArgumentRequestID")
     = 0x0000000B,
     MTRClusterTestClusterCommandTestEmitTestFabricScopedEventResponseID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID")
     = 0x0000000B,
     MTRClusterTestClusterCommandTestListNestedStructListArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestListNestedStructListArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestListNestedStructListArgumentRequestID")
     = 0x0000000C,
     MTRClusterTestClusterCommandTestListInt8UReverseRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestListInt8UReverseRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseRequestID")
     = 0x0000000D,
-    MTRClusterTestClusterCommandTestEnumsRequestID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingCommandTestEnumsRequestID")
+    MTRClusterTestClusterCommandTestEnumsRequestID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEnumsRequestID")
     = 0x0000000E,
     MTRClusterTestClusterCommandTestNullableOptionalRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestNullableOptionalRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalRequestID")
     = 0x0000000F,
     MTRClusterTestClusterCommandTestComplexNullableOptionalRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestComplexNullableOptionalRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalRequestID")
     = 0x00000010,
     MTRClusterTestClusterCommandSimpleStructEchoRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandSimpleStructEchoRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandSimpleStructEchoRequestID")
     = 0x00000011,
     MTRClusterTestClusterCommandTimedInvokeRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTimedInvokeRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTimedInvokeRequestID")
     = 0x00000012,
     MTRClusterTestClusterCommandTestSimpleOptionalArgumentRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID")
     = 0x00000013,
     MTRClusterTestClusterCommandTestEmitTestEventRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestEmitTestEventRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventRequestID")
     = 0x00000014,
     MTRClusterTestClusterCommandTestEmitTestFabricScopedEventRequestID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID")
+        "Please use MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID")
     = 0x00000015,
 
+    // Cluster UnitTesting commands
+    MTRCommandIDTypeClusterUnitTestingCommandTestID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterUnitTestingCommandTestSpecificResponseID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterUnitTestingCommandTestNotHandledID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsResponseID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRCommandIDTypeClusterUnitTestingCommandTestSpecificID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRCommandIDTypeClusterUnitTestingCommandTestUnknownCommandID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentResponseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRCommandIDTypeClusterUnitTestingCommandTestAddArgumentsID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseResponseID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRCommandIDTypeClusterUnitTestingCommandTestSimpleArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEnumsResponseID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRCommandIDTypeClusterUnitTestingCommandTestStructArrayArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRCommandIDTypeClusterUnitTestingCommandTestStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalResponseID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterUnitTestingCommandBooleanResponseID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRCommandIDTypeClusterUnitTestingCommandTestListStructArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterUnitTestingCommandSimpleStructResponseID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRCommandIDTypeClusterUnitTestingCommandTestNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventResponseID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRCommandIDTypeClusterUnitTestingCommandTestListNestedStructListArgumentRequestID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRCommandIDTypeClusterUnitTestingCommandTestListInt8UReverseRequestID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEnumsRequestID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRCommandIDTypeClusterUnitTestingCommandTestNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRCommandIDTypeClusterUnitTestingCommandTestComplexNullableOptionalRequestID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRCommandIDTypeClusterUnitTestingCommandSimpleStructEchoRequestID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRCommandIDTypeClusterUnitTestingCommandTimedInvokeRequestID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRCommandIDTypeClusterUnitTestingCommandTestSimpleOptionalArgumentRequestID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestEventRequestID MTR_NEWLY_AVAILABLE = 0x00000014,
+    MTRCommandIDTypeClusterUnitTestingCommandTestEmitTestFabricScopedEventRequestID MTR_NEWLY_AVAILABLE = 0x00000015,
+
+    // Cluster FaultInjection deprecated command id names
+    MTRClusterFaultInjectionCommandFailAtFaultID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterFaultInjectionCommandFailAtFaultID")
+    = 0x00000000,
+    MTRClusterFaultInjectionCommandFailRandomlyAtFaultID MTR_NEWLY_DEPRECATED(
+        "Please use MTRCommandIDTypeClusterFaultInjectionCommandFailRandomlyAtFaultID")
+    = 0x00000001,
+
     // Cluster FaultInjection commands
-    MTRClusterFaultInjectionCommandFailAtFaultID = 0x00000000,
-    MTRClusterFaultInjectionCommandFailRandomlyAtFaultID = 0x00000001,
+    MTRCommandIDTypeClusterFaultInjectionCommandFailAtFaultID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRCommandIDTypeClusterFaultInjectionCommandFailRandomlyAtFaultID MTR_NEWLY_AVAILABLE = 0x00000001,
 
 };
 
 #pragma mark - Events IDs
 
-typedef NS_ENUM(uint32_t, MTRClusterEventIDType) {
+typedef NS_ENUM(uint32_t, MTREventIDType) {
+
+    // Cluster AccessControl deprecated event names
+    MTRClusterAccessControlEventAccessControlEntryChangedID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterAccessControlEventAccessControlEntryChangedID")
+    = 0x00000000,
+    MTRClusterAccessControlEventAccessControlExtensionChangedID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterAccessControlEventAccessControlExtensionChangedID")
+    = 0x00000001,
 
     // Cluster AccessControl events
-    MTRClusterAccessControlEventAccessControlEntryChangedID = 0x00000000,
-    MTRClusterAccessControlEventAccessControlExtensionChangedID = 0x00000001,
+    MTREventIDTypeClusterAccessControlEventAccessControlEntryChangedID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterAccessControlEventAccessControlExtensionChangedID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster Actions deprecated event names
+    MTRClusterActionsEventStateChangedID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterActionsEventStateChangedID")
+    = 0x00000000,
+    MTRClusterActionsEventActionFailedID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterActionsEventActionFailedID")
+    = 0x00000001,
 
     // Cluster Actions events
-    MTRClusterActionsEventStateChangedID = 0x00000000,
-    MTRClusterActionsEventActionFailedID = 0x00000001,
+    MTREventIDTypeClusterActionsEventStateChangedID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterActionsEventActionFailedID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster Basic deprecated event names
+    MTRClusterBasicEventStartUpID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventStartUpID") = 0x00000000,
+    MTRClusterBasicEventShutDownID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventShutDownID") = 0x00000001,
+    MTRClusterBasicEventLeaveID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventLeaveID") = 0x00000002,
+    MTRClusterBasicEventReachableChangedID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventReachableChangedID")
+    = 0x00000003,
 
     // Cluster Basic events
-    MTRClusterBasicEventStartUpID = 0x00000000,
-    MTRClusterBasicEventShutDownID = 0x00000001,
-    MTRClusterBasicEventLeaveID = 0x00000002,
-    MTRClusterBasicEventReachableChangedID = 0x00000003,
+    MTREventIDTypeClusterBasicEventStartUpID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterBasicEventShutDownID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterBasicEventLeaveID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterBasicEventReachableChangedID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster OtaSoftwareUpdateRequestor deprecated event names
+    MTRClusterOtaSoftwareUpdateRequestorEventStateTransitionID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventStateTransitionID")
+    = 0x00000000,
+    MTRClusterOtaSoftwareUpdateRequestorEventVersionAppliedID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventVersionAppliedID")
+    = 0x00000001,
+    MTRClusterOtaSoftwareUpdateRequestorEventDownloadErrorID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventDownloadErrorID")
+    = 0x00000002,
 
     // Cluster OtaSoftwareUpdateRequestor events
-    MTRClusterOtaSoftwareUpdateRequestorEventStateTransitionID = 0x00000000,
-    MTRClusterOtaSoftwareUpdateRequestorEventVersionAppliedID = 0x00000001,
-    MTRClusterOtaSoftwareUpdateRequestorEventDownloadErrorID = 0x00000002,
+    MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventStateTransitionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventVersionAppliedID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterOtaSoftwareUpdateRequestorEventDownloadErrorID MTR_NEWLY_AVAILABLE = 0x00000002,
+
+    // Cluster GeneralDiagnostics deprecated event names
+    MTRClusterGeneralDiagnosticsEventHardwareFaultChangeID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterGeneralDiagnosticsEventHardwareFaultChangeID")
+    = 0x00000000,
+    MTRClusterGeneralDiagnosticsEventRadioFaultChangeID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterGeneralDiagnosticsEventRadioFaultChangeID")
+    = 0x00000001,
+    MTRClusterGeneralDiagnosticsEventNetworkFaultChangeID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterGeneralDiagnosticsEventNetworkFaultChangeID")
+    = 0x00000002,
+    MTRClusterGeneralDiagnosticsEventBootReasonID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterGeneralDiagnosticsEventBootReasonID")
+    = 0x00000003,
 
     // Cluster GeneralDiagnostics events
-    MTRClusterGeneralDiagnosticsEventHardwareFaultChangeID = 0x00000000,
-    MTRClusterGeneralDiagnosticsEventRadioFaultChangeID = 0x00000001,
-    MTRClusterGeneralDiagnosticsEventNetworkFaultChangeID = 0x00000002,
-    MTRClusterGeneralDiagnosticsEventBootReasonID = 0x00000003,
+    MTREventIDTypeClusterGeneralDiagnosticsEventHardwareFaultChangeID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterGeneralDiagnosticsEventRadioFaultChangeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterGeneralDiagnosticsEventNetworkFaultChangeID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterGeneralDiagnosticsEventBootReasonID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster SoftwareDiagnostics deprecated event names
+    MTRClusterSoftwareDiagnosticsEventSoftwareFaultID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterSoftwareDiagnosticsEventSoftwareFaultID")
+    = 0x00000000,
 
     // Cluster SoftwareDiagnostics events
-    MTRClusterSoftwareDiagnosticsEventSoftwareFaultID = 0x00000000,
+    MTREventIDTypeClusterSoftwareDiagnosticsEventSoftwareFaultID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster ThreadNetworkDiagnostics deprecated event names
+    MTRClusterThreadNetworkDiagnosticsEventConnectionStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterThreadNetworkDiagnosticsEventConnectionStatusID")
+    = 0x00000000,
+    MTRClusterThreadNetworkDiagnosticsEventNetworkFaultChangeID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterThreadNetworkDiagnosticsEventNetworkFaultChangeID")
+    = 0x00000001,
 
     // Cluster ThreadNetworkDiagnostics events
-    MTRClusterThreadNetworkDiagnosticsEventConnectionStatusID = 0x00000000,
-    MTRClusterThreadNetworkDiagnosticsEventNetworkFaultChangeID = 0x00000001,
+    MTREventIDTypeClusterThreadNetworkDiagnosticsEventConnectionStatusID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterThreadNetworkDiagnosticsEventNetworkFaultChangeID MTR_NEWLY_AVAILABLE = 0x00000001,
+
+    // Cluster WiFiNetworkDiagnostics deprecated event names
+    MTRClusterWiFiNetworkDiagnosticsEventDisconnectionID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterWiFiNetworkDiagnosticsEventDisconnectionID")
+    = 0x00000000,
+    MTRClusterWiFiNetworkDiagnosticsEventAssociationFailureID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterWiFiNetworkDiagnosticsEventAssociationFailureID")
+    = 0x00000001,
+    MTRClusterWiFiNetworkDiagnosticsEventConnectionStatusID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterWiFiNetworkDiagnosticsEventConnectionStatusID")
+    = 0x00000002,
 
     // Cluster WiFiNetworkDiagnostics events
-    MTRClusterWiFiNetworkDiagnosticsEventDisconnectionID = 0x00000000,
-    MTRClusterWiFiNetworkDiagnosticsEventAssociationFailureID = 0x00000001,
-    MTRClusterWiFiNetworkDiagnosticsEventConnectionStatusID = 0x00000002,
+    MTREventIDTypeClusterWiFiNetworkDiagnosticsEventDisconnectionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterWiFiNetworkDiagnosticsEventAssociationFailureID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterWiFiNetworkDiagnosticsEventConnectionStatusID MTR_NEWLY_AVAILABLE = 0x00000002,
+
+    // Cluster BridgedDeviceBasic deprecated event names
+    MTRClusterBridgedDeviceBasicEventStartUpID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterBridgedDeviceBasicEventStartUpID")
+    = 0x00000000,
+    MTRClusterBridgedDeviceBasicEventShutDownID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterBridgedDeviceBasicEventShutDownID")
+    = 0x00000001,
+    MTRClusterBridgedDeviceBasicEventLeaveID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBridgedDeviceBasicEventLeaveID")
+    = 0x00000002,
+    MTRClusterBridgedDeviceBasicEventReachableChangedID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterBridgedDeviceBasicEventReachableChangedID")
+    = 0x00000003,
 
     // Cluster BridgedDeviceBasic events
-    MTRClusterBridgedDeviceBasicEventStartUpID = 0x00000000,
-    MTRClusterBridgedDeviceBasicEventShutDownID = 0x00000001,
-    MTRClusterBridgedDeviceBasicEventLeaveID = 0x00000002,
-    MTRClusterBridgedDeviceBasicEventReachableChangedID = 0x00000003,
+    MTREventIDTypeClusterBridgedDeviceBasicEventStartUpID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterBridgedDeviceBasicEventShutDownID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterBridgedDeviceBasicEventLeaveID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterBridgedDeviceBasicEventReachableChangedID MTR_NEWLY_AVAILABLE = 0x00000003,
+
+    // Cluster Switch deprecated event names
+    MTRClusterSwitchEventSwitchLatchedID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventSwitchLatchedID")
+    = 0x00000000,
+    MTRClusterSwitchEventInitialPressID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventInitialPressID")
+    = 0x00000001,
+    MTRClusterSwitchEventLongPressID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventLongPressID") = 0x00000002,
+    MTRClusterSwitchEventShortReleaseID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventShortReleaseID")
+    = 0x00000003,
+    MTRClusterSwitchEventLongReleaseID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventLongReleaseID")
+    = 0x00000004,
+    MTRClusterSwitchEventMultiPressOngoingID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterSwitchEventMultiPressOngoingID")
+    = 0x00000005,
+    MTRClusterSwitchEventMultiPressCompleteID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterSwitchEventMultiPressCompleteID")
+    = 0x00000006,
 
     // Cluster Switch events
-    MTRClusterSwitchEventSwitchLatchedID = 0x00000000,
-    MTRClusterSwitchEventInitialPressID = 0x00000001,
-    MTRClusterSwitchEventLongPressID = 0x00000002,
-    MTRClusterSwitchEventShortReleaseID = 0x00000003,
-    MTRClusterSwitchEventLongReleaseID = 0x00000004,
-    MTRClusterSwitchEventMultiPressOngoingID = 0x00000005,
-    MTRClusterSwitchEventMultiPressCompleteID = 0x00000006,
+    MTREventIDTypeClusterSwitchEventSwitchLatchedID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterSwitchEventInitialPressID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterSwitchEventLongPressID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterSwitchEventShortReleaseID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTREventIDTypeClusterSwitchEventLongReleaseID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTREventIDTypeClusterSwitchEventMultiPressOngoingID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTREventIDTypeClusterSwitchEventMultiPressCompleteID MTR_NEWLY_AVAILABLE = 0x00000006,
+
+    // Cluster BooleanState deprecated event names
+    MTRClusterBooleanStateEventStateChangeID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBooleanStateEventStateChangeID")
+    = 0x00000000,
 
     // Cluster BooleanState events
-    MTRClusterBooleanStateEventStateChangeID = 0x00000000,
+    MTREventIDTypeClusterBooleanStateEventStateChangeID MTR_NEWLY_AVAILABLE = 0x00000000,
+
+    // Cluster DoorLock deprecated event names
+    MTRClusterDoorLockEventDoorLockAlarmID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterDoorLockEventDoorLockAlarmID")
+    = 0x00000000,
+    MTRClusterDoorLockEventDoorStateChangeID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterDoorLockEventDoorStateChangeID")
+    = 0x00000001,
+    MTRClusterDoorLockEventLockOperationID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterDoorLockEventLockOperationID")
+    = 0x00000002,
+    MTRClusterDoorLockEventLockOperationErrorID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterDoorLockEventLockOperationErrorID")
+    = 0x00000003,
+    MTRClusterDoorLockEventLockUserChangeID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterDoorLockEventLockUserChangeID")
+    = 0x00000004,
 
     // Cluster DoorLock events
-    MTRClusterDoorLockEventDoorLockAlarmID = 0x00000000,
-    MTRClusterDoorLockEventDoorStateChangeID = 0x00000001,
-    MTRClusterDoorLockEventLockOperationID = 0x00000002,
-    MTRClusterDoorLockEventLockOperationErrorID = 0x00000003,
-    MTRClusterDoorLockEventLockUserChangeID = 0x00000004,
+    MTREventIDTypeClusterDoorLockEventDoorLockAlarmID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterDoorLockEventDoorStateChangeID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterDoorLockEventLockOperationID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterDoorLockEventLockOperationErrorID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTREventIDTypeClusterDoorLockEventLockUserChangeID MTR_NEWLY_AVAILABLE = 0x00000004,
+
+    // Cluster PumpConfigurationAndControl deprecated event names
+    MTRClusterPumpConfigurationAndControlEventSupplyVoltageLowID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventSupplyVoltageLowID")
+    = 0x00000000,
+    MTRClusterPumpConfigurationAndControlEventSupplyVoltageHighID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventSupplyVoltageHighID")
+    = 0x00000001,
+    MTRClusterPumpConfigurationAndControlEventPowerMissingPhaseID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventPowerMissingPhaseID")
+    = 0x00000002,
+    MTRClusterPumpConfigurationAndControlEventSystemPressureLowID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventSystemPressureLowID")
+    = 0x00000003,
+    MTRClusterPumpConfigurationAndControlEventSystemPressureHighID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventSystemPressureHighID")
+    = 0x00000004,
+    MTRClusterPumpConfigurationAndControlEventDryRunningID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventDryRunningID")
+    = 0x00000005,
+    MTRClusterPumpConfigurationAndControlEventMotorTemperatureHighID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventMotorTemperatureHighID")
+    = 0x00000006,
+    MTRClusterPumpConfigurationAndControlEventPumpMotorFatalFailureID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventPumpMotorFatalFailureID")
+    = 0x00000007,
+    MTRClusterPumpConfigurationAndControlEventElectronicTemperatureHighID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicTemperatureHighID")
+    = 0x00000008,
+    MTRClusterPumpConfigurationAndControlEventPumpBlockedID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventPumpBlockedID")
+    = 0x00000009,
+    MTRClusterPumpConfigurationAndControlEventSensorFailureID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventSensorFailureID")
+    = 0x0000000A,
+    MTRClusterPumpConfigurationAndControlEventElectronicNonFatalFailureID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicNonFatalFailureID")
+    = 0x0000000B,
+    MTRClusterPumpConfigurationAndControlEventElectronicFatalFailureID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicFatalFailureID")
+    = 0x0000000C,
+    MTRClusterPumpConfigurationAndControlEventGeneralFaultID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventGeneralFaultID")
+    = 0x0000000D,
+    MTRClusterPumpConfigurationAndControlEventLeakageID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventLeakageID")
+    = 0x0000000E,
+    MTRClusterPumpConfigurationAndControlEventAirDetectionID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventAirDetectionID")
+    = 0x0000000F,
+    MTRClusterPumpConfigurationAndControlEventTurbineOperationID MTR_NEWLY_DEPRECATED(
+        "Please use MTREventIDTypeClusterPumpConfigurationAndControlEventTurbineOperationID")
+    = 0x00000010,
 
     // Cluster PumpConfigurationAndControl events
-    MTRClusterPumpConfigurationAndControlEventSupplyVoltageLowID = 0x00000000,
-    MTRClusterPumpConfigurationAndControlEventSupplyVoltageHighID = 0x00000001,
-    MTRClusterPumpConfigurationAndControlEventPowerMissingPhaseID = 0x00000002,
-    MTRClusterPumpConfigurationAndControlEventSystemPressureLowID = 0x00000003,
-    MTRClusterPumpConfigurationAndControlEventSystemPressureHighID = 0x00000004,
-    MTRClusterPumpConfigurationAndControlEventDryRunningID = 0x00000005,
-    MTRClusterPumpConfigurationAndControlEventMotorTemperatureHighID = 0x00000006,
-    MTRClusterPumpConfigurationAndControlEventPumpMotorFatalFailureID = 0x00000007,
-    MTRClusterPumpConfigurationAndControlEventElectronicTemperatureHighID = 0x00000008,
-    MTRClusterPumpConfigurationAndControlEventPumpBlockedID = 0x00000009,
-    MTRClusterPumpConfigurationAndControlEventSensorFailureID = 0x0000000A,
-    MTRClusterPumpConfigurationAndControlEventElectronicNonFatalFailureID = 0x0000000B,
-    MTRClusterPumpConfigurationAndControlEventElectronicFatalFailureID = 0x0000000C,
-    MTRClusterPumpConfigurationAndControlEventGeneralFaultID = 0x0000000D,
-    MTRClusterPumpConfigurationAndControlEventLeakageID = 0x0000000E,
-    MTRClusterPumpConfigurationAndControlEventAirDetectionID = 0x0000000F,
-    MTRClusterPumpConfigurationAndControlEventTurbineOperationID = 0x00000010,
-
-    // Cluster UnitTesting events
-    MTRClusterUnitTestingEventTestEventID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTRClusterUnitTestingEventTestFabricScopedEventID MTR_NEWLY_AVAILABLE = 0x00000002,
-
-    // Cluster TestCluster events
-    MTRClusterTestClusterEventTestEventID MTR_NEWLY_DEPRECATED("Please use MTRClusterUnitTestingEventTestEventID") = 0x00000001,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventSupplyVoltageLowID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventSupplyVoltageHighID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventPowerMissingPhaseID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventSystemPressureLowID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventSystemPressureHighID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventDryRunningID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventMotorTemperatureHighID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventPumpMotorFatalFailureID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicTemperatureHighID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventPumpBlockedID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventSensorFailureID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicNonFatalFailureID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventElectronicFatalFailureID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventGeneralFaultID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventLeakageID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventAirDetectionID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTREventIDTypeClusterPumpConfigurationAndControlEventTurbineOperationID MTR_NEWLY_AVAILABLE = 0x00000010,
+
+    // Cluster TestCluster deprecated event names
+    MTRClusterTestClusterEventTestEventID MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterUnitTestingEventTestEventID")
+    = 0x00000001,
     MTRClusterTestClusterEventTestFabricScopedEventID MTR_NEWLY_DEPRECATED(
-        "Please use MTRClusterUnitTestingEventTestFabricScopedEventID")
+        "Please use MTREventIDTypeClusterUnitTestingEventTestFabricScopedEventID")
     = 0x00000002,
 
+    // Cluster UnitTesting events
+    MTREventIDTypeClusterUnitTestingEventTestEventID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterUnitTestingEventTestFabricScopedEventID MTR_NEWLY_AVAILABLE = 0x00000002,
+
 };
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index e709166833da73..3ef9e811b7602a 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -159,8 +159,8 @@ - (void)triggerEffectWithParams:(MTRIdentifyClusterTriggerEffectParams *)params
 - (NSDictionary *)readAttributeIdentifyTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeIdentifyTimeID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTimeID)
                                              params:params];
 }
 
@@ -176,8 +176,8 @@ - (void)writeAttributeIdentifyTimeWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterIdentifyID)
-                                  attributeID:@(MTRClusterIdentifyAttributeIdentifyTimeID)
+                                    clusterID:@(MTRClusterIDTypeIdentifyID)
+                                  attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -186,48 +186,48 @@ - (void)writeAttributeIdentifyTimeWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeIdentifyTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeIdentifyTypeID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeIdentifyTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIdentifyID)
-                                        attributeID:@(MTRClusterIdentifyAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeIdentifyID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIdentifyAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -590,48 +590,48 @@ - (void)addGroupIfIdentifyingWithParams:(MTRGroupsClusterAddGroupIfIdentifyingPa
 - (NSDictionary *)readAttributeNameSupportWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeNameSupportID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeNameSupportID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupsID)
-                                        attributeID:@(MTRClusterGroupsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeGroupsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -1380,88 +1380,88 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
 - (NSDictionary *)readAttributeSceneCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeSceneCountID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeSceneCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentSceneWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeCurrentSceneID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeCurrentSceneID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentGroupWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeCurrentGroupID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeCurrentGroupID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSceneValidWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeSceneValidID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeSceneValidID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNameSupportWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeNameSupportID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeNameSupportID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLastConfiguredByWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeLastConfiguredByID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeLastConfiguredByID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterScenesID)
-                                        attributeID:@(MTRClusterScenesAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeScenesID)
+                                        attributeID:@(MTRAttributeIDTypeClusterScenesAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -1955,24 +1955,24 @@ - (void)onWithTimedOffWithParams:(MTROnOffClusterOnWithTimedOffParams *)params
 - (NSDictionary *)readAttributeOnOffWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeOnOffID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeOnOffID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGlobalSceneControlWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeGlobalSceneControlID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeGlobalSceneControlID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOnTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeOnTimeID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeOnTimeID)
                                              params:params];
 }
 
@@ -1988,8 +1988,8 @@ - (void)writeAttributeOnTimeWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOnOffID)
-                                  attributeID:@(MTRClusterOnOffAttributeOnTimeID)
+                                    clusterID:@(MTRClusterIDTypeOnOffID)
+                                  attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeOnTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -1998,8 +1998,8 @@ - (void)writeAttributeOnTimeWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeOffWaitTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeOffWaitTimeID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeOffWaitTimeID)
                                              params:params];
 }
 
@@ -2015,8 +2015,8 @@ - (void)writeAttributeOffWaitTimeWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOnOffID)
-                                  attributeID:@(MTRClusterOnOffAttributeOffWaitTimeID)
+                                    clusterID:@(MTRClusterIDTypeOnOffID)
+                                  attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeOffWaitTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2025,8 +2025,8 @@ - (void)writeAttributeOffWaitTimeWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeStartUpOnOffWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeStartUpOnOffID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeStartUpOnOffID)
                                              params:params];
 }
 
@@ -2042,8 +2042,8 @@ - (void)writeAttributeStartUpOnOffWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOnOffID)
-                                  attributeID:@(MTRClusterOnOffAttributeStartUpOnOffID)
+                                    clusterID:@(MTRClusterIDTypeOnOffID)
+                                  attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeStartUpOnOffID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2052,40 +2052,40 @@ - (void)writeAttributeStartUpOnOffWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffID)
-                                        attributeID:@(MTRClusterOnOffAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOnOffID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -2214,16 +2214,16 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeSwitchTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeSwitchTypeID)
+                                          clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSwitchActionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeSwitchActionsID)
+                                          clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchActionsID)
                                              params:params];
 }
 
@@ -2239,8 +2239,8 @@ - (void)writeAttributeSwitchActionsWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                  attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeSwitchActionsID)
+                                    clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeSwitchActionsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2248,41 +2248,43 @@ - (void)writeAttributeSwitchActionsWithValue:(NSDictionary *)dat
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAcceptedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOnOffSwitchConfigurationID)
-                                        attributeID:@(MTRClusterOnOffSwitchConfigurationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOnOffSwitchConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOnOffSwitchConfigurationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -2812,64 +2814,64 @@ - (void)moveToClosestFrequencyWithParams:(MTRLevelControlClusterMoveToClosestFre
 - (NSDictionary *)readAttributeCurrentLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeCurrentLevelID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeCurrentLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRemainingTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeRemainingTimeID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeRemainingTimeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeMinLevelID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeMinLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeMaxLevelID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeMaxLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentFrequencyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeCurrentFrequencyID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeCurrentFrequencyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinFrequencyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeMinFrequencyID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeMinFrequencyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxFrequencyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeMaxFrequencyID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeMaxFrequencyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOptionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeOptionsID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOptionsID)
                                              params:params];
 }
 
@@ -2885,8 +2887,8 @@ - (void)writeAttributeOptionsWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeOptionsID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOptionsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2895,8 +2897,8 @@ - (void)writeAttributeOptionsWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeOnOffTransitionTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeOnOffTransitionTimeID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnOffTransitionTimeID)
                                              params:params];
 }
 
@@ -2912,8 +2914,8 @@ - (void)writeAttributeOnOffTransitionTimeWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeOnOffTransitionTimeID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnOffTransitionTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2922,8 +2924,8 @@ - (void)writeAttributeOnOffTransitionTimeWithValue:(NSDictionary
 - (NSDictionary *)readAttributeOnLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeOnLevelID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnLevelID)
                                              params:params];
 }
 
@@ -2939,8 +2941,8 @@ - (void)writeAttributeOnLevelWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeOnLevelID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnLevelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2949,8 +2951,8 @@ - (void)writeAttributeOnLevelWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeOnTransitionTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeOnTransitionTimeID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnTransitionTimeID)
                                              params:params];
 }
 
@@ -2966,8 +2968,8 @@ - (void)writeAttributeOnTransitionTimeWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeOnTransitionTimeID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOnTransitionTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -2976,8 +2978,8 @@ - (void)writeAttributeOnTransitionTimeWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeOffTransitionTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeOffTransitionTimeID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOffTransitionTimeID)
                                              params:params];
 }
 
@@ -2993,8 +2995,8 @@ - (void)writeAttributeOffTransitionTimeWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeOffTransitionTimeID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeOffTransitionTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3003,8 +3005,8 @@ - (void)writeAttributeOffTransitionTimeWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeDefaultMoveRateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeDefaultMoveRateID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeDefaultMoveRateID)
                                              params:params];
 }
 
@@ -3020,8 +3022,8 @@ - (void)writeAttributeDefaultMoveRateWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeDefaultMoveRateID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeDefaultMoveRateID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3030,8 +3032,8 @@ - (void)writeAttributeDefaultMoveRateWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeStartUpCurrentLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeStartUpCurrentLevelID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeStartUpCurrentLevelID)
                                              params:params];
 }
 
@@ -3047,8 +3049,8 @@ - (void)writeAttributeStartUpCurrentLevelWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLevelControlID)
-                                  attributeID:@(MTRClusterLevelControlAttributeStartUpCurrentLevelID)
+                                    clusterID:@(MTRClusterIDTypeLevelControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeStartUpCurrentLevelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3057,40 +3059,40 @@ - (void)writeAttributeStartUpCurrentLevelWithValue:(NSDictionary
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLevelControlID)
-                                        attributeID:@(MTRClusterLevelControlAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeLevelControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLevelControlAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -3213,8 +3215,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeActiveTextWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeActiveTextID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeActiveTextID)
                                              params:params];
 }
 
@@ -3230,8 +3232,8 @@ - (void)writeAttributeActiveTextWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributeActiveTextID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeActiveTextID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3240,8 +3242,8 @@ - (void)writeAttributeActiveTextWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeDescriptionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeDescriptionID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeDescriptionID)
                                              params:params];
 }
 
@@ -3257,8 +3259,8 @@ - (void)writeAttributeDescriptionWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributeDescriptionID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeDescriptionID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3267,8 +3269,8 @@ - (void)writeAttributeDescriptionWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeInactiveTextWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeInactiveTextID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeInactiveTextID)
                                              params:params];
 }
 
@@ -3284,8 +3286,8 @@ - (void)writeAttributeInactiveTextWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributeInactiveTextID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeInactiveTextID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3294,8 +3296,8 @@ - (void)writeAttributeInactiveTextWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeOutOfServiceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeOutOfServiceID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeOutOfServiceID)
                                              params:params];
 }
 
@@ -3311,8 +3313,8 @@ - (void)writeAttributeOutOfServiceWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributeOutOfServiceID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeOutOfServiceID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3321,16 +3323,16 @@ - (void)writeAttributeOutOfServiceWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributePolarityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributePolarityID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributePolarityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePresentValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributePresentValueID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributePresentValueID)
                                              params:params];
 }
 
@@ -3346,8 +3348,8 @@ - (void)writeAttributePresentValueWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributePresentValueID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributePresentValueID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3356,8 +3358,8 @@ - (void)writeAttributePresentValueWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeReliabilityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeReliabilityID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeReliabilityID)
                                              params:params];
 }
 
@@ -3373,8 +3375,8 @@ - (void)writeAttributeReliabilityWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBinaryInputBasicID)
-                                  attributeID:@(MTRClusterBinaryInputBasicAttributeReliabilityID)
+                                    clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeReliabilityID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3383,56 +3385,56 @@ - (void)writeAttributeReliabilityWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeStatusFlagsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeStatusFlagsID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeStatusFlagsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApplicationTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeApplicationTypeID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeApplicationTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBinaryInputBasicID)
-                                        attributeID:@(MTRClusterBinaryInputBasicAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBinaryInputBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBinaryInputBasicAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -3465,72 +3467,72 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeDeviceListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeDeviceTypeListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeDeviceTypeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeServerListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeServerListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeServerListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClientListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeClientListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeClientListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePartsListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributePartsListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributePartsListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDescriptorID)
-                                        attributeID:@(MTRClusterDescriptorAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeDescriptorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDescriptorAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -3563,8 +3565,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeBindingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeBindingID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeBindingID)
                                              params:params];
 }
 
@@ -3580,8 +3582,8 @@ - (void)writeAttributeBindingWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBindingID)
-                                  attributeID:@(MTRClusterBindingAttributeBindingID)
+                                    clusterID:@(MTRClusterIDTypeBindingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBindingAttributeBindingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3590,40 +3592,40 @@ - (void)writeAttributeBindingWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBindingID)
-                                        attributeID:@(MTRClusterBindingAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBindingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBindingAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -3656,8 +3658,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeAclWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeAclID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeAclID)
                                              params:params];
 }
 
@@ -3673,8 +3675,8 @@ - (void)writeAttributeAclWithValue:(NSDictionary *)dataValueDict
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterAccessControlID)
-                                  attributeID:@(MTRClusterAccessControlAttributeAclID)
+                                    clusterID:@(MTRClusterIDTypeAccessControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeAclID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3683,8 +3685,8 @@ - (void)writeAttributeAclWithValue:(NSDictionary *)dataValueDict
 - (NSDictionary *)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeExtensionID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeExtensionID)
                                              params:params];
 }
 
@@ -3700,8 +3702,8 @@ - (void)writeAttributeExtensionWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterAccessControlID)
-                                  attributeID:@(MTRClusterAccessControlAttributeExtensionID)
+                                    clusterID:@(MTRClusterIDTypeAccessControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeExtensionID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -3709,65 +3711,67 @@ - (void)writeAttributeExtensionWithValue:(NSDictionary *)dataVal
 
 - (NSDictionary *)readAttributeSubjectsPerAccessControlEntryWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeSubjectsPerAccessControlEntryID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeAccessControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeSubjectsPerAccessControlEntryID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeTargetsPerAccessControlEntryWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeTargetsPerAccessControlEntryID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeTargetsPerAccessControlEntryID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAccessControlEntriesPerFabricWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeAccessControlEntriesPerFabricID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeAccessControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeAccessControlEntriesPerFabricID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccessControlID)
-                                        attributeID:@(MTRClusterAccessControlAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeAccessControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccessControlAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -4441,64 +4445,64 @@ - (void)disableActionWithDurationWithParams:(MTRActionsClusterDisableActionWithD
 - (NSDictionary *)readAttributeActionListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeActionListID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeActionListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeEndpointListsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeEndpointListsID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeEndpointListsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSetupURLWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeSetupURLID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeSetupURLID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterActionsID)
-                                        attributeID:@(MTRClusterActionsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeActionsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterActionsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -4708,48 +4712,48 @@ - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nulla
 - (NSDictionary *)readAttributeDataModelRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeDataModelRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeVendorNameID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeVendorNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeVendorIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeVendorIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeProductNameID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeProductIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNodeLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeNodeLabelID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeNodeLabelID)
                                              params:params];
 }
 
@@ -4765,8 +4769,8 @@ - (void)writeAttributeNodeLabelWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBasicID)
-                                  attributeID:@(MTRClusterBasicAttributeNodeLabelID)
+                                    clusterID:@(MTRClusterIDTypeBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeNodeLabelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -4775,8 +4779,8 @@ - (void)writeAttributeNodeLabelWithValue:(NSDictionary *)dataVal
 - (NSDictionary *)readAttributeLocationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeLocationID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocationID)
                                              params:params];
 }
 
@@ -4792,8 +4796,8 @@ - (void)writeAttributeLocationWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBasicID)
-                                  attributeID:@(MTRClusterBasicAttributeLocationID)
+                                    clusterID:@(MTRClusterIDTypeBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocationID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -4802,80 +4806,80 @@ - (void)writeAttributeLocationWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeHardwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeHardwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeHardwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeHardwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSoftwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeSoftwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSoftwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeSoftwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeManufacturingDateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeManufacturingDateID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePartNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributePartNumberID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributePartNumberID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductURLWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeProductURLID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductURLID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeProductLabelID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductLabelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSerialNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeSerialNumberID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSerialNumberID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLocalConfigDisabledWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeLocalConfigDisabledID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID)
                                              params:params];
 }
 
@@ -4891,8 +4895,8 @@ - (void)writeAttributeLocalConfigDisabledWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBasicID)
-                                  attributeID:@(MTRClusterBasicAttributeLocalConfigDisabledID)
+                                    clusterID:@(MTRClusterIDTypeBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -4901,64 +4905,64 @@ - (void)writeAttributeLocalConfigDisabledWithValue:(NSDictionary
 - (NSDictionary *)readAttributeReachableWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeReachableID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeReachableID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUniqueIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeUniqueIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeUniqueIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCapabilityMinimaWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeCapabilityMinimaID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBasicID)
-                                        attributeID:@(MTRClusterBasicAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5194,41 +5198,43 @@ - (void)notifyUpdateAppliedWithParams:(MTROtaSoftwareUpdateProviderClusterNotify
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateProviderID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateProviderID)
+                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateProviderID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateProviderID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAcceptedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateProviderID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateProviderAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateProviderID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateProviderID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateProviderAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateProviderID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateProviderID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateProviderID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateProviderAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5359,10 +5365,11 @@ - (void)announceOtaProviderWithParams:(MTROtaSoftwareUpdateRequestorClusterAnnou
 
 - (NSDictionary *)readAttributeDefaultOtaProvidersWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID)
+                             params:params];
 }
 
 - (void)writeAttributeDefaultOtaProvidersWithValue:(NSDictionary *)dataValueDictionary
@@ -5377,8 +5384,8 @@ - (void)writeAttributeDefaultOtaProvidersWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                  attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID)
+                                    clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                  attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeDefaultOtaProvidersID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5387,64 +5394,67 @@ - (void)writeAttributeDefaultOtaProvidersWithValue:(NSDictionary
 - (NSDictionary *)readAttributeUpdatePossibleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdatePossibleID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUpdateStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUpdateStateProgressWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeUpdateStateProgressID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOtaSoftwareUpdateRequestorID)
-                                        attributeID:@(MTRClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOtaSoftwareUpdateRequestorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOtaSoftwareUpdateRequestorAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5487,8 +5497,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeActiveLocaleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeActiveLocaleID)
+                                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeActiveLocaleID)
                                              params:params];
 }
 
@@ -5504,8 +5514,8 @@ - (void)writeAttributeActiveLocaleWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterLocalizationConfigurationID)
-                                  attributeID:@(MTRClusterLocalizationConfigurationAttributeActiveLocaleID)
+                                    clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeActiveLocaleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5514,48 +5524,50 @@ - (void)writeAttributeActiveLocaleWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeSupportedLocalesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeSupportedLocalesID)
+                                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeSupportedLocalesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeAcceptedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAcceptedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLocalizationConfigurationID)
-                                        attributeID:@(MTRClusterLocalizationConfigurationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeLocalizationConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLocalizationConfigurationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5588,8 +5600,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeHourFormatWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeHourFormatID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeHourFormatID)
                                              params:params];
 }
 
@@ -5605,8 +5617,8 @@ - (void)writeAttributeHourFormatWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                  attributeID:@(MTRClusterTimeFormatLocalizationAttributeHourFormatID)
+                                    clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeHourFormatID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5615,8 +5627,8 @@ - (void)writeAttributeHourFormatWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeActiveCalendarTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeActiveCalendarTypeID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeActiveCalendarTypeID)
                                              params:params];
 }
 
@@ -5632,8 +5644,8 @@ - (void)writeAttributeActiveCalendarTypeWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                  attributeID:@(MTRClusterTimeFormatLocalizationAttributeActiveCalendarTypeID)
+                                    clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeActiveCalendarTypeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5641,49 +5653,51 @@ - (void)writeAttributeActiveCalendarTypeWithValue:(NSDictionary
 
 - (NSDictionary *)readAttributeSupportedCalendarTypesWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeSupportedCalendarTypesID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTimeFormatLocalizationID)
-                                        attributeID:@(MTRClusterTimeFormatLocalizationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeTimeFormatLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTimeFormatLocalizationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5716,8 +5730,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeTemperatureUnitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeTemperatureUnitID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeTemperatureUnitID)
                                              params:params];
 }
 
@@ -5733,8 +5747,8 @@ - (void)writeAttributeTemperatureUnitWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitLocalizationID)
-                                  attributeID:@(MTRClusterUnitLocalizationAttributeTemperatureUnitID)
+                                    clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeTemperatureUnitID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5743,40 +5757,40 @@ - (void)writeAttributeTemperatureUnitWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitLocalizationID)
-                                        attributeID:@(MTRClusterUnitLocalizationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeUnitLocalizationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitLocalizationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5809,48 +5823,50 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeSourcesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeSourcesID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeSourcesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeAcceptedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAcceptedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceConfigurationID)
-                                        attributeID:@(MTRClusterPowerSourceConfigurationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceConfigurationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -5883,288 +5899,288 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeStatusID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOrderWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeOrderID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeOrderID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDescriptionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeDescriptionID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeDescriptionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredAssessedInputVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredAssessedInputVoltageID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredAssessedInputFrequencyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredAssessedInputFrequencyID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedInputFrequencyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredCurrentTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredCurrentTypeID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredCurrentTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredAssessedCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredAssessedCurrentID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredAssessedCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredNominalVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredNominalVoltageID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredNominalVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredMaximumCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredMaximumCurrentID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredMaximumCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiredPresentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeWiredPresentID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeWiredPresentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveWiredFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeActiveWiredFaultsID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeActiveWiredFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatVoltageID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatPercentRemainingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatPercentRemainingID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatPercentRemainingID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatTimeRemainingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatTimeRemainingID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeRemainingID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatChargeLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatChargeLevelID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatReplacementNeededWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatReplacementNeededID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementNeededID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatReplaceabilityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatReplaceabilityID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatReplaceabilityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatPresentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatPresentID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatPresentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveBatFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeActiveBatFaultsID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatReplacementDescriptionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatReplacementDescriptionID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatReplacementDescriptionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatCommonDesignationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatCommonDesignationID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatCommonDesignationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatANSIDesignationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatANSIDesignationID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatANSIDesignationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatIECDesignationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatIECDesignationID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatIECDesignationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatApprovedChemistryWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatApprovedChemistryID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatApprovedChemistryID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatCapacityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatCapacityID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatCapacityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatQuantityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatQuantityID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatQuantityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatChargeStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatChargeStateID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatChargeStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatTimeToFullChargeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatTimeToFullChargeID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatTimeToFullChargeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatFunctionalWhileChargingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatFunctionalWhileChargingID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatFunctionalWhileChargingID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBatChargingCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeBatChargingCurrentID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeBatChargingCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveBatChargeFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeActiveBatChargeFaultsID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeActiveBatChargeFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPowerSourceID)
-                                        attributeID:@(MTRClusterPowerSourceAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypePowerSourceID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPowerSourceAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -6352,8 +6368,8 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
 - (NSDictionary *)readAttributeBreadcrumbWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeBreadcrumbID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeBreadcrumbID)
                                              params:params];
 }
 
@@ -6369,8 +6385,8 @@ - (void)writeAttributeBreadcrumbWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterGeneralCommissioningID)
-                                  attributeID:@(MTRClusterGeneralCommissioningAttributeBreadcrumbID)
+                                    clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                  attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeBreadcrumbID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -6378,73 +6394,75 @@ - (void)writeAttributeBreadcrumbWithValue:(NSDictionary *)dataVa
 
 - (NSDictionary *)readAttributeBasicCommissioningInfoWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeBasicCommissioningInfoID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                     attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeBasicCommissioningInfoID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRegulatoryConfigWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeRegulatoryConfigID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeRegulatoryConfigID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLocationCapabilityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeLocationCapabilityID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeLocationCapabilityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSupportsConcurrentConnectionWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeSupportsConcurrentConnectionID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralCommissioningID)
-                                        attributeID:@(MTRClusterGeneralCommissioningAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeGeneralCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralCommissioningAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -6849,40 +6867,40 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
 - (NSDictionary *)readAttributeMaxNetworksWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeMaxNetworksID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeMaxNetworksID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNetworksWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeNetworksID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeNetworksID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeScanMaxTimeSecondsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeScanMaxTimeSecondsID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeScanMaxTimeSecondsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeConnectMaxTimeSecondsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeConnectMaxTimeSecondsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeInterfaceEnabledWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeInterfaceEnabledID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeInterfaceEnabledID)
                                              params:params];
 }
 
@@ -6898,8 +6916,8 @@ - (void)writeAttributeInterfaceEnabledWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterNetworkCommissioningID)
-                                  attributeID:@(MTRClusterNetworkCommissioningAttributeInterfaceEnabledID)
+                                    clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                  attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeInterfaceEnabledID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -6908,64 +6926,64 @@ - (void)writeAttributeInterfaceEnabledWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeLastNetworkingStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeLastNetworkingStatusID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkingStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLastNetworkIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeLastNetworkIDID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastNetworkIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLastConnectErrorValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeLastConnectErrorValueID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeLastConnectErrorValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterNetworkCommissioningID)
-                                        attributeID:@(MTRClusterNetworkCommissioningAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeNetworkCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterNetworkCommissioningAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -7141,40 +7159,40 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDiagnosticLogsID)
-                                        attributeID:@(MTRClusterDiagnosticLogsAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDiagnosticLogsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDiagnosticLogsAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDiagnosticLogsID)
-                                        attributeID:@(MTRClusterDiagnosticLogsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDiagnosticLogsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDiagnosticLogsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDiagnosticLogsID)
-                                        attributeID:@(MTRClusterDiagnosticLogsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeDiagnosticLogsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDiagnosticLogsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDiagnosticLogsID)
-                                        attributeID:@(MTRClusterDiagnosticLogsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeDiagnosticLogsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDiagnosticLogsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDiagnosticLogsID)
-                                        attributeID:@(MTRClusterDiagnosticLogsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeDiagnosticLogsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDiagnosticLogsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -7272,112 +7290,113 @@ - (void)testEventTriggerWithParams:(MTRGeneralDiagnosticsClusterTestEventTrigger
 - (NSDictionary *)readAttributeNetworkInterfacesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeNetworkInterfacesID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeNetworkInterfacesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRebootCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeRebootCountID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeRebootCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUpTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeUpTimeID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeUpTimeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTotalOperationalHoursWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeTotalOperationalHoursID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTotalOperationalHoursID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBootReasonsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeBootReasonsID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeBootReasonsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveHardwareFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveHardwareFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveRadioFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeActiveRadioFaultsID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveRadioFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveNetworkFaultsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeActiveNetworkFaultsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTestEventTriggersEnabledWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeTestEventTriggersEnabledID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGeneralDiagnosticsID)
-                                        attributeID:@(MTRClusterGeneralDiagnosticsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeGeneralDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGeneralDiagnosticsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -7477,72 +7496,73 @@ - (void)resetWatermarksWithParams:(MTRSoftwareDiagnosticsClusterResetWatermarksP
 - (NSDictionary *)readAttributeThreadMetricsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeThreadMetricsID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeThreadMetricsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentHeapFreeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapFreeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentHeapUsedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapUsedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentHeapHighWatermarkWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeCurrentHeapHighWatermarkID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSoftwareDiagnosticsID)
-                                        attributeID:@(MTRClusterSoftwareDiagnosticsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeSoftwareDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSoftwareDiagnosticsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -7651,545 +7671,562 @@ - (void)resetCountsWithParams:(MTRThreadNetworkDiagnosticsClusterResetCountsPara
 - (NSDictionary *)readAttributeChannelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeChannelID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRoutingRoleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRoutingRoleID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRoutingRoleID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNetworkNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeNetworkNameID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNetworkNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePanIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributePanIdID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePanIdID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeExtendedPanIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeExtendedPanIdID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMeshLocalPrefixWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeMeshLocalPrefixID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOverrunCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeOverrunCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOverrunCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNeighborTableListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeNeighborTableListID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeNeighborTableListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRouteTableListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRouteTableListID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouteTableListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePartitionIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributePartitionIdID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWeightingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeWeightingID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeWeightingID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDataVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeDataVersionID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDataVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStableDataVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeStableDataVersionID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeStableDataVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLeaderRouterIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRouterIdID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDetachedRoleCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDetachedRoleCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeChildRoleCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeChildRoleCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChildRoleCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRouterRoleCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRouterRoleCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLeaderRoleCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeLeaderRoleCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttachAttemptCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttachAttemptCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributePartitionIdChangeCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePartitionIdChangeCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeBetterPartitionAttachAttemptCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return
-        [self.device readAttributeWithEndpointID:@(_endpoint)
-                                       clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                     attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID)
-                                          params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeBetterPartitionAttachAttemptCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeParentChangeCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeParentChangeCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeParentChangeCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxTotalCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxTotalCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxTotalCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxUnicastCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxUnicastCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxBroadcastCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBroadcastCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxAckRequestedCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckRequestedCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeTxAckedCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxAckedCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxAckedCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxNoAckRequestedCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxNoAckRequestedCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeTxDataCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxDataCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxDataPollCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDataPollCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxBeaconCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxBeaconRequestCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxBeaconRequestCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeTxOtherCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxOtherCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxOtherCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxRetryCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxRetryCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxRetryCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxDirectMaxRetryExpiryCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxIndirectMaxRetryExpiryCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeTxErrCcaCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrCcaCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxErrAbortCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrAbortCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxErrBusyChannelCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeTxErrBusyChannelCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRxTotalCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxTotalCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxTotalCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxUnicastCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxUnicastCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxBroadcastCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBroadcastCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxDataCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxDataCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxDataPollCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDataPollCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxBeaconCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxBeaconRequestCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxBeaconRequestCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRxOtherCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxOtherCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxOtherCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxAddressFilteredCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxAddressFilteredCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRxDestAddrFilteredCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDestAddrFilteredCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRxDuplicatedCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxDuplicatedCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrNoFrameCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrNoFrameCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrUnknownNeighborCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrUnknownNeighborCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrInvalidSrcAddrCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrInvalidSrcAddrCountID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrSecCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrSecCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrFcsCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrFcsCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRxErrOtherCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeRxErrOtherCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveTimestampWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeActiveTimestampID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveTimestampID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePendingTimestampWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributePendingTimestampID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributePendingTimestampID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDelayWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeDelayID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeDelayID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSecurityPolicyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeSecurityPolicyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeChannelPage0MaskWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeChannelPage0MaskID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOperationalDatasetComponentsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeOperationalDatasetComponentsID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeActiveNetworkFaultsListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeActiveNetworkFaultsListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAcceptedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThreadNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterThreadNetworkDiagnosticsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeThreadNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThreadNetworkDiagnosticsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -8298,144 +8335,149 @@ - (void)resetCountsWithParams:(MTRWiFiNetworkDiagnosticsClusterResetCountsParams
 - (NSDictionary *)readAttributeBssidWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeBssidID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBssidID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSecurityTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeSecurityTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWiFiVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeWiFiVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeChannelNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeChannelNumberID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeChannelNumberID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRssiWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeRssiID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeRssiID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBeaconLostCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconLostCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBeaconRxCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeBeaconRxCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePacketMulticastRxCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastRxCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributePacketMulticastTxCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketMulticastTxCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributePacketUnicastRxCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastRxCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributePacketUnicastTxCountWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributePacketUnicastTxCountID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentMaxRateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeCurrentMaxRateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOverrunCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeOverrunCountID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeOverrunCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWiFiNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeWiFiNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWiFiNetworkDiagnosticsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -8544,112 +8586,114 @@ - (void)resetCountsWithParams:(MTREthernetNetworkDiagnosticsClusterResetCountsPa
 - (NSDictionary *)readAttributePHYRateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributePHYRateID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePHYRateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFullDuplexWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeFullDuplexID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFullDuplexID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePacketRxCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributePacketRxCountID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketRxCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePacketTxCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributePacketTxCountID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributePacketTxCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTxErrCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeTxErrCountID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTxErrCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCollisionCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeCollisionCountID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCollisionCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOverrunCountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeOverrunCountID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeOverrunCountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCarrierDetectWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeCarrierDetectID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTimeSinceResetWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeTimeSinceResetID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterEthernetNetworkDiagnosticsID)
-                                        attributeID:@(MTRClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeEthernetNetworkDiagnosticsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterEthernetNetworkDiagnosticsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -8701,32 +8745,32 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeVendorNameID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeVendorIDID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeVendorIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeProductNameID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNodeLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeNodeLabelID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeNodeLabelID)
                                              params:params];
 }
 
@@ -8742,8 +8786,8 @@ - (void)writeAttributeNodeLabelWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                  attributeID:@(MTRClusterBridgedDeviceBasicAttributeNodeLabelID)
+                                    clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeNodeLabelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -8752,128 +8796,128 @@ - (void)writeAttributeNodeLabelWithValue:(NSDictionary *)dataVal
 - (NSDictionary *)readAttributeHardwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeHardwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeHardwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeHardwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeHardwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSoftwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeSoftwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSoftwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeSoftwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSoftwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeManufacturingDateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeManufacturingDateID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeManufacturingDateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePartNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributePartNumberID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributePartNumberID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductURLWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeProductURLID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductURLID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeProductLabelID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeProductLabelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSerialNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeSerialNumberID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeSerialNumberID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReachableWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeReachableID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeReachableID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUniqueIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeUniqueIDID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeUniqueIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBridgedDeviceBasicID)
-                                        attributeID:@(MTRClusterBridgedDeviceBasicAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBridgedDeviceBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBridgedDeviceBasicAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -8906,64 +8950,64 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeNumberOfPositionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeNumberOfPositionsID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeNumberOfPositionsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeCurrentPositionID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeCurrentPositionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMultiPressMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeMultiPressMaxID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeMultiPressMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterSwitchID)
-                                        attributeID:@(MTRClusterSwitchAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeSwitchID)
+                                        attributeID:@(MTRAttributeIDTypeClusterSwitchAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -9164,64 +9208,67 @@ - (void)revokeCommissioningWithParams:(MTRAdministratorCommissioningClusterRevok
 - (NSDictionary *)readAttributeWindowStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeWindowStatusID)
+                                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeWindowStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAdminFabricIndexWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeAdminFabricIndexID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                     attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminFabricIndexID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAdminVendorIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeAdminVendorIdID)
+                                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAdminVendorIdID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAdministratorCommissioningID)
-                                        attributeID:@(MTRClusterAdministratorCommissioningAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeAdministratorCommissioningID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAdministratorCommissioningAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -9680,88 +9727,90 @@ - (void)addTrustedRootCertificateWithParams:(MTROperationalCredentialsClusterAdd
 - (NSDictionary *)readAttributeNOCsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeNOCsID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeNOCsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeFabricsID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeFabricsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSupportedFabricsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeSupportedFabricsID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeSupportedFabricsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCommissionedFabricsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeCommissionedFabricsID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeCommissionedFabricsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTrustedRootCertificatesWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeTrustedRootCertificatesID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeTrustedRootCertificatesID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentFabricIndexWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeCurrentFabricIndexID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeCurrentFabricIndexID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOperationalCredentialsID)
-                                        attributeID:@(MTRClusterOperationalCredentialsAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOperationalCredentialsID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOperationalCredentialsAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -10158,8 +10207,8 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
 - (NSDictionary *)readAttributeGroupKeyMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeGroupKeyMapID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupKeyMapID)
                                              params:params];
 }
 
@@ -10175,8 +10224,8 @@ - (void)writeAttributeGroupKeyMapWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterGroupKeyManagementID)
-                                  attributeID:@(MTRClusterGroupKeyManagementAttributeGroupKeyMapID)
+                                    clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                  attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupKeyMapID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -10185,64 +10234,64 @@ - (void)writeAttributeGroupKeyMapWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeGroupTableID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeGroupTableID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxGroupsPerFabricWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeMaxGroupsPerFabricID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupsPerFabricID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxGroupKeysPerFabricWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeMaxGroupKeysPerFabricID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterGroupKeyManagementID)
-                                        attributeID:@(MTRClusterGroupKeyManagementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeGroupKeyManagementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterGroupKeyManagementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -10325,48 +10374,48 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeLabelListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeLabelListID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeLabelListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFixedLabelID)
-                                        attributeID:@(MTRClusterFixedLabelAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeFixedLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFixedLabelAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -10399,8 +10448,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeLabelListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeLabelListID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeLabelListID)
                                              params:params];
 }
 
@@ -10416,8 +10465,8 @@ - (void)writeAttributeLabelListWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUserLabelID)
-                                  attributeID:@(MTRClusterUserLabelAttributeLabelListID)
+                                    clusterID:@(MTRClusterIDTypeUserLabelID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeLabelListID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -10426,40 +10475,40 @@ - (void)writeAttributeLabelListWithValue:(NSDictionary *)dataVal
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUserLabelID)
-                                        attributeID:@(MTRClusterUserLabelAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeUserLabelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUserLabelAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -10492,48 +10541,48 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeStateValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeStateValueID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeStateValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBooleanStateID)
-                                        attributeID:@(MTRClusterBooleanStateAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBooleanStateID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBooleanStateAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -10615,40 +10664,40 @@ - (void)changeToModeWithParams:(MTRModeSelectClusterChangeToModeParams *)params
 - (NSDictionary *)readAttributeDescriptionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeDescriptionID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeDescriptionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStandardNamespaceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeStandardNamespaceID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeStandardNamespaceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSupportedModesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeSupportedModesID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeSupportedModesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeCurrentModeID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeCurrentModeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStartUpModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeStartUpModeID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeStartUpModeID)
                                              params:params];
 }
 
@@ -10664,8 +10713,8 @@ - (void)writeAttributeStartUpModeWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterModeSelectID)
-                                  attributeID:@(MTRClusterModeSelectAttributeStartUpModeID)
+                                    clusterID:@(MTRClusterIDTypeModeSelectID)
+                                  attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeStartUpModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -10674,8 +10723,8 @@ - (void)writeAttributeStartUpModeWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeOnModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeOnModeID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeOnModeID)
                                              params:params];
 }
 
@@ -10691,8 +10740,8 @@ - (void)writeAttributeOnModeWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterModeSelectID)
-                                  attributeID:@(MTRClusterModeSelectAttributeOnModeID)
+                                    clusterID:@(MTRClusterIDTypeModeSelectID)
+                                  attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeOnModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -10701,40 +10750,40 @@ - (void)writeAttributeOnModeWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterModeSelectID)
-                                        attributeID:@(MTRClusterModeSelectAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeModeSelectID)
+                                        attributeID:@(MTRAttributeIDTypeClusterModeSelectAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -11763,40 +11812,40 @@ - (void)clearCredentialWithParams:(MTRDoorLockClusterClearCredentialParams *)par
 - (NSDictionary *)readAttributeLockStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeLockStateID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLockStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLockTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeLockTypeID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLockTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActuatorEnabledWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeActuatorEnabledID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeActuatorEnabledID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDoorStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeDoorStateID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDoorStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDoorOpenEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeDoorOpenEventsID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDoorOpenEventsID)
                                              params:params];
 }
 
@@ -11812,8 +11861,8 @@ - (void)writeAttributeDoorOpenEventsWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeDoorOpenEventsID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDoorOpenEventsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -11822,8 +11871,8 @@ - (void)writeAttributeDoorOpenEventsWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeDoorClosedEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeDoorClosedEventsID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDoorClosedEventsID)
                                              params:params];
 }
 
@@ -11839,8 +11888,8 @@ - (void)writeAttributeDoorClosedEventsWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeDoorClosedEventsID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDoorClosedEventsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -11849,8 +11898,8 @@ - (void)writeAttributeDoorClosedEventsWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeOpenPeriodWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeOpenPeriodID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeOpenPeriodID)
                                              params:params];
 }
 
@@ -11866,8 +11915,8 @@ - (void)writeAttributeOpenPeriodWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeOpenPeriodID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeOpenPeriodID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -11876,104 +11925,107 @@ - (void)writeAttributeOpenPeriodWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeNumberOfTotalUsersSupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfTotalUsersSupportedID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfTotalUsersSupportedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfPINUsersSupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfPINUsersSupportedID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfPINUsersSupportedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfRFIDUsersSupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfRFIDUsersSupportedID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfRFIDUsersSupportedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfWeekDaySchedulesSupportedPerUserID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfYearDaySchedulesSupportedPerUserID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfHolidaySchedulesSupportedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxPINCodeLengthWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeMaxPINCodeLengthID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeMaxPINCodeLengthID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinPINCodeLengthWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeMinPINCodeLengthID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeMinPINCodeLengthID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxRFIDCodeLengthWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeMaxRFIDCodeLengthID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeMaxRFIDCodeLengthID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinRFIDCodeLengthWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeMinRFIDCodeLengthID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeMinRFIDCodeLengthID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCredentialRulesSupportWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeCredentialRulesSupportID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeCredentialRulesSupportID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeDoorLockID)
+                                     attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeNumberOfCredentialsSupportedPerUserID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeLanguageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeLanguageID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLanguageID)
                                              params:params];
 }
 
@@ -11989,8 +12041,8 @@ - (void)writeAttributeLanguageWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeLanguageID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLanguageID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -11999,8 +12051,8 @@ - (void)writeAttributeLanguageWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeLEDSettingsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeLEDSettingsID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLEDSettingsID)
                                              params:params];
 }
 
@@ -12016,8 +12068,8 @@ - (void)writeAttributeLEDSettingsWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeLEDSettingsID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLEDSettingsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12026,8 +12078,8 @@ - (void)writeAttributeLEDSettingsWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeAutoRelockTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeAutoRelockTimeID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeAutoRelockTimeID)
                                              params:params];
 }
 
@@ -12043,8 +12095,8 @@ - (void)writeAttributeAutoRelockTimeWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeAutoRelockTimeID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeAutoRelockTimeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12053,8 +12105,8 @@ - (void)writeAttributeAutoRelockTimeWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeSoundVolumeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeSoundVolumeID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeSoundVolumeID)
                                              params:params];
 }
 
@@ -12070,8 +12122,8 @@ - (void)writeAttributeSoundVolumeWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeSoundVolumeID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeSoundVolumeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12080,8 +12132,8 @@ - (void)writeAttributeSoundVolumeWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeOperatingModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeOperatingModeID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeOperatingModeID)
                                              params:params];
 }
 
@@ -12097,8 +12149,8 @@ - (void)writeAttributeOperatingModeWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeOperatingModeID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeOperatingModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12107,24 +12159,24 @@ - (void)writeAttributeOperatingModeWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeSupportedOperatingModesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeSupportedOperatingModesID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeSupportedOperatingModesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDefaultConfigurationRegisterWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeDefaultConfigurationRegisterID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeDefaultConfigurationRegisterID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeEnableLocalProgrammingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeEnableLocalProgrammingID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeEnableLocalProgrammingID)
                                              params:params];
 }
 
@@ -12142,8 +12194,8 @@ - (void)writeAttributeEnableLocalProgrammingWithValue:(NSDictionary *)readAttributeEnableOneTouchLockingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeEnableOneTouchLockingID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeEnableOneTouchLockingID)
                                              params:params];
 }
 
@@ -12171,8 +12223,8 @@ - (void)writeAttributeEnableOneTouchLockingWithValue:(NSDictionary *)readAttributeEnableInsideStatusLEDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeEnableInsideStatusLEDID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeEnableInsideStatusLEDID)
                                              params:params];
 }
 
@@ -12200,8 +12252,8 @@ - (void)writeAttributeEnableInsideStatusLEDWithValue:(NSDictionary *)readAttributeEnablePrivacyModeButtonWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeEnablePrivacyModeButtonID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeEnablePrivacyModeButtonID)
                                              params:params];
 }
 
@@ -12229,8 +12281,8 @@ - (void)writeAttributeEnablePrivacyModeButtonWithValue:(NSDictionary *)readAttributeLocalProgrammingFeaturesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeLocalProgrammingFeaturesID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeLocalProgrammingFeaturesID)
                                              params:params];
 }
 
@@ -12258,8 +12310,8 @@ - (void)writeAttributeLocalProgrammingFeaturesWithValue:(NSDictionary *)readAttributeWrongCodeEntryLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeWrongCodeEntryLimitID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeWrongCodeEntryLimitID)
                                              params:params];
 }
 
@@ -12285,8 +12337,8 @@ - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeWrongCodeEntryLimitID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeWrongCodeEntryLimitID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12295,8 +12347,8 @@ - (void)writeAttributeWrongCodeEntryLimitWithValue:(NSDictionary
 - (NSDictionary *)readAttributeUserCodeTemporaryDisableTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeUserCodeTemporaryDisableTimeID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeUserCodeTemporaryDisableTimeID)
                                              params:params];
 }
 
@@ -12314,8 +12366,8 @@ - (void)writeAttributeUserCodeTemporaryDisableTimeWithValue:(NSDictionary *)readAttributeSendPINOverTheAirWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeSendPINOverTheAirID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeSendPINOverTheAirID)
                                              params:params];
 }
 
@@ -12341,8 +12393,8 @@ - (void)writeAttributeSendPINOverTheAirWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeSendPINOverTheAirID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeSendPINOverTheAirID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12351,8 +12403,8 @@ - (void)writeAttributeSendPINOverTheAirWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeRequirePINforRemoteOperationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeRequirePINforRemoteOperationID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeRequirePINforRemoteOperationID)
                                              params:params];
 }
 
@@ -12370,8 +12422,8 @@ - (void)writeAttributeRequirePINforRemoteOperationWithValue:(NSDictionary *)readAttributeExpiringUserTimeoutWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeExpiringUserTimeoutID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeExpiringUserTimeoutID)
                                              params:params];
 }
 
@@ -12397,8 +12449,8 @@ - (void)writeAttributeExpiringUserTimeoutWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterDoorLockID)
-                                  attributeID:@(MTRClusterDoorLockAttributeExpiringUserTimeoutID)
+                                    clusterID:@(MTRClusterIDTypeDoorLockID)
+                                  attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeExpiringUserTimeoutID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -12407,40 +12459,40 @@ - (void)writeAttributeExpiringUserTimeoutWithValue:(NSDictionary
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterDoorLockID)
-                                        attributeID:@(MTRClusterDoorLockAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeDoorLockID)
+                                        attributeID:@(MTRAttributeIDTypeClusterDoorLockAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -13045,168 +13097,174 @@ - (void)goToTiltPercentageWithParams:(MTRWindowCoveringClusterGoToTiltPercentage
 - (NSDictionary *)readAttributeTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeTypeID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePhysicalClosedLimitLiftWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributePhysicalClosedLimitLiftID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitLiftID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePhysicalClosedLimitTiltWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributePhysicalClosedLimitTiltID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributePhysicalClosedLimitTiltID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionLiftWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionLiftID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionTiltWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionTiltID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfActuationsLiftWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeNumberOfActuationsLiftID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsLiftID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfActuationsTiltWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeNumberOfActuationsTiltID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeNumberOfActuationsTiltID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeConfigStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeConfigStatusID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeConfigStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionLiftPercentageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionLiftPercentageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercentageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionTiltPercentageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionTiltPercentageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                     attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercentageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeOperationalStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeOperationalStatusID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeOperationalStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTargetPositionLiftPercent100thsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionLiftPercent100thsID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeTargetPositionTiltPercent100thsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeTargetPositionTiltPercent100thsID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeEndProductTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeEndProductTypeID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeEndProductTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionLiftPercent100thsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionLiftPercent100thsID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentPositionTiltPercent100thsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeCurrentPositionTiltPercent100thsID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeInstalledOpenLimitLiftWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeInstalledOpenLimitLiftID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitLiftID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeInstalledClosedLimitLiftWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeInstalledClosedLimitLiftID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitLiftID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeInstalledOpenLimitTiltWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeInstalledOpenLimitTiltID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledOpenLimitTiltID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeInstalledClosedLimitTiltWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeInstalledClosedLimitTiltID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeInstalledClosedLimitTiltID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeModeID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeModeID)
                                              params:params];
 }
 
@@ -13222,8 +13280,8 @@ - (void)writeAttributeModeWithValue:(NSDictionary *)dataValueDic
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterWindowCoveringID)
-                                  attributeID:@(MTRClusterWindowCoveringAttributeModeID)
+                                    clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                  attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -13232,48 +13290,48 @@ - (void)writeAttributeModeWithValue:(NSDictionary *)dataValueDic
 - (NSDictionary *)readAttributeSafetyStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeSafetyStatusID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeSafetyStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWindowCoveringID)
-                                        attributeID:@(MTRClusterWindowCoveringAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeWindowCoveringID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWindowCoveringAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -13509,32 +13567,32 @@ - (void)barrierControlStopWithParams:(MTRBarrierControlClusterBarrierControlStop
 - (NSDictionary *)readAttributeBarrierMovingStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierMovingStateID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierMovingStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBarrierSafetyStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierSafetyStatusID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierSafetyStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBarrierCapabilitiesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierCapabilitiesID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCapabilitiesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBarrierOpenEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierOpenEventsID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenEventsID)
                                              params:params];
 }
 
@@ -13550,8 +13608,8 @@ - (void)writeAttributeBarrierOpenEventsWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBarrierControlID)
-                                  attributeID:@(MTRClusterBarrierControlAttributeBarrierOpenEventsID)
+                                    clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenEventsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -13560,8 +13618,8 @@ - (void)writeAttributeBarrierOpenEventsWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeBarrierCloseEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierCloseEventsID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCloseEventsID)
                                              params:params];
 }
 
@@ -13577,8 +13635,8 @@ - (void)writeAttributeBarrierCloseEventsWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBarrierControlID)
-                                  attributeID:@(MTRClusterBarrierControlAttributeBarrierCloseEventsID)
+                                    clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCloseEventsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -13587,8 +13645,8 @@ - (void)writeAttributeBarrierCloseEventsWithValue:(NSDictionary
 - (NSDictionary *)readAttributeBarrierCommandOpenEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierCommandOpenEventsID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandOpenEventsID)
                                              params:params];
 }
 
@@ -13606,8 +13664,8 @@ - (void)writeAttributeBarrierCommandOpenEventsWithValue:(NSDictionary *)readAttributeBarrierCommandCloseEventsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierCommandCloseEventsID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierCommandCloseEventsID)
                                              params:params];
 }
 
@@ -13635,8 +13693,8 @@ - (void)writeAttributeBarrierCommandCloseEventsWithValue:(NSDictionary *)readAttributeBarrierOpenPeriodWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierOpenPeriodID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenPeriodID)
                                              params:params];
 }
 
@@ -13662,8 +13720,8 @@ - (void)writeAttributeBarrierOpenPeriodWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBarrierControlID)
-                                  attributeID:@(MTRClusterBarrierControlAttributeBarrierOpenPeriodID)
+                                    clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierOpenPeriodID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -13672,8 +13730,8 @@ - (void)writeAttributeBarrierOpenPeriodWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeBarrierClosePeriodWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierClosePeriodID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierClosePeriodID)
                                              params:params];
 }
 
@@ -13689,8 +13747,8 @@ - (void)writeAttributeBarrierClosePeriodWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBarrierControlID)
-                                  attributeID:@(MTRClusterBarrierControlAttributeBarrierClosePeriodID)
+                                    clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierClosePeriodID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -13699,48 +13757,48 @@ - (void)writeAttributeBarrierClosePeriodWithValue:(NSDictionary
 - (NSDictionary *)readAttributeBarrierPositionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeBarrierPositionID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeBarrierPositionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBarrierControlID)
-                                        attributeID:@(MTRClusterBarrierControlAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBarrierControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBarrierControlAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -13802,153 +13860,160 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMaxPressureWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxPressureID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxPressureID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxSpeedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxSpeedID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxSpeedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxFlowWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxFlowID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxFlowID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinConstPressureWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMinConstPressureID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstPressureID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeMaxConstPressureWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxConstPressureID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstPressureID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeMinCompPressureWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMinCompPressureID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinCompPressureID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeMaxCompPressureWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxCompPressureID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxCompPressureID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeMinConstSpeedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMinConstSpeedID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstSpeedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxConstSpeedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxConstSpeedID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstSpeedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinConstFlowWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMinConstFlowID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstFlowID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxConstFlowWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxConstFlowID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstFlowID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinConstTempWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMinConstTempID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMinConstTempID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxConstTempWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeMaxConstTempID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeMaxConstTempID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePumpStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributePumpStatusID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePumpStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeEffectiveOperationModeWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveOperationModeID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeEffectiveControlModeWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeEffectiveControlModeID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeEffectiveControlModeID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeCapacityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeCapacityID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeCapacityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSpeedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeSpeedID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeSpeedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLifetimeRunningHoursWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeRunningHoursID)
+                             params:params];
 }
 
 - (void)writeAttributeLifetimeRunningHoursWithValue:(NSDictionary *)dataValueDictionary
@@ -13963,8 +14028,8 @@ - (void)writeAttributeLifetimeRunningHoursWithValue:(NSDictionary *)readAttributePowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributePowerID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributePowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLifetimeEnergyConsumedWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeLifetimeEnergyConsumedID)
+                             params:params];
 }
 
 - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSDictionary *)dataValueDictionary
@@ -13999,19 +14065,20 @@ - (void)writeAttributeLifetimeEnergyConsumedWithValue:(NSDictionary *)readAttributeOperationModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeOperationModeID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeOperationModeID)
                                              params:params];
 }
 
@@ -14027,8 +14094,8 @@ - (void)writeAttributeOperationModeWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                  attributeID:@(MTRClusterPumpConfigurationAndControlAttributeOperationModeID)
+                                    clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeOperationModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14037,8 +14104,8 @@ - (void)writeAttributeOperationModeWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeControlModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeControlModeID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeControlModeID)
                                              params:params];
 }
 
@@ -14054,8 +14121,8 @@ - (void)writeAttributeControlModeWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                  attributeID:@(MTRClusterPumpConfigurationAndControlAttributeControlModeID)
+                                    clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeControlModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14063,42 +14130,45 @@ - (void)writeAttributeControlModeWithValue:(NSDictionary *)dataV
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPumpConfigurationAndControlID)
-                                        attributeID:@(MTRClusterPumpConfigurationAndControlAttributeClusterRevisionID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypePumpConfigurationAndControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterPumpConfigurationAndControlAttributeClusterRevisionID)
+                                          params:params];
 }
 
 @end
@@ -14373,80 +14443,80 @@ - (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklySchedulePa
 - (NSDictionary *)readAttributeLocalTemperatureWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeLocalTemperatureID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOutdoorTemperatureWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOutdoorTemperatureID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOutdoorTemperatureID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOccupancyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupancyID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupancyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAbsMinHeatSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAbsMinHeatSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAbsMinHeatSetpointLimitID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAbsMaxHeatSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAbsMaxHeatSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAbsMaxHeatSetpointLimitID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAbsMinCoolSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAbsMinCoolSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAbsMinCoolSetpointLimitID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAbsMaxCoolSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAbsMaxCoolSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAbsMaxCoolSetpointLimitID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePICoolingDemandWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributePICoolingDemandID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributePICoolingDemandID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePIHeatingDemandWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributePIHeatingDemandID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributePIHeatingDemandID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeHVACSystemTypeConfigurationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeHVACSystemTypeConfigurationID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeHVACSystemTypeConfigurationID)
                                              params:params];
 }
 
@@ -14464,8 +14534,8 @@ - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSDictionary *)readAttributeLocalTemperatureCalibrationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeLocalTemperatureCalibrationID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeLocalTemperatureCalibrationID)
                                              params:params];
 }
 
@@ -14493,8 +14563,8 @@ - (void)writeAttributeLocalTemperatureCalibrationWithValue:(NSDictionary *)readAttributeOccupiedCoolingSetpointWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupiedCoolingSetpointID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedCoolingSetpointID)
                                              params:params];
 }
 
@@ -14522,8 +14592,8 @@ - (void)writeAttributeOccupiedCoolingSetpointWithValue:(NSDictionary *)readAttributeOccupiedHeatingSetpointWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupiedHeatingSetpointID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedHeatingSetpointID)
                                              params:params];
 }
 
@@ -14551,8 +14621,8 @@ - (void)writeAttributeOccupiedHeatingSetpointWithValue:(NSDictionary *)readAttributeUnoccupiedCoolingSetpointWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeUnoccupiedCoolingSetpointID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedCoolingSetpointID)
                                              params:params];
 }
 
@@ -14580,8 +14650,8 @@ - (void)writeAttributeUnoccupiedCoolingSetpointWithValue:(NSDictionary *)readAttributeUnoccupiedHeatingSetpointWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeUnoccupiedHeatingSetpointID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedHeatingSetpointID)
                                              params:params];
 }
 
@@ -14609,8 +14679,8 @@ - (void)writeAttributeUnoccupiedHeatingSetpointWithValue:(NSDictionary *)readAttributeMinHeatSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeMinHeatSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMinHeatSetpointLimitID)
                                              params:params];
 }
 
@@ -14636,8 +14706,8 @@ - (void)writeAttributeMinHeatSetpointLimitWithValue:(NSDictionary *)readAttributeMaxHeatSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeMaxHeatSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMaxHeatSetpointLimitID)
                                              params:params];
 }
 
@@ -14663,8 +14733,8 @@ - (void)writeAttributeMaxHeatSetpointLimitWithValue:(NSDictionary *)readAttributeMinCoolSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeMinCoolSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMinCoolSetpointLimitID)
                                              params:params];
 }
 
@@ -14690,8 +14760,8 @@ - (void)writeAttributeMinCoolSetpointLimitWithValue:(NSDictionary *)readAttributeMaxCoolSetpointLimitWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeMaxCoolSetpointLimitID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMaxCoolSetpointLimitID)
                                              params:params];
 }
 
@@ -14717,8 +14787,8 @@ - (void)writeAttributeMaxCoolSetpointLimitWithValue:(NSDictionary *)readAttributeMinSetpointDeadBandWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeMinSetpointDeadBandID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMinSetpointDeadBandID)
                                              params:params];
 }
 
@@ -14744,8 +14814,8 @@ - (void)writeAttributeMinSetpointDeadBandWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeMinSetpointDeadBandID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeMinSetpointDeadBandID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14754,8 +14824,8 @@ - (void)writeAttributeMinSetpointDeadBandWithValue:(NSDictionary
 - (NSDictionary *)readAttributeRemoteSensingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeRemoteSensingID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeRemoteSensingID)
                                              params:params];
 }
 
@@ -14771,8 +14841,8 @@ - (void)writeAttributeRemoteSensingWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeRemoteSensingID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeRemoteSensingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14781,8 +14851,8 @@ - (void)writeAttributeRemoteSensingWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeControlSequenceOfOperationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeControlSequenceOfOperationID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeControlSequenceOfOperationID)
                                              params:params];
 }
 
@@ -14800,8 +14870,8 @@ - (void)writeAttributeControlSequenceOfOperationWithValue:(NSDictionary *)readAttributeSystemModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeSystemModeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSystemModeID)
                                              params:params];
 }
 
@@ -14827,8 +14897,8 @@ - (void)writeAttributeSystemModeWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeSystemModeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSystemModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14837,40 +14907,40 @@ - (void)writeAttributeSystemModeWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeThermostatRunningModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeThermostatRunningModeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningModeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStartOfWeekWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeStartOfWeekID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeStartOfWeekID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfWeeklyTransitionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeNumberOfWeeklyTransitionsID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeNumberOfWeeklyTransitionsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNumberOfDailyTransitionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeNumberOfDailyTransitionsID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeNumberOfDailyTransitionsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTemperatureSetpointHoldWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeTemperatureSetpointHoldID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldID)
                                              params:params];
 }
 
@@ -14888,8 +14958,8 @@ - (void)writeAttributeTemperatureSetpointHoldWithValue:(NSDictionary *)readAttributeTemperatureSetpointHoldDurationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeTemperatureSetpointHoldDurationID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldDurationID)
                                              params:params];
 }
 
@@ -14917,8 +14987,8 @@ - (void)writeAttributeTemperatureSetpointHoldDurationWithValue:(NSDictionary *)readAttributeThermostatProgrammingOperationModeWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeThermostatProgrammingOperationModeID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeThermostatID)
+                                     attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeThermostatProgrammingOperationModeID)
+                                          params:params];
 }
 
 - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSDictionary *)dataValueDictionary
@@ -14946,8 +15017,8 @@ - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSDictionary<
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeThermostatProgrammingOperationModeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeThermostatProgrammingOperationModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -14956,40 +15027,40 @@ - (void)writeAttributeThermostatProgrammingOperationModeWithValue:(NSDictionary<
 - (NSDictionary *)readAttributeThermostatRunningStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeThermostatRunningStateID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeThermostatRunningStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSetpointChangeSourceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeSetpointChangeSourceID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSetpointChangeAmountWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeSetpointChangeAmountID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeAmountID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSetpointChangeSourceTimestampWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeSetpointChangeSourceTimestampID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSetpointChangeSourceTimestampID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOccupiedSetbackWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupiedSetbackID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackID)
                                              params:params];
 }
 
@@ -15005,8 +15076,8 @@ - (void)writeAttributeOccupiedSetbackWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeOccupiedSetbackID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15015,24 +15086,24 @@ - (void)writeAttributeOccupiedSetbackWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeOccupiedSetbackMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupiedSetbackMinID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOccupiedSetbackMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeOccupiedSetbackMaxID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeOccupiedSetbackMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUnoccupiedSetbackWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeUnoccupiedSetbackID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackID)
                                              params:params];
 }
 
@@ -15048,8 +15119,8 @@ - (void)writeAttributeUnoccupiedSetbackWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeUnoccupiedSetbackID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15058,24 +15129,24 @@ - (void)writeAttributeUnoccupiedSetbackWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeUnoccupiedSetbackMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeUnoccupiedSetbackMinID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeUnoccupiedSetbackMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeUnoccupiedSetbackMaxID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeUnoccupiedSetbackMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeEmergencyHeatDeltaWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeEmergencyHeatDeltaID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeEmergencyHeatDeltaID)
                                              params:params];
 }
 
@@ -15091,8 +15162,8 @@ - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeEmergencyHeatDeltaID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeEmergencyHeatDeltaID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15101,8 +15172,8 @@ - (void)writeAttributeEmergencyHeatDeltaWithValue:(NSDictionary
 - (NSDictionary *)readAttributeACTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACTypeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACTypeID)
                                              params:params];
 }
 
@@ -15118,8 +15189,8 @@ - (void)writeAttributeACTypeWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACTypeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACTypeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15128,8 +15199,8 @@ - (void)writeAttributeACTypeWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeACCapacityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACCapacityID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCapacityID)
                                              params:params];
 }
 
@@ -15145,8 +15216,8 @@ - (void)writeAttributeACCapacityWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACCapacityID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCapacityID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15155,8 +15226,8 @@ - (void)writeAttributeACCapacityWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeACRefrigerantTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACRefrigerantTypeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACRefrigerantTypeID)
                                              params:params];
 }
 
@@ -15172,8 +15243,8 @@ - (void)writeAttributeACRefrigerantTypeWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACRefrigerantTypeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACRefrigerantTypeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15182,8 +15253,8 @@ - (void)writeAttributeACRefrigerantTypeWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeACCompressorTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACCompressorTypeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCompressorTypeID)
                                              params:params];
 }
 
@@ -15199,8 +15270,8 @@ - (void)writeAttributeACCompressorTypeWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACCompressorTypeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCompressorTypeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15209,8 +15280,8 @@ - (void)writeAttributeACCompressorTypeWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeACErrorCodeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACErrorCodeID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACErrorCodeID)
                                              params:params];
 }
 
@@ -15226,8 +15297,8 @@ - (void)writeAttributeACErrorCodeWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACErrorCodeID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACErrorCodeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15236,8 +15307,8 @@ - (void)writeAttributeACErrorCodeWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeACLouverPositionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACLouverPositionID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACLouverPositionID)
                                              params:params];
 }
 
@@ -15253,8 +15324,8 @@ - (void)writeAttributeACLouverPositionWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACLouverPositionID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACLouverPositionID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15263,16 +15334,16 @@ - (void)writeAttributeACLouverPositionWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeACCoilTemperatureWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACCoilTemperatureID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCoilTemperatureID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeACCapacityformatWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeACCapacityformatID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCapacityformatID)
                                              params:params];
 }
 
@@ -15288,8 +15359,8 @@ - (void)writeAttributeACCapacityformatWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatID)
-                                  attributeID:@(MTRClusterThermostatAttributeACCapacityformatID)
+                                    clusterID:@(MTRClusterIDTypeThermostatID)
+                                  attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeACCapacityformatID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15298,40 +15369,40 @@ - (void)writeAttributeACCapacityformatWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatID)
-                                        attributeID:@(MTRClusterThermostatAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeThermostatID)
+                                        attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -15418,8 +15489,8 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeFanModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeFanModeID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeFanModeID)
                                              params:params];
 }
 
@@ -15435,8 +15506,8 @@ - (void)writeAttributeFanModeWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributeFanModeID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeFanModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15445,8 +15516,8 @@ - (void)writeAttributeFanModeWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeFanModeSequenceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeFanModeSequenceID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeFanModeSequenceID)
                                              params:params];
 }
 
@@ -15462,8 +15533,8 @@ - (void)writeAttributeFanModeSequenceWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributeFanModeSequenceID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeFanModeSequenceID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15472,8 +15543,8 @@ - (void)writeAttributeFanModeSequenceWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributePercentSettingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributePercentSettingID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributePercentSettingID)
                                              params:params];
 }
 
@@ -15489,8 +15560,8 @@ - (void)writeAttributePercentSettingWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributePercentSettingID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributePercentSettingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15499,24 +15570,24 @@ - (void)writeAttributePercentSettingWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributePercentCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributePercentCurrentID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributePercentCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSpeedMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeSpeedMaxID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeSpeedMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSpeedSettingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeSpeedSettingID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeSpeedSettingID)
                                              params:params];
 }
 
@@ -15532,8 +15603,8 @@ - (void)writeAttributeSpeedSettingWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributeSpeedSettingID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeSpeedSettingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15542,24 +15613,24 @@ - (void)writeAttributeSpeedSettingWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeSpeedCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeSpeedCurrentID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeSpeedCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRockSupportWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeRockSupportID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeRockSupportID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRockSettingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeRockSettingID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeRockSettingID)
                                              params:params];
 }
 
@@ -15575,8 +15646,8 @@ - (void)writeAttributeRockSettingWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributeRockSettingID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeRockSettingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15585,16 +15656,16 @@ - (void)writeAttributeRockSettingWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeWindSupportWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeWindSupportID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeWindSupportID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWindSettingWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeWindSettingID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeWindSettingID)
                                              params:params];
 }
 
@@ -15610,8 +15681,8 @@ - (void)writeAttributeWindSettingWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterFanControlID)
-                                  attributeID:@(MTRClusterFanControlAttributeWindSettingID)
+                                    clusterID:@(MTRClusterIDTypeFanControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeWindSettingID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -15620,40 +15691,40 @@ - (void)writeAttributeWindSettingWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFanControlID)
-                                        attributeID:@(MTRClusterFanControlAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeFanControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFanControlAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -15685,11 +15756,12 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 
 - (NSDictionary *)readAttributeTemperatureDisplayModeWithParams:(MTRReadParams * _Nullable)params
 {
-    return
-        [self.device readAttributeWithEndpointID:@(_endpoint)
-                                       clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                     attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID)
-                                          params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:
+                            @(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeTemperatureDisplayModeID)
+                             params:params];
 }
 
 - (void)writeAttributeTemperatureDisplayModeWithValue:(NSDictionary *)dataValueDictionary
@@ -15705,20 +15777,23 @@ - (void)writeAttributeTemperatureDisplayModeWithValue:(NSDictionary *)readAttributeKeypadLockoutWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID)
+                             params:params];
 }
 
 - (void)writeAttributeKeypadLockoutWithValue:(NSDictionary *)dataValueDictionary
@@ -15732,20 +15807,22 @@ - (void)writeAttributeKeypadLockoutWithValue:(NSDictionary *)dat
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                  attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                         attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeKeypadLockoutID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributeScheduleProgrammingVisibilityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device
         readAttributeWithEndpointID:@(_endpoint)
-                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:
+                            @(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeScheduleProgrammingVisibilityID)
                              params:params];
 }
 
@@ -15764,8 +15841,9 @@ - (void)writeAttributeScheduleProgrammingVisibilityWithValue:(NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeAttributeListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeAttributeListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeFeatureMapID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterThermostatUserInterfaceConfigurationID)
-                                        attributeID:@(MTRClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeThermostatUserInterfaceConfigurationID)
+                        attributeID:@(MTRAttributeIDTypeClusterThermostatUserInterfaceConfigurationAttributeClusterRevisionID)
+                             params:params];
 }
 
 @end
@@ -16855,80 +16938,80 @@ - (void)stepColorTemperatureWithParams:(MTRColorControlClusterStepColorTemperatu
 - (NSDictionary *)readAttributeCurrentHueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCurrentHueID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCurrentHueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentSaturationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCurrentSaturationID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCurrentSaturationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRemainingTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeRemainingTimeID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeRemainingTimeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentXWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCurrentXID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCurrentXID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentYWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCurrentYID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCurrentYID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDriftCompensationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeDriftCompensationID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeDriftCompensationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCompensationTextWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCompensationTextID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCompensationTextID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorTemperatureMiredsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorTemperatureMiredsID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorTemperatureMiredsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorModeID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorModeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOptionsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeOptionsID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeOptionsID)
                                              params:params];
 }
 
@@ -16944,8 +17027,8 @@ - (void)writeAttributeOptionsWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeOptionsID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeOptionsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -16954,160 +17037,160 @@ - (void)writeAttributeOptionsWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeNumberOfPrimariesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeNumberOfPrimariesID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeNumberOfPrimariesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary1XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary1XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary1XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary1YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary1YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary1YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary1IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary1IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary1IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary2XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary2XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary2XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary2YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary2YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary2YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary2IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary2IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary2IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary3XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary3XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary3XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary3YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary3YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary3YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary3IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary3IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary3IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary4XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary4XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary4XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary4YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary4YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary4YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary4IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary4IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary4IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary5XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary5XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary5XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary5YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary5YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary5YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary5IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary5IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary5IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary6XWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary6XID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary6XID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary6YWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary6YID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary6YID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePrimary6IntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributePrimary6IntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributePrimary6IntensityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeWhitePointXWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeWhitePointXID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeWhitePointXID)
                                              params:params];
 }
 
@@ -17123,8 +17206,8 @@ - (void)writeAttributeWhitePointXWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeWhitePointXID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeWhitePointXID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17133,8 +17216,8 @@ - (void)writeAttributeWhitePointXWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeWhitePointYWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeWhitePointYID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeWhitePointYID)
                                              params:params];
 }
 
@@ -17150,8 +17233,8 @@ - (void)writeAttributeWhitePointYWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeWhitePointYID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeWhitePointYID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17160,8 +17243,8 @@ - (void)writeAttributeWhitePointYWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeColorPointRXWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointRXID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointRXID)
                                              params:params];
 }
 
@@ -17177,8 +17260,8 @@ - (void)writeAttributeColorPointRXWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointRXID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointRXID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17187,8 +17270,8 @@ - (void)writeAttributeColorPointRXWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointRYWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointRYID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointRYID)
                                              params:params];
 }
 
@@ -17204,8 +17287,8 @@ - (void)writeAttributeColorPointRYWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointRYID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointRYID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17214,8 +17297,8 @@ - (void)writeAttributeColorPointRYWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointRIntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointRIntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointRIntensityID)
                                              params:params];
 }
 
@@ -17231,8 +17314,8 @@ - (void)writeAttributeColorPointRIntensityWithValue:(NSDictionary *)readAttributeColorPointGXWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointGXID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointGXID)
                                              params:params];
 }
 
@@ -17258,8 +17341,8 @@ - (void)writeAttributeColorPointGXWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointGXID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointGXID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17268,8 +17351,8 @@ - (void)writeAttributeColorPointGXWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointGYWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointGYID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointGYID)
                                              params:params];
 }
 
@@ -17285,8 +17368,8 @@ - (void)writeAttributeColorPointGYWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointGYID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointGYID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17295,8 +17378,8 @@ - (void)writeAttributeColorPointGYWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointGIntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointGIntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointGIntensityID)
                                              params:params];
 }
 
@@ -17312,8 +17395,8 @@ - (void)writeAttributeColorPointGIntensityWithValue:(NSDictionary *)readAttributeColorPointBXWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointBXID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointBXID)
                                              params:params];
 }
 
@@ -17339,8 +17422,8 @@ - (void)writeAttributeColorPointBXWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointBXID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointBXID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17349,8 +17432,8 @@ - (void)writeAttributeColorPointBXWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointBYWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointBYID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointBYID)
                                              params:params];
 }
 
@@ -17366,8 +17449,8 @@ - (void)writeAttributeColorPointBYWithValue:(NSDictionary *)data
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterColorControlID)
-                                  attributeID:@(MTRClusterColorControlAttributeColorPointBYID)
+                                    clusterID:@(MTRClusterIDTypeColorControlID)
+                                  attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointBYID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17376,8 +17459,8 @@ - (void)writeAttributeColorPointBYWithValue:(NSDictionary *)data
 - (NSDictionary *)readAttributeColorPointBIntensityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorPointBIntensityID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorPointBIntensityID)
                                              params:params];
 }
 
@@ -17393,8 +17476,8 @@ - (void)writeAttributeColorPointBIntensityWithValue:(NSDictionary *)readAttributeEnhancedCurrentHueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeEnhancedCurrentHueID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeEnhancedCurrentHueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeEnhancedColorModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeEnhancedColorModeID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeEnhancedColorModeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorLoopActiveWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorLoopActiveID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorLoopActiveID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorLoopDirectionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorLoopDirectionID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorLoopDirectionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorLoopTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorLoopTimeID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorLoopTimeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorLoopStartEnhancedHueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorLoopStartEnhancedHueID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorLoopStartEnhancedHueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorLoopStoredEnhancedHueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorLoopStoredEnhancedHueID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorLoopStoredEnhancedHueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorCapabilitiesWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorCapabilitiesID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorCapabilitiesID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorTempPhysicalMinMiredsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorTempPhysicalMinMiredsID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMinMiredsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeColorTempPhysicalMaxMiredsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeColorTempPhysicalMaxMiredsID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeColorTempPhysicalMaxMiredsID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeColorControlID)
+                                     attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeCoupleColorTempToLevelMinMiredsID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeStartUpColorTemperatureMiredsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeStartUpColorTemperatureMiredsID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeStartUpColorTemperatureMiredsID)
                                              params:params];
 }
 
@@ -17510,8 +17594,8 @@ - (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterColorControlID)
-                                        attributeID:@(MTRClusterColorControlAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeColorControlID)
+                                        attributeID:@(MTRAttributeIDTypeClusterColorControlAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -17776,32 +17860,32 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributePhysicalMinLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributePhysicalMinLevelID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMinLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePhysicalMaxLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributePhysicalMaxLevelID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributePhysicalMaxLevelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeBallastStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeBallastStatusID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeMinLevelID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeMinLevelID)
                                              params:params];
 }
 
@@ -17817,8 +17901,8 @@ - (void)writeAttributeMinLevelWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeMinLevelID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeMinLevelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17827,8 +17911,8 @@ - (void)writeAttributeMinLevelWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeMaxLevelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeMaxLevelID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeMaxLevelID)
                                              params:params];
 }
 
@@ -17844,8 +17928,8 @@ - (void)writeAttributeMaxLevelWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeMaxLevelID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeMaxLevelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17853,10 +17937,11 @@ - (void)writeAttributeMaxLevelWithValue:(NSDictionary *)dataValu
 
 - (NSDictionary *)readAttributeIntrinsicBalanceFactorWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeIntrinsicBalanceFactorID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeIntrinsicBalanceFactorID)
+                                          params:params];
 }
 
 - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSDictionary *)dataValueDictionary
@@ -17873,8 +17958,8 @@ - (void)writeAttributeIntrinsicBalanceFactorWithValue:(NSDictionary *)readAttributeBallastFactorAdjustmentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeBallastFactorAdjustmentID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeBallastFactorAdjustmentID)
+                                          params:params];
 }
 
 - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSDictionary *)dataValueDictionary
@@ -17902,8 +17988,8 @@ - (void)writeAttributeBallastFactorAdjustmentWithValue:(NSDictionary *)readAttributeLampQuantityWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampQuantityID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampQuantityID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLampTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampTypeID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampTypeID)
                                              params:params];
 }
 
@@ -17937,8 +18023,8 @@ - (void)writeAttributeLampTypeWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeLampTypeID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampTypeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17947,8 +18033,8 @@ - (void)writeAttributeLampTypeWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeLampManufacturerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampManufacturerID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampManufacturerID)
                                              params:params];
 }
 
@@ -17964,8 +18050,8 @@ - (void)writeAttributeLampManufacturerWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeLampManufacturerID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampManufacturerID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -17974,8 +18060,8 @@ - (void)writeAttributeLampManufacturerWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeLampRatedHoursWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampRatedHoursID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampRatedHoursID)
                                              params:params];
 }
 
@@ -17991,8 +18077,8 @@ - (void)writeAttributeLampRatedHoursWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeLampRatedHoursID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampRatedHoursID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -18001,8 +18087,8 @@ - (void)writeAttributeLampRatedHoursWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeLampBurnHoursWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampBurnHoursID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursID)
                                              params:params];
 }
 
@@ -18018,8 +18104,8 @@ - (void)writeAttributeLampBurnHoursWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeLampBurnHoursID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -18028,8 +18114,8 @@ - (void)writeAttributeLampBurnHoursWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeLampAlarmModeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampAlarmModeID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampAlarmModeID)
                                              params:params];
 }
 
@@ -18045,8 +18131,8 @@ - (void)writeAttributeLampAlarmModeWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterBallastConfigurationID)
-                                  attributeID:@(MTRClusterBallastConfigurationAttributeLampAlarmModeID)
+                                    clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampAlarmModeID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -18054,10 +18140,11 @@ - (void)writeAttributeLampAlarmModeWithValue:(NSDictionary *)dat
 
 - (NSDictionary *)readAttributeLampBurnHoursTripPointWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeLampBurnHoursTripPointID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                     attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeLampBurnHoursTripPointID)
+                                          params:params];
 }
 
 - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSDictionary *)dataValueDictionary
@@ -18074,8 +18161,8 @@ - (void)writeAttributeLampBurnHoursTripPointWithValue:(NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterBallastConfigurationID)
-                                        attributeID:@(MTRClusterBallastConfigurationAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBallastConfigurationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBallastConfigurationAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -18150,80 +18237,81 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeMinMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMinMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeMaxMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeMaxMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeToleranceID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLightSensorTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeLightSensorTypeID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeLightSensorTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIlluminanceMeasurementID)
-                                        attributeID:@(MTRClusterIlluminanceMeasurementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeIlluminanceMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterIlluminanceMeasurementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -18256,72 +18344,73 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeMinMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMinMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeMaxMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeMaxMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeToleranceID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeGeneratedCommandListID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeGeneratedCommandListID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTemperatureMeasurementID)
-                                        attributeID:@(MTRClusterTemperatureMeasurementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeTemperatureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTemperatureMeasurementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -18354,112 +18443,112 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeMinMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeMinMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeMaxMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeToleranceID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeScaledValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeScaledValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinScaledValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeMinScaledValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeMinScaledValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxScaledValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeMaxScaledValueID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeMaxScaledValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeScaledToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeScaledToleranceID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeScaledToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeScaleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeScaleID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeScaleID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterPressureMeasurementID)
-                                        attributeID:@(MTRClusterPressureMeasurementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypePressureMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterPressureMeasurementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -18492,72 +18581,72 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeMinMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeMinMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMaxMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeMaxMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeMaxMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeToleranceID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterFlowMeasurementID)
-                                        attributeID:@(MTRClusterFlowMeasurementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeFlowMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterFlowMeasurementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -18590,73 +18679,78 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeMeasuredValueID)
+                                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMeasuredValueID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMinMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMinMeasuredValueID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeMaxMeasuredValueWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeMaxMeasuredValueID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeToleranceWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeToleranceID)
+                                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeToleranceID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeGeneratedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAcceptedCommandListID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterRelativeHumidityMeasurementID)
-                                        attributeID:@(MTRClusterRelativeHumidityMeasurementAttributeClusterRevisionID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeRelativeHumidityMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterRelativeHumidityMeasurementAttributeClusterRevisionID)
+                                          params:params];
 }
 
 @end
@@ -18688,33 +18782,34 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeOccupancyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeOccupancyID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOccupancySensorTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeOccupancySensorTypeID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOccupancySensorTypeBitmapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeOccupancySensorTypeBitmapID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeOccupancySensorTypeBitmapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePirOccupiedToUnoccupiedDelayID)
+                                          params:params];
 }
 
 - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18731,8 +18826,8 @@ - (void)writeAttributePirOccupiedToUnoccupiedDelayWithValue:(NSDictionary *)readAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                     attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedDelayID)
+                                          params:params];
 }
 
 - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18760,8 +18856,8 @@ - (void)writeAttributePirUnoccupiedToOccupiedDelayWithValue:(NSDictionary *)readAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePirUnoccupiedToOccupiedThresholdID)
+                             params:params];
 }
 
 - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSDictionary *)dataValueDictionary
@@ -18788,20 +18885,22 @@ - (void)writeAttributePirUnoccupiedToOccupiedThresholdWithValue:(NSDictionary *)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID)
+                             params:params];
 }
 
 - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18817,20 +18916,22 @@ - (void)writeAttributeUltrasonicOccupiedToUnoccupiedDelayWithValue:(NSDictionary
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicOccupiedToUnoccupiedDelayID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID)
+                             params:params];
 }
 
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18846,20 +18947,22 @@ - (void)writeAttributeUltrasonicUnoccupiedToOccupiedDelayWithValue:(NSDictionary
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedDelayID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID)
+                             params:params];
 }
 
 - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSDictionary *)dataValueDictionary
@@ -18875,20 +18978,22 @@ - (void)writeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithValue:(NSDictio
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeUltrasonicUnoccupiedToOccupiedThresholdID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID)
+                             params:params];
 }
 
 - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18904,20 +19009,22 @@ - (void)writeAttributePhysicalContactOccupiedToUnoccupiedDelayWithValue:(NSDicti
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactOccupiedToUnoccupiedDelayID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID)
+                             params:params];
 }
 
 - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSDictionary *)dataValueDictionary
@@ -18933,12 +19040,13 @@ - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSDicti
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedDelayID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams:
@@ -18946,8 +19054,9 @@ - (void)writeAttributePhysicalContactUnoccupiedToOccupiedDelayWithValue:(NSDicti
 {
     return [self.device
         readAttributeWithEndpointID:@(_endpoint)
-                          clusterID:@(MTRClusterOccupancySensingID)
-                        attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID)
+                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                        attributeID:
+                            @(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID)
                              params:params];
 }
 
@@ -18964,51 +19073,53 @@ - (void)writeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithValue:(NSD
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterOccupancySensingID)
-                                  attributeID:@(MTRClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                         attributeID:
+                             @(MTRAttributeIDTypeClusterOccupancySensingAttributePhysicalContactUnoccupiedToOccupiedThresholdID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterOccupancySensingID)
-                                        attributeID:@(MTRClusterOccupancySensingAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeOccupancySensingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterOccupancySensingAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -19041,48 +19152,48 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeMACAddressWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeMACAddressID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeMACAddressID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterWakeOnLanID)
-                                        attributeID:@(MTRClusterWakeOnLanAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeWakeOnLanID)
+                                        attributeID:@(MTRAttributeIDTypeClusterWakeOnLanAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -19260,64 +19371,64 @@ - (void)skipChannelWithParams:(MTRChannelClusterSkipChannelParams *)params
 - (NSDictionary *)readAttributeChannelListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeChannelListID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeChannelListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLineupWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeLineupID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeLineupID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentChannelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeCurrentChannelID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeCurrentChannelID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterChannelID)
-                                        attributeID:@(MTRClusterChannelAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeChannelID)
+                                        attributeID:@(MTRAttributeIDTypeClusterChannelAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -19434,56 +19545,56 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
 - (NSDictionary *)readAttributeTargetListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeTargetListID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeTargetListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentTargetWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeCurrentTargetID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeCurrentTargetID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterTargetNavigatorID)
-                                        attributeID:@(MTRClusterTargetNavigatorAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeTargetNavigatorID)
+                                        attributeID:@(MTRAttributeIDTypeClusterTargetNavigatorAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -20094,96 +20205,96 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
 - (NSDictionary *)readAttributeCurrentStateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeCurrentStateID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeCurrentStateID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStartTimeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeStartTimeID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeStartTimeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDurationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeDurationID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeDurationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSampledPositionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeSampledPositionID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeSampledPositionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePlaybackSpeedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributePlaybackSpeedID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributePlaybackSpeedID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSeekRangeEndWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeSeekRangeEndID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeEndID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSeekRangeStartWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeSeekRangeStartID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeSeekRangeStartID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaPlaybackID)
-                                        attributeID:@(MTRClusterMediaPlaybackAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeMediaPlaybackID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaPlaybackAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -20663,56 +20774,56 @@ - (void)renameInputWithParams:(MTRMediaInputClusterRenameInputParams *)params
 - (NSDictionary *)readAttributeInputListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeInputListID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeInputListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentInputWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeCurrentInputID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeCurrentInputID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterMediaInputID)
-                                        attributeID:@(MTRClusterMediaInputAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeMediaInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterMediaInputAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -20857,40 +20968,40 @@ - (void)sleepWithParams:(MTRLowPowerClusterSleepParams * _Nullable)params
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLowPowerID)
-                                        attributeID:@(MTRClusterLowPowerAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeLowPowerID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLowPowerAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLowPowerID)
-                                        attributeID:@(MTRClusterLowPowerAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeLowPowerID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLowPowerAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLowPowerID)
-                                        attributeID:@(MTRClusterLowPowerAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeLowPowerID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLowPowerAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLowPowerID)
-                                        attributeID:@(MTRClusterLowPowerAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeLowPowerID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLowPowerAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterLowPowerID)
-                                        attributeID:@(MTRClusterLowPowerAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeLowPowerID)
+                                        attributeID:@(MTRAttributeIDTypeClusterLowPowerAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -20988,40 +21099,40 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterKeypadInputID)
-                                        attributeID:@(MTRClusterKeypadInputAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeKeypadInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterKeypadInputAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterKeypadInputID)
-                                        attributeID:@(MTRClusterKeypadInputAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeKeypadInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterKeypadInputAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterKeypadInputID)
-                                        attributeID:@(MTRClusterKeypadInputAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeKeypadInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterKeypadInputAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterKeypadInputID)
-                                        attributeID:@(MTRClusterKeypadInputAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeKeypadInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterKeypadInputAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterKeypadInputID)
-                                        attributeID:@(MTRClusterKeypadInputAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeKeypadInputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterKeypadInputAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -21315,17 +21426,18 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
 - (NSDictionary *)readAttributeAcceptHeaderWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeAcceptHeaderID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeAcceptHeaderID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeSupportedStreamingProtocolsWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeSupportedStreamingProtocolsID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                     attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeSupportedStreamingProtocolsID)
+                                          params:params];
 }
 
 - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSDictionary *)dataValueDictionary
@@ -21342,8 +21454,8 @@ - (void)writeAttributeSupportedStreamingProtocolsWithValue:(NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterContentLauncherID)
-                                        attributeID:@(MTRClusterContentLauncherAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeContentLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterContentLauncherAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -21545,56 +21657,56 @@ - (void)renameOutputWithParams:(MTRAudioOutputClusterRenameOutputParams *)params
 - (NSDictionary *)readAttributeOutputListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeOutputListID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeOutputListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentOutputWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeCurrentOutputID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeCurrentOutputID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAudioOutputID)
-                                        attributeID:@(MTRClusterAudioOutputAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeAudioOutputID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAudioOutputAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -21792,16 +21904,16 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
 - (NSDictionary *)readAttributeCatalogListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeCatalogListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeCatalogListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentAppWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeCurrentAppID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeCurrentAppID)
                                              params:params];
 }
 
@@ -21817,8 +21929,8 @@ - (void)writeAttributeCurrentAppWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterApplicationLauncherID)
-                                  attributeID:@(MTRClusterApplicationLauncherAttributeCurrentAppID)
+                                    clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                  attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeCurrentAppID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -21827,40 +21939,40 @@ - (void)writeAttributeCurrentAppWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationLauncherID)
-                                        attributeID:@(MTRClusterApplicationLauncherAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeApplicationLauncherID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationLauncherAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -21935,104 +22047,104 @@ - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpoi
 - (NSDictionary *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeVendorNameID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeVendorNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeVendorIDID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeVendorIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApplicationNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeApplicationNameID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationNameID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeProductIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeProductIDID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeProductIDID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApplicationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeApplicationID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeStatusWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeStatusID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeStatusID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApplicationVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeApplicationVersionID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeApplicationVersionID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAllowedVendorListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeAllowedVendorListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeAllowedVendorListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterApplicationBasicID)
-                                        attributeID:@(MTRClusterApplicationBasicAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeApplicationBasicID)
+                                        attributeID:@(MTRAttributeIDTypeClusterApplicationBasicAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -22224,40 +22336,40 @@ - (void)logoutWithParams:(MTRAccountLoginClusterLogoutParams * _Nullable)params
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccountLoginID)
-                                        attributeID:@(MTRClusterAccountLoginAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAccountLoginID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccountLoginAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccountLoginID)
-                                        attributeID:@(MTRClusterAccountLoginAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeAccountLoginID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccountLoginAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccountLoginID)
-                                        attributeID:@(MTRClusterAccountLoginAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeAccountLoginID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccountLoginAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccountLoginID)
-                                        attributeID:@(MTRClusterAccountLoginAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeAccountLoginID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccountLoginAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterAccountLoginID)
-                                        attributeID:@(MTRClusterAccountLoginAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeAccountLoginID)
+                                        attributeID:@(MTRAttributeIDTypeClusterAccountLoginAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -22441,473 +22553,492 @@ - (void)getMeasurementProfileCommandWithParams:(MTRElectricalMeasurementClusterG
 - (NSDictionary *)readAttributeMeasurementTypeWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasurementTypeID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasurementTypeID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcVoltageID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcVoltageMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcVoltageMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcVoltageMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcVoltageMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcCurrentID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcCurrentMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcCurrentMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcCurrentMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcCurrentMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcPowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcPowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcPowerMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcPowerMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcPowerMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcPowerMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcVoltageMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcVoltageMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcVoltageDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcVoltageDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcVoltageDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcCurrentMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcCurrentMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcCurrentDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcCurrentDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcCurrentDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcPowerMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcPowerMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeDcPowerDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeDcPowerDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeDcPowerDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcFrequencyWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcFrequencyID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcFrequencyMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcFrequencyMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcFrequencyMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcFrequencyMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeNeutralCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeNeutralCurrentID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeNeutralCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTotalActivePowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeTotalActivePowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalActivePowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTotalReactivePowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeTotalReactivePowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalReactivePowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeTotalApparentPowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeTotalApparentPowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeTotalApparentPowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured1stHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured1stHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured3rdHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured3rdHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured5thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured5thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured7thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured7thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured9thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured9thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasured11thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasured11thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase1stHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase3rdHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase5thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase7thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase9thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeMeasuredPhase11thHarmonicCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAcFrequencyMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcFrequencyMultiplierID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyMultiplierID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcFrequencyDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcFrequencyDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcFrequencyDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePowerMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePowerMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePowerDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePowerDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeHarmonicCurrentMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeHarmonicCurrentMultiplierID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePhaseHarmonicCurrentMultiplierID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeInstantaneousVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeInstantaneousVoltageID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeInstantaneousLineCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeInstantaneousLineCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousLineCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeInstantaneousActiveCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousActiveCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeInstantaneousReactiveCurrentWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousReactiveCurrentID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeInstantaneousPowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeInstantaneousPowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeInstantaneousPowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMinWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMinID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMaxWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMaxID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReactivePowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeReactivePowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApparentPowerWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeApparentPowerID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePowerFactorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePowerFactorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID)
+                             params:params];
 }
 
 - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSDictionary *)dataValueDictionary
@@ -22923,20 +23054,22 @@ - (void)writeAttributeAverageRmsVoltageMeasurementPeriodWithValue:(NSDictionary<
 {
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
-    [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterElectricalMeasurementID)
-                                  attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID)
-                                        value:dataValueDictionary
-                        expectedValueInterval:expectedValueIntervalMs
-                            timedWriteTimeout:timedWriteTimeout];
+    [self.device
+        writeAttributeWithEndpointID:@(_endpoint)
+                           clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                         attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsVoltageMeasurementPeriodID)
+                               value:dataValueDictionary
+               expectedValueInterval:expectedValueIntervalMs
+                   timedWriteTimeout:timedWriteTimeout];
 }
 
 - (NSDictionary *)readAttributeAverageRmsUnderVoltageCounterWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterID)
+                             params:params];
 }
 
 - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSDictionary *)dataValueDictionary
@@ -22952,20 +23085,22 @@ - (void)writeAttributeAverageRmsUnderVoltageCounterWithValue:(NSDictionary *)readAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodID)
+                             params:params];
 }
 
 - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSDictionary *)dataValueDictionary
@@ -22981,20 +23116,22 @@ - (void)writeAttributeRmsExtremeOverVoltagePeriodWithValue:(NSDictionary *)readAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodID)
+                             params:params];
 }
 
 - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSDictionary *)dataValueDictionary
@@ -23010,19 +23147,20 @@ - (void)writeAttributeRmsExtremeUnderVoltagePeriodWithValue:(NSDictionary *)readAttributeRmsVoltageSagPeriodWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID)
                                              params:params];
 }
 
@@ -23038,8 +23176,8 @@ - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterElectricalMeasurementID)
-                                  attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID)
+                                    clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                  attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -23047,10 +23185,11 @@ - (void)writeAttributeRmsVoltageSagPeriodWithValue:(NSDictionary
 
 - (NSDictionary *)readAttributeRmsVoltageSwellPeriodWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodID)
+                                          params:params];
 }
 
 - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSDictionary *)dataValueDictionary
@@ -23067,8 +23206,8 @@ - (void)writeAttributeRmsVoltageSwellPeriodWithValue:(NSDictionary *)readAttributeAcVoltageMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcVoltageMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcVoltageDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcVoltageDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcCurrentMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcCurrentMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcCurrentDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcCurrentDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcPowerMultiplierWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcPowerMultiplierID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerMultiplierID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcPowerDivisorWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcPowerDivisorID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcPowerDivisorID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeOverloadAlarmsMaskWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeOverloadAlarmsMaskID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeOverloadAlarmsMaskID)
                                              params:params];
 }
 
@@ -23142,8 +23281,8 @@ - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterElectricalMeasurementID)
-                                  attributeID:@(MTRClusterElectricalMeasurementAttributeOverloadAlarmsMaskID)
+                                    clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                  attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeOverloadAlarmsMaskID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -23152,24 +23291,24 @@ - (void)writeAttributeOverloadAlarmsMaskWithValue:(NSDictionary
 - (NSDictionary *)readAttributeVoltageOverloadWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeVoltageOverloadID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeVoltageOverloadID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeCurrentOverloadWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeCurrentOverloadID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeCurrentOverloadID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcOverloadAlarmsMaskWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcOverloadAlarmsMaskID)
                                              params:params];
 }
 
@@ -23185,8 +23324,8 @@ - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSDictionary *)readAttributeAcVoltageOverloadWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcVoltageOverloadID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcVoltageOverloadID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcCurrentOverloadWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcCurrentOverloadID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcCurrentOverloadID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcActivePowerOverloadWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcActivePowerOverloadID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcActivePowerOverloadID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAcReactivePowerOverloadWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcReactivePowerOverloadID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcReactivePowerOverloadID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAverageRmsOverVoltageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeAverageRmsUnderVoltageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeOverVoltageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeUnderVoltageWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltageID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSagWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSagID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSwellWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSwellID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeLineCurrentPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeLineCurrentPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveCurrentPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReactiveCurrentPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseBID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltagePhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMinPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMaxPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMinPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMaxPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMinPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMaxPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReactivePowerPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeReactivePowerPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApparentPowerPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeApparentPowerPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseBID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePowerFactorPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePowerFactorPhaseBID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseBID)
                                              params:params];
 }
 
@@ -23396,176 +23542,184 @@ - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSDictionary *)readAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseBID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeLineCurrentPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeLineCurrentPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeLineCurrentPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActiveCurrentPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActiveCurrentPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActiveCurrentPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReactiveCurrentPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                     attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactiveCurrentPhaseCID)
+                                          params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltagePhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltagePhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltagePhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMinPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMinPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageMaxPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageMaxPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMinPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMinPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeRmsCurrentMaxPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsCurrentMaxPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMinPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMinPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMinPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeActivePowerMaxPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeActivePowerMaxPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeReactivePowerPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeReactivePowerPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeReactivePowerPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeApparentPowerPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeApparentPowerPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeApparentPowerPhaseCID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributePowerFactorPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributePowerFactorPhaseCID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributePowerFactorPhaseCID)
                                              params:params];
 }
 
@@ -23573,96 +23727,103 @@ - (void)writeAttributeAcOverloadAlarmsMaskWithValue:(NSDictionary *)readAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsOverVoltageCounterPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAverageRmsUnderVoltageCounterPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeOverVoltagePeriodPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsExtremeUnderVoltagePeriodPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSagPeriodPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID)
-                                             params:params];
+    return [self.device
+        readAttributeWithEndpointID:@(_endpoint)
+                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeRmsVoltageSwellPeriodPhaseCID)
+                             params:params];
 }
 
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterElectricalMeasurementID)
-                                        attributeID:@(MTRClusterElectricalMeasurementAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeElectricalMeasurementID)
+                                        attributeID:@(MTRAttributeIDTypeClusterElectricalMeasurementAttributeClusterRevisionID)
                                              params:params];
 }
 
@@ -25536,8 +25697,8 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
 - (NSDictionary *)readAttributeBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeBooleanID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBooleanID)
                                              params:params];
 }
 
@@ -25553,8 +25714,8 @@ - (void)writeAttributeBooleanWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeBooleanID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25563,8 +25724,8 @@ - (void)writeAttributeBooleanWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeBitmap8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap8ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap8ID)
                                              params:params];
 }
 
@@ -25580,8 +25741,8 @@ - (void)writeAttributeBitmap8WithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap8ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25590,8 +25751,8 @@ - (void)writeAttributeBitmap8WithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeBitmap16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap16ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap16ID)
                                              params:params];
 }
 
@@ -25607,8 +25768,8 @@ - (void)writeAttributeBitmap16WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap16ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25617,8 +25778,8 @@ - (void)writeAttributeBitmap16WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeBitmap32WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap32ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap32ID)
                                              params:params];
 }
 
@@ -25634,8 +25795,8 @@ - (void)writeAttributeBitmap32WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap32ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap32ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25644,8 +25805,8 @@ - (void)writeAttributeBitmap32WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeBitmap64WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeBitmap64ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap64ID)
                                              params:params];
 }
 
@@ -25661,8 +25822,8 @@ - (void)writeAttributeBitmap64WithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeBitmap64ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeBitmap64ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25671,8 +25832,8 @@ - (void)writeAttributeBitmap64WithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt8uID)
                                              params:params];
 }
 
@@ -25688,8 +25849,8 @@ - (void)writeAttributeInt8uWithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt8uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25698,8 +25859,8 @@ - (void)writeAttributeInt8uWithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt16uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt16uID)
                                              params:params];
 }
 
@@ -25715,8 +25876,8 @@ - (void)writeAttributeInt16uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt16uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt16uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25725,8 +25886,8 @@ - (void)writeAttributeInt16uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt24uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt24uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt24uID)
                                              params:params];
 }
 
@@ -25742,8 +25903,8 @@ - (void)writeAttributeInt24uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt24uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt24uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25752,8 +25913,8 @@ - (void)writeAttributeInt24uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt32uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt32uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt32uID)
                                              params:params];
 }
 
@@ -25769,8 +25930,8 @@ - (void)writeAttributeInt32uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt32uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt32uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25779,8 +25940,8 @@ - (void)writeAttributeInt32uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt40uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt40uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt40uID)
                                              params:params];
 }
 
@@ -25796,8 +25957,8 @@ - (void)writeAttributeInt40uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt40uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt40uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25806,8 +25967,8 @@ - (void)writeAttributeInt40uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt48uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt48uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt48uID)
                                              params:params];
 }
 
@@ -25823,8 +25984,8 @@ - (void)writeAttributeInt48uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt48uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt48uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25833,8 +25994,8 @@ - (void)writeAttributeInt48uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt56uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt56uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt56uID)
                                              params:params];
 }
 
@@ -25850,8 +26011,8 @@ - (void)writeAttributeInt56uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt56uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt56uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25860,8 +26021,8 @@ - (void)writeAttributeInt56uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt64uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt64uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt64uID)
                                              params:params];
 }
 
@@ -25877,8 +26038,8 @@ - (void)writeAttributeInt64uWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt64uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt64uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25887,8 +26048,8 @@ - (void)writeAttributeInt64uWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt8sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt8sID)
                                              params:params];
 }
 
@@ -25904,8 +26065,8 @@ - (void)writeAttributeInt8sWithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt8sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt8sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25914,8 +26075,8 @@ - (void)writeAttributeInt8sWithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt16sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt16sID)
                                              params:params];
 }
 
@@ -25931,8 +26092,8 @@ - (void)writeAttributeInt16sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt16sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt16sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25941,8 +26102,8 @@ - (void)writeAttributeInt16sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt24sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt24sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt24sID)
                                              params:params];
 }
 
@@ -25958,8 +26119,8 @@ - (void)writeAttributeInt24sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt24sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt24sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25968,8 +26129,8 @@ - (void)writeAttributeInt24sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt32sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt32sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt32sID)
                                              params:params];
 }
 
@@ -25985,8 +26146,8 @@ - (void)writeAttributeInt32sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt32sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt32sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -25995,8 +26156,8 @@ - (void)writeAttributeInt32sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt40sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt40sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt40sID)
                                              params:params];
 }
 
@@ -26012,8 +26173,8 @@ - (void)writeAttributeInt40sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt40sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt40sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26022,8 +26183,8 @@ - (void)writeAttributeInt40sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt48sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt48sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt48sID)
                                              params:params];
 }
 
@@ -26039,8 +26200,8 @@ - (void)writeAttributeInt48sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt48sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt48sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26049,8 +26210,8 @@ - (void)writeAttributeInt48sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt56sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt56sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt56sID)
                                              params:params];
 }
 
@@ -26066,8 +26227,8 @@ - (void)writeAttributeInt56sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt56sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt56sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26076,8 +26237,8 @@ - (void)writeAttributeInt56sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeInt64sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeInt64sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt64sID)
                                              params:params];
 }
 
@@ -26093,8 +26254,8 @@ - (void)writeAttributeInt64sWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeInt64sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeInt64sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26103,8 +26264,8 @@ - (void)writeAttributeInt64sWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeEnum8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeEnum8ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnum8ID)
                                              params:params];
 }
 
@@ -26120,8 +26281,8 @@ - (void)writeAttributeEnum8WithValue:(NSDictionary *)dataValueDi
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeEnum8ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnum8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26130,8 +26291,8 @@ - (void)writeAttributeEnum8WithValue:(NSDictionary *)dataValueDi
 - (NSDictionary *)readAttributeEnum16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeEnum16ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnum16ID)
                                              params:params];
 }
 
@@ -26147,8 +26308,8 @@ - (void)writeAttributeEnum16WithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeEnum16ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnum16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26157,8 +26318,8 @@ - (void)writeAttributeEnum16WithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeFloatSingleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeFloatSingleID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeFloatSingleID)
                                              params:params];
 }
 
@@ -26174,8 +26335,8 @@ - (void)writeAttributeFloatSingleWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeFloatSingleID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeFloatSingleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26184,8 +26345,8 @@ - (void)writeAttributeFloatSingleWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeFloatDoubleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeFloatDoubleID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeFloatDoubleID)
                                              params:params];
 }
 
@@ -26201,8 +26362,8 @@ - (void)writeAttributeFloatDoubleWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeFloatDoubleID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeFloatDoubleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26211,8 +26372,8 @@ - (void)writeAttributeFloatDoubleWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeOctetStringID)
                                              params:params];
 }
 
@@ -26228,8 +26389,8 @@ - (void)writeAttributeOctetStringWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeOctetStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26238,8 +26399,8 @@ - (void)writeAttributeOctetStringWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeListInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListInt8uID)
                                              params:params];
 }
 
@@ -26255,8 +26416,8 @@ - (void)writeAttributeListInt8uWithValue:(NSDictionary *)dataVal
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeListInt8uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26265,8 +26426,8 @@ - (void)writeAttributeListInt8uWithValue:(NSDictionary *)dataVal
 - (NSDictionary *)readAttributeListOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListOctetStringID)
                                              params:params];
 }
 
@@ -26282,8 +26443,8 @@ - (void)writeAttributeListOctetStringWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeListOctetStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26292,8 +26453,8 @@ - (void)writeAttributeListOctetStringWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeListStructOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListStructOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListStructOctetStringID)
                                              params:params];
 }
 
@@ -26311,8 +26472,8 @@ - (void)writeAttributeListStructOctetStringWithValue:(NSDictionary *)readAttributeLongOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeLongOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeLongOctetStringID)
                                              params:params];
 }
 
@@ -26338,8 +26499,8 @@ - (void)writeAttributeLongOctetStringWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeLongOctetStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeLongOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26348,8 +26509,8 @@ - (void)writeAttributeLongOctetStringWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeCharStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeCharStringID)
                                              params:params];
 }
 
@@ -26365,8 +26526,8 @@ - (void)writeAttributeCharStringWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeCharStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26375,8 +26536,8 @@ - (void)writeAttributeCharStringWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeLongCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeLongCharStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeLongCharStringID)
                                              params:params];
 }
 
@@ -26392,8 +26553,8 @@ - (void)writeAttributeLongCharStringWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeLongCharStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeLongCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26402,8 +26563,8 @@ - (void)writeAttributeLongCharStringWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeEpochUsWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeEpochUsID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEpochUsID)
                                              params:params];
 }
 
@@ -26419,8 +26580,8 @@ - (void)writeAttributeEpochUsWithValue:(NSDictionary *)dataValue
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeEpochUsID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEpochUsID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26429,8 +26590,8 @@ - (void)writeAttributeEpochUsWithValue:(NSDictionary *)dataValue
 - (NSDictionary *)readAttributeEpochSWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeEpochSID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEpochSID)
                                              params:params];
 }
 
@@ -26446,8 +26607,8 @@ - (void)writeAttributeEpochSWithValue:(NSDictionary *)dataValueD
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeEpochSID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEpochSID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26456,8 +26617,8 @@ - (void)writeAttributeEpochSWithValue:(NSDictionary *)dataValueD
 - (NSDictionary *)readAttributeVendorIdWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeVendorIdID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeVendorIdID)
                                              params:params];
 }
 
@@ -26473,8 +26634,8 @@ - (void)writeAttributeVendorIdWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeVendorIdID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeVendorIdID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26482,10 +26643,11 @@ - (void)writeAttributeVendorIdWithValue:(NSDictionary *)dataValu
 
 - (NSDictionary *)readAttributeListNullablesAndOptionalsStructWithParams:(MTRReadParams * _Nullable)params
 {
-    return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListNullablesAndOptionalsStructID)
-                                             params:params];
+    return
+        [self.device readAttributeWithEndpointID:@(_endpoint)
+                                       clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                     attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListNullablesAndOptionalsStructID)
+                                          params:params];
 }
 
 - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSDictionary *)dataValueDictionary
@@ -26502,8 +26664,8 @@ - (void)writeAttributeListNullablesAndOptionalsStructWithValue:(NSDictionary *)readAttributeEnumAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeEnumAttrID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnumAttrID)
                                              params:params];
 }
 
@@ -26529,8 +26691,8 @@ - (void)writeAttributeEnumAttrWithValue:(NSDictionary *)dataValu
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeEnumAttrID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeEnumAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26539,8 +26701,8 @@ - (void)writeAttributeEnumAttrWithValue:(NSDictionary *)dataValu
 - (NSDictionary *)readAttributeStructAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeStructAttrID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeStructAttrID)
                                              params:params];
 }
 
@@ -26556,8 +26718,8 @@ - (void)writeAttributeStructAttrWithValue:(NSDictionary *)dataVa
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeStructAttrID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeStructAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26566,8 +26728,8 @@ - (void)writeAttributeStructAttrWithValue:(NSDictionary *)dataVa
 - (NSDictionary *)readAttributeRangeRestrictedInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8uID)
                                              params:params];
 }
 
@@ -26583,8 +26745,8 @@ - (void)writeAttributeRangeRestrictedInt8uWithValue:(NSDictionary *)readAttributeRangeRestrictedInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt8sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt8sID)
                                              params:params];
 }
 
@@ -26610,8 +26772,8 @@ - (void)writeAttributeRangeRestrictedInt8sWithValue:(NSDictionary *)readAttributeRangeRestrictedInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt16uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16uID)
                                              params:params];
 }
 
@@ -26639,8 +26801,8 @@ - (void)writeAttributeRangeRestrictedInt16uWithValue:(NSDictionary *)readAttributeRangeRestrictedInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeRangeRestrictedInt16sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeRangeRestrictedInt16sID)
                                              params:params];
 }
 
@@ -26668,8 +26830,8 @@ - (void)writeAttributeRangeRestrictedInt16sWithValue:(NSDictionary *)readAttributeListLongOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListLongOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListLongOctetStringID)
                                              params:params];
 }
 
@@ -26695,8 +26857,8 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeListLongOctetStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListLongOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26705,8 +26867,8 @@ - (void)writeAttributeListLongOctetStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeListFabricScopedID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListFabricScopedID)
                                              params:params];
 }
 
@@ -26722,8 +26884,8 @@ - (void)writeAttributeListFabricScopedWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeListFabricScopedID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeListFabricScopedID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26732,8 +26894,8 @@ - (void)writeAttributeListFabricScopedWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeTimedWriteBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeTimedWriteBooleanID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeTimedWriteBooleanID)
                                              params:params];
 }
 
@@ -26749,8 +26911,8 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSDictionary *
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeTimedWriteBooleanID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeTimedWriteBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26759,8 +26921,8 @@ - (void)writeAttributeTimedWriteBooleanWithValue:(NSDictionary *
 - (NSDictionary *)readAttributeGeneralErrorBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeGeneralErrorBooleanID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeGeneralErrorBooleanID)
                                              params:params];
 }
 
@@ -26776,8 +26938,8 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeGeneralErrorBooleanID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeGeneralErrorBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26786,8 +26948,8 @@ - (void)writeAttributeGeneralErrorBooleanWithValue:(NSDictionary
 - (NSDictionary *)readAttributeClusterErrorBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeClusterErrorBooleanID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeClusterErrorBooleanID)
                                              params:params];
 }
 
@@ -26803,8 +26965,8 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeClusterErrorBooleanID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeClusterErrorBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26813,8 +26975,8 @@ - (void)writeAttributeClusterErrorBooleanWithValue:(NSDictionary
 - (NSDictionary *)readAttributeUnsupportedWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeUnsupportedID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeUnsupportedID)
                                              params:params];
 }
 
@@ -26830,8 +26992,8 @@ - (void)writeAttributeUnsupportedWithValue:(NSDictionary *)dataV
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeUnsupportedID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeUnsupportedID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26840,8 +27002,8 @@ - (void)writeAttributeUnsupportedWithValue:(NSDictionary *)dataV
 - (NSDictionary *)readAttributeNullableBooleanWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBooleanID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBooleanID)
                                              params:params];
 }
 
@@ -26857,8 +27019,8 @@ - (void)writeAttributeNullableBooleanWithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBooleanID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBooleanID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26867,8 +27029,8 @@ - (void)writeAttributeNullableBooleanWithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeNullableBitmap8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap8ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap8ID)
                                              params:params];
 }
 
@@ -26884,8 +27046,8 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSDictionary *)d
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap8ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26894,8 +27056,8 @@ - (void)writeAttributeNullableBitmap8WithValue:(NSDictionary *)d
 - (NSDictionary *)readAttributeNullableBitmap16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap16ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap16ID)
                                              params:params];
 }
 
@@ -26911,8 +27073,8 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap16ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26921,8 +27083,8 @@ - (void)writeAttributeNullableBitmap16WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableBitmap32WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap32ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap32ID)
                                              params:params];
 }
 
@@ -26938,8 +27100,8 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap32ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap32ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26948,8 +27110,8 @@ - (void)writeAttributeNullableBitmap32WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableBitmap64WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap64ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap64ID)
                                              params:params];
 }
 
@@ -26965,8 +27127,8 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableBitmap64ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableBitmap64ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -26975,8 +27137,8 @@ - (void)writeAttributeNullableBitmap64WithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8uID)
                                              params:params];
 }
 
@@ -26992,8 +27154,8 @@ - (void)writeAttributeNullableInt8uWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt8uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27002,8 +27164,8 @@ - (void)writeAttributeNullableInt8uWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt16uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16uID)
                                              params:params];
 }
 
@@ -27019,8 +27181,8 @@ - (void)writeAttributeNullableInt16uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt16uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27029,8 +27191,8 @@ - (void)writeAttributeNullableInt16uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt24uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt24uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24uID)
                                              params:params];
 }
 
@@ -27046,8 +27208,8 @@ - (void)writeAttributeNullableInt24uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt24uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27056,8 +27218,8 @@ - (void)writeAttributeNullableInt24uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt32uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt32uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32uID)
                                              params:params];
 }
 
@@ -27073,8 +27235,8 @@ - (void)writeAttributeNullableInt32uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt32uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27083,8 +27245,8 @@ - (void)writeAttributeNullableInt32uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt40uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt40uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40uID)
                                              params:params];
 }
 
@@ -27100,8 +27262,8 @@ - (void)writeAttributeNullableInt40uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt40uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27110,8 +27272,8 @@ - (void)writeAttributeNullableInt40uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt48uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt48uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48uID)
                                              params:params];
 }
 
@@ -27127,8 +27289,8 @@ - (void)writeAttributeNullableInt48uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt48uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27137,8 +27299,8 @@ - (void)writeAttributeNullableInt48uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt56uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt56uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56uID)
                                              params:params];
 }
 
@@ -27154,8 +27316,8 @@ - (void)writeAttributeNullableInt56uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt56uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27164,8 +27326,8 @@ - (void)writeAttributeNullableInt56uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt64uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt64uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64uID)
                                              params:params];
 }
 
@@ -27181,8 +27343,8 @@ - (void)writeAttributeNullableInt64uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt64uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27191,8 +27353,8 @@ - (void)writeAttributeNullableInt64uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt8sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8sID)
                                              params:params];
 }
 
@@ -27208,8 +27370,8 @@ - (void)writeAttributeNullableInt8sWithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt8sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt8sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27218,8 +27380,8 @@ - (void)writeAttributeNullableInt8sWithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt16sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16sID)
                                              params:params];
 }
 
@@ -27235,8 +27397,8 @@ - (void)writeAttributeNullableInt16sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt16sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt16sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27245,8 +27407,8 @@ - (void)writeAttributeNullableInt16sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt24sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt24sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24sID)
                                              params:params];
 }
 
@@ -27262,8 +27424,8 @@ - (void)writeAttributeNullableInt24sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt24sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt24sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27272,8 +27434,8 @@ - (void)writeAttributeNullableInt24sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt32sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt32sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32sID)
                                              params:params];
 }
 
@@ -27289,8 +27451,8 @@ - (void)writeAttributeNullableInt32sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt32sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt32sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27299,8 +27461,8 @@ - (void)writeAttributeNullableInt32sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt40sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt40sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40sID)
                                              params:params];
 }
 
@@ -27316,8 +27478,8 @@ - (void)writeAttributeNullableInt40sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt40sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt40sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27326,8 +27488,8 @@ - (void)writeAttributeNullableInt40sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt48sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt48sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48sID)
                                              params:params];
 }
 
@@ -27343,8 +27505,8 @@ - (void)writeAttributeNullableInt48sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt48sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt48sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27353,8 +27515,8 @@ - (void)writeAttributeNullableInt48sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt56sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt56sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56sID)
                                              params:params];
 }
 
@@ -27370,8 +27532,8 @@ - (void)writeAttributeNullableInt56sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt56sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt56sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27380,8 +27542,8 @@ - (void)writeAttributeNullableInt56sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableInt64sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableInt64sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64sID)
                                              params:params];
 }
 
@@ -27397,8 +27559,8 @@ - (void)writeAttributeNullableInt64sWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableInt64sID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableInt64sID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27407,8 +27569,8 @@ - (void)writeAttributeNullableInt64sWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableEnum8WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnum8ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum8ID)
                                              params:params];
 }
 
@@ -27424,8 +27586,8 @@ - (void)writeAttributeNullableEnum8WithValue:(NSDictionary *)dat
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnum8ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum8ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27434,8 +27596,8 @@ - (void)writeAttributeNullableEnum8WithValue:(NSDictionary *)dat
 - (NSDictionary *)readAttributeNullableEnum16WithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnum16ID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum16ID)
                                              params:params];
 }
 
@@ -27451,8 +27613,8 @@ - (void)writeAttributeNullableEnum16WithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnum16ID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnum16ID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27461,8 +27623,8 @@ - (void)writeAttributeNullableEnum16WithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableFloatSingleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableFloatSingleID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatSingleID)
                                              params:params];
 }
 
@@ -27478,8 +27640,8 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableFloatSingleID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatSingleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27488,8 +27650,8 @@ - (void)writeAttributeNullableFloatSingleWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableFloatDoubleWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableFloatDoubleID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatDoubleID)
                                              params:params];
 }
 
@@ -27505,8 +27667,8 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableFloatDoubleID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableFloatDoubleID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27515,8 +27677,8 @@ - (void)writeAttributeNullableFloatDoubleWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableOctetStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableOctetStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableOctetStringID)
                                              params:params];
 }
 
@@ -27532,8 +27694,8 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableOctetStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableOctetStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27542,8 +27704,8 @@ - (void)writeAttributeNullableOctetStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableCharStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableCharStringID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableCharStringID)
                                              params:params];
 }
 
@@ -27559,8 +27721,8 @@ - (void)writeAttributeNullableCharStringWithValue:(NSDictionary
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableCharStringID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableCharStringID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27569,8 +27731,8 @@ - (void)writeAttributeNullableCharStringWithValue:(NSDictionary
 - (NSDictionary *)readAttributeNullableEnumAttrWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableEnumAttrID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnumAttrID)
                                              params:params];
 }
 
@@ -27586,8 +27748,8 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSDictionary *)
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableEnumAttrID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableEnumAttrID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27596,8 +27758,8 @@ - (void)writeAttributeNullableEnumAttrWithValue:(NSDictionary *)
 - (NSDictionary *)readAttributeNullableStructWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableStructID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableStructID)
                                              params:params];
 }
 
@@ -27613,8 +27775,8 @@ - (void)writeAttributeNullableStructWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeNullableStructID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableStructID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27623,8 +27785,8 @@ - (void)writeAttributeNullableStructWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeNullableRangeRestrictedInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8uID)
                                              params:params];
 }
 
@@ -27642,8 +27804,8 @@ - (void)writeAttributeNullableRangeRestrictedInt8uWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt8sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt8sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt8sID)
                                              params:params];
 }
 
@@ -27671,8 +27833,8 @@ - (void)writeAttributeNullableRangeRestrictedInt8sWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt16uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16uID)
                                              params:params];
 }
 
@@ -27700,8 +27862,8 @@ - (void)writeAttributeNullableRangeRestrictedInt16uWithValue:(NSDictionary *)readAttributeNullableRangeRestrictedInt16sWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeNullableRangeRestrictedInt16sID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeNullableRangeRestrictedInt16sID)
                                              params:params];
 }
 
@@ -27729,8 +27891,8 @@ - (void)writeAttributeNullableRangeRestrictedInt16sWithValue:(NSDictionary *)readAttributeWriteOnlyInt8uWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeWriteOnlyInt8uID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeWriteOnlyInt8uID)
                                              params:params];
 }
 
@@ -27756,8 +27918,8 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)da
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterUnitTestingID)
-                                  attributeID:@(MTRClusterUnitTestingAttributeWriteOnlyInt8uID)
+                                    clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                  attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeWriteOnlyInt8uID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -27766,40 +27928,40 @@ - (void)writeAttributeWriteOnlyInt8uWithValue:(NSDictionary *)da
 - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterUnitTestingID)
-                                        attributeID:@(MTRClusterUnitTestingAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeUnitTestingID)
+                                        attributeID:@(MTRAttributeIDTypeClusterUnitTestingAttributeClusterRevisionID)
                                              params:params];
 }
 

From a45cf797a9fa33f665086eecc8b0b53930bd1e51 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 17 Nov 2022 14:41:21 +0000
Subject: [PATCH 20/36] Bump third_party/openthread/repo from `ba826ff` to
 `4a7c447` (#23652)

Bumps [third_party/openthread/repo](https://github.com/openthread/openthread) from `ba826ff` to `4a7c447`.
- [Release notes](https://github.com/openthread/openthread/releases)
- [Commits](https://github.com/openthread/openthread/compare/ba826ffb2ac7e2d366ebd553b92a912434ff603d...4a7c447f6c381ee6f695371c8b20dcc2be895211)

---
updated-dependencies:
- dependency-name: third_party/openthread/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] 

Signed-off-by: dependabot[bot] 
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
 third_party/openthread/repo | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/openthread/repo b/third_party/openthread/repo
index ba826ffb2ac7e2..4a7c447f6c381e 160000
--- a/third_party/openthread/repo
+++ b/third_party/openthread/repo
@@ -1 +1 @@
-Subproject commit ba826ffb2ac7e2d366ebd553b92a912434ff603d
+Subproject commit 4a7c447f6c381ee6f695371c8b20dcc2be895211

From 3edba4a334e12672098fa8f37e3558f8d3731dc5 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Thu, 17 Nov 2022 09:59:53 -0500
Subject: [PATCH 21/36] Fix API review comments for MTRAttributeCacheContainer.
 (#23639)

This is a re-landing of PR #22636 but with changes made for backwards compat.

* Fix function naming to indicate we may be reading a multiple
  attributes, not just an attribute.
* Fix documentation.
* Rename to MTRClusterStateCacheContainer.
---
 .../commands/clusters/ReportCommandBridge.h   |     2 +-
 src/darwin/Framework/CHIP/MTRBaseDevice.h     |    22 +-
 src/darwin/Framework/CHIP/MTRBaseDevice.mm    |    58 +-
 .../CHIP/MTRBaseSubscriptionCallback.h        |     6 +-
 ....h => MTRClusterStateCacheContainer+XPC.h} |     4 +-
 ...iner.h => MTRClusterStateCacheContainer.h} |    40 +-
 ...er.mm => MTRClusterStateCacheContainer.mm} |    62 +-
 ... MTRClusterStateCacheContainer_Internal.h} |    10 +-
 src/darwin/Framework/CHIP/MTRDevice.mm        |     2 +-
 src/darwin/Framework/CHIP/MTRDeviceOverXPC.m  |    22 +-
 src/darwin/Framework/CHIP/Matter.h            |     2 +-
 .../CHIP/templates/MTRBaseClusters-src.zapt   |    10 +-
 .../CHIP/templates/MTRBaseClusters.zapt       |     4 +-
 .../CHIP/templates/MTRClusters-src.zapt       |     1 -
 .../Framework/CHIP/templates/MTRClusters.zapt |     2 -
 .../CHIP/zap-generated/MTRBaseClusters.h      | 10007 +++---
 .../CHIP/zap-generated/MTRBaseClusters.mm     | 29475 ++++++++--------
 .../CHIP/zap-generated/MTRClusters.h          |     2 -
 .../CHIP/zap-generated/MTRClusters.mm         |     1 -
 .../Framework/CHIPTests/MTRDeviceTests.m      |   214 +-
 .../CHIPTests/MTRXPCListenerSampleTests.m     |    97 +-
 .../Framework/CHIPTests/MTRXPCProtocolTests.m |   214 +-
 .../Matter.xcodeproj/project.pbxproj          |    32 +-
 23 files changed, 20316 insertions(+), 19973 deletions(-)
 rename src/darwin/Framework/CHIP/{MTRAttributeCacheContainer+XPC.h => MTRClusterStateCacheContainer+XPC.h} (91%)
 rename src/darwin/Framework/CHIP/{MTRAttributeCacheContainer.h => MTRClusterStateCacheContainer.h} (52%)
 rename src/darwin/Framework/CHIP/{MTRAttributeCacheContainer.mm => MTRClusterStateCacheContainer.mm} (78%)
 rename src/darwin/Framework/CHIP/{MTRAttributeCacheContainer_Internal.h => MTRClusterStateCacheContainer_Internal.h} (85%)

diff --git a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
index c912ec2898181a..9b88ce50514724 100644
--- a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h
@@ -208,7 +208,7 @@ class SubscribeEvent : public ModelCommand {
 
         [device subscribeWithQueue:callbackQueue
             params:params
-            attributeCacheContainer:nil
+            clusterStateCacheContainer:nil
             attributeReportHandler:^(NSArray * value) {
                 SetCommandExitStatus(CHIP_NO_ERROR);
             }
diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.h b/src/darwin/Framework/CHIP/MTRBaseDevice.h
index 86da7b8be5e70e..f09b2564318041 100644
--- a/src/darwin/Framework/CHIP/MTRBaseDevice.h
+++ b/src/darwin/Framework/CHIP/MTRBaseDevice.h
@@ -117,6 +117,7 @@ extern NSString * const MTRNullValueType;
 extern NSString * const MTRStructureValueType;
 extern NSString * const MTRArrayValueType;
 
+@class MTRClusterStateCacheContainer;
 @class MTRAttributeCacheContainer;
 @class MTRReadParams;
 @class MTRSubscribeParams;
@@ -174,13 +175,13 @@ extern NSString * const MTRArrayValueType;
  * attempts fail.
  */
 - (void)subscribeWithQueue:(dispatch_queue_t)queue
-                     params:(MTRSubscribeParams *)params
-    attributeCacheContainer:(MTRAttributeCacheContainer * _Nullable)attributeCacheContainer
-     attributeReportHandler:(MTRDeviceReportHandler _Nullable)attributeReportHandler
-         eventReportHandler:(MTRDeviceReportHandler _Nullable)eventReportHandler
-               errorHandler:(MTRDeviceErrorHandler)errorHandler
-    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-    resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduled MTR_NEWLY_AVAILABLE;
+                        params:(MTRSubscribeParams *)params
+    clusterStateCacheContainer:(MTRClusterStateCacheContainer * _Nullable)clusterStateCacheContainer
+        attributeReportHandler:(MTRDeviceReportHandler _Nullable)attributeReportHandler
+            eventReportHandler:(MTRDeviceReportHandler _Nullable)eventReportHandler
+                  errorHandler:(MTRDeviceErrorHandler)errorHandler
+       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+       resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduled MTR_NEWLY_AVAILABLE;
 
 /**
  * Reads attributes from the device.
@@ -403,9 +404,10 @@ MTR_NEWLY_AVAILABLE
                errorHandler:(MTRDeviceErrorHandler)errorHandler
     subscriptionEstablished:(dispatch_block_t _Nullable)subscriptionEstablishedHandler
     resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduledHandler
-    MTR_NEWLY_DEPRECATED("Please use "
-                         "subscribeWithQueue:params:attributeCacheContainer:attributeReportHandler:eventReportHandler:errorHandler:"
-                         "subscriptionEstablished:resubscriptionScheduled:");
+    MTR_NEWLY_DEPRECATED(
+        "Please use "
+        "subscribeWithQueue:params:clusterStateCacheContainer:attributeReportHandler:eventReportHandler:errorHandler:"
+        "subscriptionEstablished:resubscriptionScheduled:");
 
 - (void)readAttributeWithEndpointId:(NSNumber * _Nullable)endpointId
                           clusterId:(NSNumber * _Nullable)clusterId
diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.mm b/src/darwin/Framework/CHIP/MTRBaseDevice.mm
index 366e396c5ffede..a2996d7bcbc603 100644
--- a/src/darwin/Framework/CHIP/MTRBaseDevice.mm
+++ b/src/darwin/Framework/CHIP/MTRBaseDevice.mm
@@ -15,12 +15,12 @@
  *    limitations under the License.
  */
 
-#import "MTRAttributeCacheContainer_Internal.h"
 #import "MTRAttributeTLVValueDecoder_Internal.h"
 #import "MTRBaseDevice_Internal.h"
 #import "MTRBaseSubscriptionCallback.h"
 #import "MTRCallbackBridgeBase_internal.h"
 #import "MTRCluster.h"
+#import "MTRClusterStateCacheContainer_Internal.h"
 #import "MTRCluster_internal.h"
 #import "MTRError_Internal.h"
 #import "MTREventTLVValueDecoder_Internal.h"
@@ -268,13 +268,13 @@ - (void)invalidateCASESession
 } // anonymous namespace
 
 - (void)subscribeWithQueue:(dispatch_queue_t)queue
-                     params:(MTRSubscribeParams *)params
-    attributeCacheContainer:(MTRAttributeCacheContainer * _Nullable)attributeCacheContainer
-     attributeReportHandler:(MTRDeviceReportHandler _Nullable)attributeReportHandler
-         eventReportHandler:(MTRDeviceReportHandler _Nullable)eventReportHandler
-               errorHandler:(void (^)(NSError * error))errorHandler
-    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-    resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduled
+                        params:(MTRSubscribeParams *)params
+    clusterStateCacheContainer:(MTRClusterStateCacheContainer * _Nullable)clusterStateCacheContainer
+        attributeReportHandler:(MTRDeviceReportHandler _Nullable)attributeReportHandler
+            eventReportHandler:(MTRDeviceReportHandler _Nullable)eventReportHandler
+                  errorHandler:(void (^)(NSError * error))errorHandler
+       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+       resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduled
 {
     if (self.isPASEDevice) {
         // We don't support subscriptions over PASE.
@@ -309,18 +309,18 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
                                       readParams.mpEventPathParamsList = eventPath.get();
                                       readParams.mEventPathParamsListSize = 1;
 
-                                      std::unique_ptr attributeCache;
+                                      std::unique_ptr clusterStateCache;
                                       ReadClient::Callback * callbackForReadClient = nullptr;
                                       OnDoneHandler onDoneHandler = nil;
 
-                                      if (attributeCacheContainer) {
-                                          __weak MTRAttributeCacheContainer * weakPtr = attributeCacheContainer;
+                                      if (clusterStateCacheContainer) {
+                                          __weak MTRClusterStateCacheContainer * weakPtr = clusterStateCacheContainer;
                                           onDoneHandler = ^{
                                               // This, like all manipulation of cppClusterStateCache, needs to run on the Matter
                                               // queue.
-                                              MTRAttributeCacheContainer * container = weakPtr;
+                                              MTRClusterStateCacheContainer * container = weakPtr;
                                               if (container) {
-                                                  container.cppAttributeCache = nullptr;
+                                                  container.cppClusterStateCache = nullptr;
                                               }
                                           };
                                       }
@@ -361,9 +361,9 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
                                           },
                                           onDoneHandler);
 
-                                      if (attributeCacheContainer) {
-                                          attributeCache = std::make_unique(*callback.get());
-                                          callbackForReadClient = &attributeCache->GetBufferedCallback();
+                                      if (clusterStateCacheContainer) {
+                                          clusterStateCache = std::make_unique(*callback.get());
+                                          callbackForReadClient = &clusterStateCache->GetBufferedCallback();
                                       } else {
                                           callbackForReadClient = &callback->GetBufferedCallback();
                                       }
@@ -389,14 +389,12 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
                                           return;
                                       }
 
-                                      if (attributeCacheContainer) {
-                                          attributeCacheContainer.cppAttributeCache = attributeCache.get();
-                                          // ClusterStateCache will be deleted when OnDone is called or an error is encountered as
-                                          // well.
-                                          callback->AdoptAttributeCache(std::move(attributeCache));
+                                      if (clusterStateCacheContainer) {
+                                          clusterStateCacheContainer.cppClusterStateCache = clusterStateCache.get();
+                                          // ClusterStateCache will be deleted when OnDone is called.
+                                          callback->AdoptClusterStateCache(std::move(clusterStateCache));
                                       }
-                                      // Callback and ReadClient will be deleted when OnDone is called or an error is
-                                      // encountered.
+                                      // Callback and ReadClient will be deleted when OnDone is called.
                                       callback->AdoptReadClient(std::move(readClient));
                                       callback.release();
                                   }];
@@ -1458,13 +1456,13 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
         subscribeParams.maxInterval = @(maxInterval);
     }
     [self subscribeWithQueue:queue
-                         params:subscribeParams
-        attributeCacheContainer:attributeCacheContainer
-         attributeReportHandler:attributeReportHandler
-             eventReportHandler:eventReportHandler
-                   errorHandler:errorHandler
-        subscriptionEstablished:subscriptionEstablishedHandler
-        resubscriptionScheduled:resubscriptionScheduledHandler];
+                            params:subscribeParams
+        clusterStateCacheContainer:attributeCacheContainer.realContainer
+            attributeReportHandler:attributeReportHandler
+                eventReportHandler:eventReportHandler
+                      errorHandler:errorHandler
+           subscriptionEstablished:subscriptionEstablishedHandler
+           resubscriptionScheduled:resubscriptionScheduledHandler];
 }
 
 - (void)readAttributeWithEndpointId:(NSNumber * _Nullable)endpointId
diff --git a/src/darwin/Framework/CHIP/MTRBaseSubscriptionCallback.h b/src/darwin/Framework/CHIP/MTRBaseSubscriptionCallback.h
index 143759ad02268e..69db80607ae15a 100644
--- a/src/darwin/Framework/CHIP/MTRBaseSubscriptionCallback.h
+++ b/src/darwin/Framework/CHIP/MTRBaseSubscriptionCallback.h
@@ -82,9 +82,9 @@ class MTRBaseSubscriptionCallback : public chip::app::ClusterStateCache::Callbac
 
     // We need to exist to get a ReadClient, so can't take this as a constructor argument.
     void AdoptReadClient(std::unique_ptr aReadClient) { mReadClient = std::move(aReadClient); }
-    void AdoptAttributeCache(std::unique_ptr aAttributeCache)
+    void AdoptClusterStateCache(std::unique_ptr aClusterStateCache)
     {
-        mAttributeCache = std::move(aAttributeCache);
+        mClusterStateCache = std::move(aClusterStateCache);
     }
 
 protected:
@@ -150,7 +150,7 @@ class MTRBaseSubscriptionCallback : public chip::app::ClusterStateCache::Callbac
     //    from OnDone or from an error callback but not both, by tracking whether
     //    we have a queued-up deletion.
     std::unique_ptr mReadClient;
-    std::unique_ptr mAttributeCache;
+    std::unique_ptr mClusterStateCache;
     bool mHaveQueuedDeletion = false;
     OnDoneHandler _Nullable mOnDoneHandler = nil;
 };
diff --git a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer+XPC.h b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer+XPC.h
similarity index 91%
rename from src/darwin/Framework/CHIP/MTRAttributeCacheContainer+XPC.h
rename to src/darwin/Framework/CHIP/MTRClusterStateCacheContainer+XPC.h
index a024a336be2d57..3252cd7a2f3a4c 100644
--- a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer+XPC.h
+++ b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer+XPC.h
@@ -17,11 +17,11 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer.h"
+#import "MTRClusterStateCacheContainer.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface MTRAttributeCacheContainer (XPC)
+@interface MTRClusterStateCacheContainer (XPC)
 - (void)setXPCConnection:(MTRDeviceControllerXPCConnection *)xpcConnection
             controllerID:(id)controllerID
                 deviceID:(NSNumber *)deviceID;
diff --git a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer.h b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.h
similarity index 52%
rename from src/darwin/Framework/CHIP/MTRAttributeCacheContainer.h
rename to src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.h
index c5bb54f33fd54f..1ebc5702de311d 100644
--- a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer.h
+++ b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.h
@@ -24,35 +24,45 @@ NS_ASSUME_NONNULL_BEGIN
 
 @class MTRSubscribeParams;
 
-@interface MTRAttributeCacheContainer : NSObject
+/**
+ * An object that holds a cluster state cache.  It can be passed to
+ * MTRBaseDevice's subscribeWithQueue to fill the cache with data the
+ * subscription returns.  Then reads can happen against the cache without going
+ * out to the network.
+ */
+MTR_NEWLY_AVAILABLE
+@interface MTRClusterStateCacheContainer : NSObject
 
 /**
- * Reads an attribute with specific attribute path
+ * Reads the given attributes from the cluster state cache inside
+ * this cache container.
  *
- * @param endpointID  endpoint ID of the attribute
- * @param clusterID  cluster ID of the attribute
- * @param attributeID  attribute ID of the attribute
+ * @param endpointID  endpoint ID of the attributes. Nil means wildcard.
+ * @param clusterID  cluster ID of the attributes. Nil means wildcard.
+ * @param attributeID  attribute ID of the attributes. Nil means wildcard.
  * @param queue  client queue to dispatch the completion handler through
  * @param completion  block to receive the result.
- *                   "values" received by the block will have the same format of object as the one received by completion block
- *                   of MTRBaseDevice readAttributeWithEndpointID:clusterID:attributeID:queue:completion method.
+ *                   "values" received by the block will have the same format of object as the one received by the completion block
+ *                   of the MTRBaseDevice readAttributesWithEndpointID:clusterID:attributeID:queue:completion method.
+ *
+ * @note: not all combinations of wildcards might be supported.
  */
-- (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
-                          clusterID:(NSNumber * _Nullable)clusterID
-                        attributeID:(NSNumber * _Nullable)attributeID
-                              queue:(dispatch_queue_t)queue
-                         completion:(MTRDeviceResponseHandler)completion MTR_NEWLY_AVAILABLE;
+- (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID
+                           clusterID:(NSNumber * _Nullable)clusterID
+                         attributeID:(NSNumber * _Nullable)attributeID
+                               queue:(dispatch_queue_t)queue
+                          completion:(MTRDeviceResponseHandler)completion;
 
 @end
 
-@interface MTRAttributeCacheContainer (Deprecated)
+MTR_NEWLY_DEPRECATED("Please use MTRClusterStateCacheContainer")
+@interface MTRAttributeCacheContainer : NSObject
 
 - (void)readAttributeWithEndpointId:(NSNumber * _Nullable)endpointId
                           clusterId:(NSNumber * _Nullable)clusterId
                         attributeId:(NSNumber * _Nullable)attributeId
                         clientQueue:(dispatch_queue_t)clientQueue
-                         completion:(MTRDeviceResponseHandler)completion
-    MTR_NEWLY_DEPRECATED("Please use readAttributeWithEndpointID:clusterID:attributeID:queue:completion:");
+                         completion:(MTRDeviceResponseHandler)completion;
 
 @end
 
diff --git a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer.mm b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.mm
similarity index 78%
rename from src/darwin/Framework/CHIP/MTRAttributeCacheContainer.mm
rename to src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.mm
index ce53d8d1597cad..81eb66239b596b 100644
--- a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer.mm
+++ b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer.mm
@@ -17,9 +17,9 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer_Internal.h"
 #import "MTRBaseDevice_Internal.h"
 #import "MTRCluster.h"
+#import "MTRClusterStateCacheContainer_Internal.h"
 #import "MTRDeviceControllerXPCConnection.h"
 #import "MTRError.h"
 #import "MTRError_Internal.h"
@@ -31,12 +31,12 @@
 
 using namespace chip;
 
-@implementation MTRAttributeCacheContainer
+@implementation MTRClusterStateCacheContainer
 
 - (instancetype)init
 {
     if ([super init]) {
-        _cppAttributeCache = nullptr;
+        _cppClusterStateCache = nullptr;
         _shouldUseXPC = NO;
     }
     return self;
@@ -52,7 +52,7 @@ - (void)setXPCConnection:(MTRDeviceControllerXPCConnection *)xpcConnection
     self.shouldUseXPC = YES;
 }
 
-static CHIP_ERROR AppendAttibuteValueToArray(
+static CHIP_ERROR AppendAttributeValueToArray(
     const chip::app::ConcreteAttributePath & path, chip::app::ClusterStateCache * cache, NSMutableArray * array)
 {
     chip::TLV::TLVReader reader;
@@ -78,11 +78,11 @@ static CHIP_ERROR AppendAttibuteValueToArray(
     return err;
 }
 
-- (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
-                          clusterID:(NSNumber * _Nullable)clusterID
-                        attributeID:(NSNumber * _Nullable)attributeID
-                              queue:(dispatch_queue_t)queue
-                         completion:(MTRDeviceResponseHandler)completion
+- (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID
+                           clusterID:(NSNumber * _Nullable)clusterID
+                         attributeID:(NSNumber * _Nullable)attributeID
+                               queue:(dispatch_queue_t)queue
+                          completion:(MTRDeviceResponseHandler)completion
 {
     __auto_type completionHandler = ^(NSArray *> * _Nullable values, NSError * _Nullable error) {
         dispatch_async(queue, ^{
@@ -127,7 +127,7 @@ - (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
             return;
         }
 
-        if (!self.cppAttributeCache) {
+        if (!self.cppClusterStateCache) {
             MTR_LOG_ERROR("Error: No attribute cache available to read from");
             completionHandler(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]);
             return;
@@ -136,31 +136,32 @@ - (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
         NSMutableArray * result = [[NSMutableArray alloc] init];
         CHIP_ERROR err = CHIP_NO_ERROR;
         if (endpointID == nil) {
-            err = self.cppAttributeCache->ForEachAttribute(
+            err = self.cppClusterStateCache->ForEachAttribute(
                 static_cast([clusterID unsignedLongValue]), [&](const app::ConcreteAttributePath & path) {
                     if (attributeID == nil
                         || static_cast([attributeID unsignedLongValue]) == path.mAttributeId) {
-                        (void) AppendAttibuteValueToArray(path, self.cppAttributeCache, result);
+                        (void) AppendAttributeValueToArray(path, self.cppClusterStateCache, result);
                     }
                     return CHIP_NO_ERROR;
                 });
         } else if (clusterID == nil) {
-            err = self.cppAttributeCache->ForEachCluster(
+            err = self.cppClusterStateCache->ForEachCluster(
                 static_cast([endpointID unsignedShortValue]), [&](chip::ClusterId enumeratedClusterId) {
-                    (void) self.cppAttributeCache->ForEachAttribute(static_cast([endpointID unsignedShortValue]),
-                        enumeratedClusterId, [&](const app::ConcreteAttributePath & path) {
+                    (void) self.cppClusterStateCache->ForEachAttribute(
+                        static_cast([endpointID unsignedShortValue]), enumeratedClusterId,
+                        [&](const app::ConcreteAttributePath & path) {
                             if (attributeID == nil
                                 || static_cast([attributeID unsignedLongValue]) == path.mAttributeId) {
-                                (void) AppendAttibuteValueToArray(path, self.cppAttributeCache, result);
+                                (void) AppendAttributeValueToArray(path, self.cppClusterStateCache, result);
                             }
                             return CHIP_NO_ERROR;
                         });
                     return CHIP_NO_ERROR;
                 });
         } else if (attributeID == nil) {
-            err = self.cppAttributeCache->ForEachAttribute(static_cast([endpointID unsignedShortValue]),
+            err = self.cppClusterStateCache->ForEachAttribute(static_cast([endpointID unsignedShortValue]),
                 static_cast([clusterID unsignedLongValue]), [&](const app::ConcreteAttributePath & path) {
-                    (void) AppendAttibuteValueToArray(path, self.cppAttributeCache, result);
+                    (void) AppendAttributeValueToArray(path, self.cppClusterStateCache, result);
                     return CHIP_NO_ERROR;
                 });
         } else {
@@ -168,7 +169,7 @@ - (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
             path.mEndpointId = static_cast([endpointID unsignedShortValue]);
             path.mClusterId = static_cast([clusterID unsignedLongValue]);
             path.mAttributeId = static_cast([attributeID unsignedLongValue]);
-            err = AppendAttibuteValueToArray(path, self.cppAttributeCache, result);
+            err = AppendAttributeValueToArray(path, self.cppClusterStateCache, result);
         }
         if (err == CHIP_NO_ERROR) {
             completionHandler(result, nil);
@@ -180,7 +181,18 @@ - (void)readAttributeWithEndpointID:(NSNumber * _Nullable)endpointID
 
 @end
 
-@implementation MTRAttributeCacheContainer (Deprecated)
+@implementation MTRAttributeCacheContainer
+
+- (instancetype)init
+{
+    if (self = [super init]) {
+        _realContainer = [[MTRClusterStateCacheContainer alloc] init];
+        if (_realContainer == nil) {
+            return nil;
+        }
+    }
+    return self;
+}
 
 - (void)readAttributeWithEndpointId:(NSNumber * _Nullable)endpointId
                           clusterId:(NSNumber * _Nullable)clusterId
@@ -188,11 +200,11 @@ - (void)readAttributeWithEndpointId:(NSNumber * _Nullable)endpointId
                         clientQueue:(dispatch_queue_t)clientQueue
                          completion:(MTRDeviceResponseHandler)completion
 {
-    [self readAttributeWithEndpointID:endpointId
-                            clusterID:clusterId
-                          attributeID:attributeId
-                                queue:clientQueue
-                           completion:completion];
+    [self.realContainer readAttributesWithEndpointID:endpointId
+                                           clusterID:clusterId
+                                         attributeID:attributeId
+                                               queue:clientQueue
+                                          completion:completion];
 }
 
 @end
diff --git a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer_Internal.h b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer_Internal.h
similarity index 85%
rename from src/darwin/Framework/CHIP/MTRAttributeCacheContainer_Internal.h
rename to src/darwin/Framework/CHIP/MTRClusterStateCacheContainer_Internal.h
index 7b71a4576be8f4..4b6c6eb47a3c62 100644
--- a/src/darwin/Framework/CHIP/MTRAttributeCacheContainer_Internal.h
+++ b/src/darwin/Framework/CHIP/MTRClusterStateCacheContainer_Internal.h
@@ -17,16 +17,16 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer.h"
+#import "MTRClusterStateCacheContainer.h"
 #import "MTRDeviceControllerOverXPC.h"
 
 #include 
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface MTRAttributeCacheContainer ()
+@interface MTRClusterStateCacheContainer ()
 
-@property (atomic, readwrite, nullable) chip::app::ClusterStateCache * cppAttributeCache;
+@property (atomic, readwrite, nullable) chip::app::ClusterStateCache * cppClusterStateCache;
 @property (nonatomic, readwrite, copy) NSNumber * deviceID;
 @property (nonatomic, readwrite, weak, nullable) MTRDeviceControllerXPCConnection * xpcConnection;
 @property (nonatomic, readwrite, strong, nullable) id xpcControllerID;
@@ -34,4 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @end
 
+@interface MTRAttributeCacheContainer ()
+@property (nonatomic, readonly) MTRClusterStateCacheContainer * realContainer;
+@end
+
 NS_ASSUME_NONNULL_END
diff --git a/src/darwin/Framework/CHIP/MTRDevice.mm b/src/darwin/Framework/CHIP/MTRDevice.mm
index 96fb75343bdad0..382d114e887534 100644
--- a/src/darwin/Framework/CHIP/MTRDevice.mm
+++ b/src/darwin/Framework/CHIP/MTRDevice.mm
@@ -334,7 +334,7 @@ - (void)setupSubscription
 
                                   std::unique_ptr callback;
                                   std::unique_ptr readClient;
-                                  std::unique_ptr attributeCache;
+                                  std::unique_ptr clusterStateCache;
                                   callback = std::make_unique(
                                       ^(NSArray * value) {
                                           dispatch_async(self.queue, ^{
diff --git a/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m b/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m
index 921eef662fbaed..a780929f79e471 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m
+++ b/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m
@@ -17,8 +17,8 @@
 
 #import "MTRDeviceOverXPC.h"
 
-#import "MTRAttributeCacheContainer+XPC.h"
 #import "MTRCluster.h"
+#import "MTRClusterStateCacheContainer+XPC.h"
 #import "MTRDeviceController+XPC.h"
 #import "MTRDeviceControllerOverXPC_Internal.h"
 #import "MTRDeviceControllerXPCConnection.h"
@@ -50,19 +50,19 @@ - (instancetype)initWithControllerOverXPC:(MTRDeviceControllerOverXPC *)controll
 }
 
 - (void)subscribeWithQueue:(dispatch_queue_t)queue
-                     params:(MTRSubscribeParams *)params
-    attributeCacheContainer:(MTRAttributeCacheContainer * _Nullable)attributeCacheContainer
-     attributeReportHandler:(void (^_Nullable)(NSArray * value))attributeReportHandler
-         eventReportHandler:(void (^_Nullable)(NSArray * value))eventReportHandler
-               errorHandler:(void (^)(NSError * error))errorHandler
-    subscriptionEstablished:(void (^_Nullable)(void))subscriptionEstablishedHandler
-    resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduledHandler
+                        params:(MTRSubscribeParams *)params
+    clusterStateCacheContainer:(MTRClusterStateCacheContainer * _Nullable)clusterStateCacheContainer
+        attributeReportHandler:(void (^_Nullable)(NSArray * value))attributeReportHandler
+            eventReportHandler:(void (^_Nullable)(NSArray * value))eventReportHandler
+                  errorHandler:(void (^)(NSError * error))errorHandler
+       subscriptionEstablished:(void (^_Nullable)(void))subscriptionEstablishedHandler
+       resubscriptionScheduled:(MTRDeviceResubscriptionScheduledHandler _Nullable)resubscriptionScheduledHandler
 {
     MTR_LOG_DEBUG("Subscribing all attributes... Note that attributeReportHandler, eventReportHandler, and resubscriptionScheduled "
                   "are not supported.");
     __auto_type workBlock = ^{
-        if (attributeCacheContainer) {
-            [attributeCacheContainer setXPCConnection:self->_xpcConnection controllerID:self.controllerID deviceID:self.nodeID];
+        if (clusterStateCacheContainer) {
+            [clusterStateCacheContainer setXPCConnection:self->_xpcConnection controllerID:self.controllerID deviceID:self.nodeID];
         }
         [self->_xpcConnection getProxyHandleWithCompletion:^(
             dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) {
@@ -72,7 +72,7 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue
                                           minInterval:params.minInterval
                                           maxInterval:params.maxInterval
                                                params:[MTRDeviceController encodeXPCSubscribeParams:params]
-                                          shouldCache:(attributeCacheContainer != nil)
+                                          shouldCache:(clusterStateCacheContainer != nil)
                                            completion:^(NSError * _Nullable error) {
                                                dispatch_async(queue, ^{
                                                    if (error) {
diff --git a/src/darwin/Framework/CHIP/Matter.h b/src/darwin/Framework/CHIP/Matter.h
index 0961053495f706..5fd4b1483cc007 100644
--- a/src/darwin/Framework/CHIP/Matter.h
+++ b/src/darwin/Framework/CHIP/Matter.h
@@ -27,13 +27,13 @@
 
 #import 
 #import 
-#import 
 #import 
 #import 
 #import 
 #import 
 #import 
 #import 
+#import 
 #import 
 #import 
 #import 
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
index 96a4fc511dd312..a475e8b604d667 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters-src.zapt
@@ -2,7 +2,7 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer_Internal.h"
+#import "MTRClusterStateCacheContainer_Internal.h"
 #import "MTRBaseClusters_internal.h"
 #import "MTRBaseDevice.h"
 #import "MTRBaseDevice_Internal.h"
@@ -176,18 +176,18 @@ reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value
     MTRSubscribeAttributeattribute_data_callback_name}}CallbackSubscriptionBridge, {{asObjectiveCClass type parent.name}}, TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint  queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion
++ (void) read{{>attribute}}WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint  queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTR{{>attribute_data_callback_name}}CallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^({{>attribute_data_callback_name}}Callback successCb, MTRErrorCallback failureCb) {
-          if (attributeCacheContainer.cppAttributeCache) {
+          if (clusterStateCacheContainer.cppClusterStateCache) {
               chip::app::ConcreteAttributePath path;
               using TypeInfo = {{asUpperCamelCase parent.name}}::Attributes::{{asUpperCamelCase name}}::TypeInfo;
               path.mEndpointId = static_cast([endpoint unsignedShortValue]);
               path.mClusterId = TypeInfo::GetClusterId();
               path.mAttributeId = TypeInfo::GetAttributeId();
               TypeInfo::DecodableType value;
-              CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+              CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
               if (err == CHIP_NO_ERROR)
               {
                 successCb(bridge, value);
@@ -280,7 +280,7 @@ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptio
 }
 + (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completionHandler:(void (^)({{asObjectiveCClass type parent.name compatRemapClusterName=true}} * _Nullable value, NSError * _Nullable error))completionHandler
 {
-  [self readAttribute{{asUpperCamelCase name}}WithAttributeCache:attributeCacheContainer endpoint:endpoint queue:queue completion:
+  [self readAttribute{{asUpperCamelCase name}}WithClusterStateCache:attributeCacheContainer.realContainer endpoint:endpoint queue:queue completion:
       ^({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error) {
         // Cast is safe because subclass does not add any selectors.
         completionHandler(static_cast<{{asObjectiveCClass type parent.name compatRemapClusterName=true}} *>(value), error);
diff --git a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
index 3aa04311e72417..0a6e7ee7585e72 100644
--- a/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRBaseClusters.zapt
@@ -2,7 +2,7 @@
 
 #import 
 
-#import 
+#import 
 
 #import 
 #import 
@@ -48,7 +48,7 @@ MTR_NEWLY_AVAILABLE
 {{#if isReportableAttribute}}
 - (void) subscribe{{>attribute}}WithParams:(MTRSubscribeParams *)params
 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished reportHandler:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void) read{{>attribute}}WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void) read{{>attribute}}WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)({{asObjectiveCClass type parent.name}} * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 {{/if}}
 {{/chip_server_cluster_attributes}}
 
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
index e385a738630df6..fa78f8f0439559 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
@@ -2,7 +2,6 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer_Internal.h"
 #import "MTRAsyncCallbackWorkQueue.h"
 #import "MTRBaseDevice_internal.h"
 #import "MTRClusterConstants.h"
diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
index e44a6150f37f60..fd58638c3bb196 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters.zapt
@@ -2,8 +2,6 @@
 
 #import 
 
-#import 
-
 #import 
 #import 
 #import 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index ad5833dc541cb3..32629686bc125f 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -17,7 +17,7 @@
 
 #import 
 
-#import 
+#import 
 
 #import 
 #import 
@@ -50,10 +50,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeIdentifyTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeIdentifyTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -62,10 +62,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeIdentifyTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -74,11 +74,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -86,11 +86,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -98,10 +98,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -110,10 +110,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -122,11 +122,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -167,10 +167,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNameSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -179,11 +179,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -191,11 +191,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -203,10 +203,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -215,10 +215,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -227,11 +227,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -284,10 +284,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSceneCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentSceneWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -296,10 +296,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentSceneWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentGroupWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -308,10 +308,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentGroupWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSceneValidWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -320,10 +320,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSceneValidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNameSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -332,10 +332,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNameSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLastConfiguredByWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -344,11 +344,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLastConfiguredByWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -356,11 +356,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -368,11 +368,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -380,10 +380,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -392,10 +392,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -404,11 +404,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -446,10 +446,10 @@ NS_ASSUME_NONNULL_BEGIN
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGlobalSceneControlWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -458,11 +458,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGlobalSceneControlWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOnTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -474,10 +474,10 @@ NS_ASSUME_NONNULL_BEGIN
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOffWaitTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -491,10 +491,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOffWaitTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartUpOnOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -508,10 +508,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartUpOnOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -520,11 +520,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -532,11 +532,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -544,10 +544,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -556,10 +556,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -568,11 +568,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -595,10 +595,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSwitchTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSwitchActionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -612,10 +612,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSwitchActionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -624,11 +624,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -636,11 +636,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -648,10 +648,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -660,10 +660,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -672,11 +672,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -715,10 +715,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -727,10 +727,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemainingTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -739,10 +739,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -751,10 +751,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -763,11 +763,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -775,10 +775,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -787,10 +787,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -803,10 +803,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOptionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOnOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -820,11 +820,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOnOffTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOnLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -836,10 +836,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOnTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -853,11 +853,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOnTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOffTransitionTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -870,11 +870,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOffTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDefaultMoveRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -887,11 +887,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDefaultMoveRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartUpCurrentLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -904,11 +904,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeStartUpCurrentLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -916,11 +916,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -928,11 +928,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -940,10 +940,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -952,10 +952,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -964,11 +964,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -995,10 +995,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1012,10 +1012,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInactiveTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1029,10 +1029,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInactiveTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOutOfServiceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1046,10 +1046,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOutOfServiceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePolarityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1058,10 +1058,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePolarityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePresentValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1075,10 +1075,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePresentValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReliabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1092,10 +1092,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReliabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStatusFlagsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1104,10 +1104,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusFlagsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApplicationTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1116,11 +1116,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApplicationTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1128,11 +1128,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1140,11 +1140,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1152,10 +1152,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1164,10 +1164,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1176,11 +1176,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -1204,10 +1204,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDeviceTypeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeServerListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1216,10 +1216,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeServerListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClientListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1228,10 +1228,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClientListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePartsListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1240,10 +1240,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartsListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1252,11 +1252,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1264,11 +1264,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1276,10 +1276,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1288,10 +1288,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1300,11 +1300,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -1332,10 +1332,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBindingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1344,11 +1344,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1356,11 +1356,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1368,10 +1368,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1380,10 +1380,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1392,11 +1392,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -1426,10 +1426,10 @@ NS_ASSUME_NONNULL_BEGIN
                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                           reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                  endpoint:(NSNumber *)endpoint
-                                     queue:(dispatch_queue_t)queue
-                                completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAclWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                     endpoint:(NSNumber *)endpoint
+                                        queue:(dispatch_queue_t)queue
+                                   completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params
@@ -1443,10 +1443,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeExtensionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSubjectsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -1456,11 +1456,12 @@ NS_ASSUME_NONNULL_BEGIN
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSubjectsPerAccessControlEntryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTargetsPerAccessControlEntryWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -1469,11 +1470,12 @@ NS_ASSUME_NONNULL_BEGIN
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTargetsPerAccessControlEntryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAccessControlEntriesPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -1482,11 +1484,12 @@ NS_ASSUME_NONNULL_BEGIN
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAccessControlEntriesPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1494,11 +1497,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1506,11 +1509,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1518,10 +1521,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1530,10 +1533,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1542,11 +1545,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -1594,10 +1597,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActionListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEndpointListsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1606,10 +1609,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEndpointListsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSetupURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1618,10 +1621,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSetupURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -1630,11 +1633,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1642,11 +1645,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1654,10 +1657,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1666,10 +1669,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1678,11 +1681,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -1711,11 +1714,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDataModelRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1723,10 +1726,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1735,10 +1738,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1747,10 +1750,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1759,10 +1762,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1775,10 +1778,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNodeLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLocationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1791,10 +1794,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1803,11 +1806,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHardwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1815,11 +1818,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSString * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHardwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSString * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1827,11 +1830,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSoftwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1839,11 +1842,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSString * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSoftwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSString * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1851,11 +1854,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeManufacturingDateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSString * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1863,10 +1866,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1875,10 +1878,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1887,10 +1890,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1899,10 +1902,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSerialNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLocalConfigDisabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -1916,11 +1919,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLocalConfigDisabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1928,10 +1931,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReachableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -1940,10 +1943,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUniqueIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
@@ -1952,11 +1955,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                          NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
-                                                            NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCapabilityMinimaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1964,11 +1967,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1976,11 +1979,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -1988,10 +1991,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2000,10 +2003,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2012,11 +2015,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2048,11 +2051,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2060,11 +2063,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2072,10 +2075,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2084,10 +2087,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2096,11 +2099,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2132,11 +2135,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDefaultOtaProvidersWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUpdatePossibleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2144,10 +2147,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpdatePossibleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUpdateStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2156,10 +2159,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpdateStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUpdateStateProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2168,11 +2171,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUpdateStateProgressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2180,11 +2183,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2192,11 +2195,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2204,10 +2207,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2216,10 +2219,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2228,11 +2231,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2263,10 +2266,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveLocaleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedLocalesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -2275,11 +2278,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedLocalesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSArray * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2287,11 +2290,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2299,11 +2302,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2311,10 +2314,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2323,10 +2326,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2335,11 +2338,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2369,10 +2372,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHourFormatWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveCalendarTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2386,11 +2389,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveCalendarTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedCalendarTypesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2398,11 +2401,11 @@ NS_ASSUME_NONNULL_BEGIN
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSArray * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedCalendarTypesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSArray * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2410,11 +2413,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2422,11 +2425,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2434,10 +2437,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2446,10 +2449,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2458,11 +2461,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2493,11 +2496,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTemperatureUnitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2505,11 +2508,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2517,11 +2520,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2529,10 +2532,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2541,10 +2544,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2553,11 +2556,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2580,10 +2583,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSourcesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -2592,11 +2595,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2604,11 +2607,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2616,10 +2619,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2628,10 +2631,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2640,11 +2643,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -2668,10 +2671,10 @@ NS_ASSUME_NONNULL_BEGIN
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOrderWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2680,10 +2683,10 @@ NS_ASSUME_NONNULL_BEGIN
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOrderWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDescriptionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -2692,10 +2695,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredAssessedInputVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -2704,11 +2707,11 @@ NS_ASSUME_NONNULL_BEGIN
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredAssessedInputVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredAssessedInputFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -2716,11 +2719,11 @@ NS_ASSUME_NONNULL_BEGIN
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredAssessedInputFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredCurrentTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2728,11 +2731,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredCurrentTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredAssessedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2740,11 +2743,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredAssessedCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredNominalVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2752,11 +2755,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredNominalVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredMaximumCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2764,11 +2767,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWiredMaximumCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiredPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2776,10 +2779,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredPresentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveWiredFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -2788,11 +2791,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveWiredFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSArray * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2800,10 +2803,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatPercentRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2812,11 +2815,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatPercentRemainingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatTimeRemainingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2824,11 +2827,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatTimeRemainingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatChargeLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2836,10 +2839,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatChargeLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatReplacementNeededWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2848,11 +2851,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatReplacementNeededWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatReplaceabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2860,11 +2863,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatReplaceabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatPresentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2872,10 +2875,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatPresentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveBatFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -2884,10 +2887,10 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveBatFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatReplacementDescriptionWithCompletion:(void (^)(NSString * _Nullable value,
@@ -2896,11 +2899,11 @@ NS_ASSUME_NONNULL_BEGIN
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSString * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSString * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatReplacementDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSString * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatCommonDesignationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2908,11 +2911,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatCommonDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatANSIDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2920,11 +2923,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSString * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatANSIDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSString * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatIECDesignationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2932,11 +2935,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatIECDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSString * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatApprovedChemistryWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2944,11 +2947,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatApprovedChemistryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -2956,10 +2959,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2968,10 +2971,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatQuantityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatChargeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2980,10 +2983,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatChargeStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatTimeToFullChargeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -2992,11 +2995,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatTimeToFullChargeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatFunctionalWhileChargingWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -3004,11 +3007,11 @@ NS_ASSUME_NONNULL_BEGIN
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatFunctionalWhileChargingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBatChargingCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3016,11 +3019,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatChargingCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveBatChargeFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3028,11 +3031,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSArray * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSArray * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveBatChargeFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSArray * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3040,11 +3043,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3052,11 +3055,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3064,10 +3067,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3076,10 +3079,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3088,11 +3091,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3133,10 +3136,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBreadcrumbWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBasicCommissioningInfoWithCompletion:
@@ -3147,13 +3150,14 @@ NS_ASSUME_NONNULL_BEGIN
                                              reportHandler:
                                                  (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(
-                                                           MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
-                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)
+    readAttributeBasicCommissioningInfoWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(
+                                                          MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
+                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRegulatoryConfigWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3161,11 +3165,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRegulatoryConfigWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLocationCapabilityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3173,11 +3177,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLocationCapabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportsConcurrentConnectionWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -3186,11 +3190,12 @@ NS_ASSUME_NONNULL_BEGIN
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportsConcurrentConnectionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3198,11 +3203,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3210,11 +3215,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3222,10 +3227,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3234,10 +3239,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3246,11 +3251,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3292,10 +3297,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxNetworksWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNetworksWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -3304,10 +3309,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNetworksWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeScanMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3316,11 +3321,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeScanMaxTimeSecondsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeConnectMaxTimeSecondsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3328,11 +3333,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeConnectMaxTimeSecondsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInterfaceEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3345,11 +3350,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInterfaceEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLastNetworkingStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3357,11 +3362,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLastNetworkingStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLastNetworkIDWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3369,10 +3374,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLastNetworkIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLastConnectErrorValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3381,11 +3386,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLastConnectErrorValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3393,11 +3398,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3405,11 +3410,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3417,10 +3422,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3429,10 +3434,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3441,11 +3446,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3472,11 +3477,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3484,11 +3489,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3496,10 +3501,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3508,10 +3513,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3520,11 +3525,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3551,11 +3556,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNetworkInterfacesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSArray * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRebootCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3563,10 +3568,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRebootCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUpTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3575,10 +3580,10 @@ NS_ASSUME_NONNULL_BEGIN
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTotalOperationalHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3587,11 +3592,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTotalOperationalHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBootReasonsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3599,10 +3604,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBootReasonsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveHardwareFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -3611,11 +3616,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveHardwareFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveRadioFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3623,11 +3628,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveRadioFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSArray * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveNetworkFaultsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3635,11 +3640,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveNetworkFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTestEventTriggersEnabledWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -3647,11 +3652,11 @@ NS_ASSUME_NONNULL_BEGIN
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTestEventTriggersEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3659,11 +3664,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3671,11 +3676,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3683,10 +3688,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3695,10 +3700,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3707,11 +3712,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3739,10 +3744,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeThreadMetricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentHeapFreeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3751,11 +3756,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentHeapFreeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentHeapUsedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3763,11 +3768,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentHeapUsedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentHeapHighWatermarkWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -3775,11 +3780,11 @@ NS_ASSUME_NONNULL_BEGIN
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentHeapHighWatermarkWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3787,11 +3792,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3799,11 +3804,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3811,10 +3816,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3823,10 +3828,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3835,11 +3840,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -3867,10 +3872,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRoutingRoleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3879,10 +3884,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRoutingRoleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNetworkNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -3891,10 +3896,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNetworkNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3903,10 +3908,10 @@ NS_ASSUME_NONNULL_BEGIN
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePanIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeExtendedPanIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3915,10 +3920,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeExtendedPanIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeshLocalPrefixWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
@@ -3927,10 +3932,10 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeshLocalPrefixWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3939,10 +3944,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNeighborTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -3951,11 +3956,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNeighborTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSArray * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRouteTableListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -3963,10 +3968,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRouteTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePartitionIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3975,10 +3980,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartitionIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWeightingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3987,10 +3992,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWeightingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -3999,10 +4004,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDataVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStableDataVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4011,11 +4016,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeStableDataVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLeaderRouterIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4023,10 +4028,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLeaderRouterIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDetachedRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4035,11 +4040,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDetachedRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeChildRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4047,10 +4052,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChildRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRouterRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4059,11 +4064,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRouterRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLeaderRoleCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4071,11 +4076,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLeaderRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4083,11 +4088,11 @@ NS_ASSUME_NONNULL_BEGIN
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAttachAttemptCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePartitionIdChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4095,11 +4100,11 @@ NS_ASSUME_NONNULL_BEGIN
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePartitionIdChangeCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4109,11 +4114,12 @@ NS_ASSUME_NONNULL_BEGIN
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeBetterPartitionAttachAttemptCountWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeParentChangeCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4122,11 +4128,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeParentChangeCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4134,10 +4140,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxTotalCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4146,10 +4152,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxUnicastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4158,11 +4164,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxBroadcastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4170,11 +4176,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxAckRequestedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxAckedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4182,10 +4188,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxAckedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxNoAckRequestedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4194,11 +4200,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxNoAckRequestedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4206,10 +4212,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxDataCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4218,11 +4224,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxDataPollCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4230,10 +4236,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxBeaconCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4242,22 +4248,22 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-
-- (void)readAttributeTxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxBeaconRequestCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeTxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams *)params
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxRetryCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4266,10 +4272,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxRetryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -4278,11 +4284,11 @@ NS_ASSUME_NONNULL_BEGIN
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxDirectMaxRetryExpiryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4291,11 +4297,12 @@ NS_ASSUME_NONNULL_BEGIN
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxIndirectMaxRetryExpiryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxErrCcaCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4303,10 +4310,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrCcaCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxErrAbortCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4315,11 +4322,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxErrAbortCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxErrBusyChannelCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4327,11 +4334,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTxErrBusyChannelCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxTotalCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4339,10 +4346,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxTotalCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxUnicastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4351,10 +4358,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxUnicastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxBroadcastCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4363,11 +4370,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxBroadcastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxDataCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4375,10 +4382,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxDataCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxDataPollCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4387,11 +4394,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxDataPollCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxBeaconCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4399,10 +4406,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxBeaconCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxBeaconRequestCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4411,11 +4418,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxBeaconRequestCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4423,10 +4430,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxAddressFilteredCountWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -4435,11 +4442,11 @@ NS_ASSUME_NONNULL_BEGIN
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxAddressFilteredCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxDestAddrFilteredCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4447,11 +4454,11 @@ NS_ASSUME_NONNULL_BEGIN
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxDestAddrFilteredCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxDuplicatedCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4459,11 +4466,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxDuplicatedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrNoFrameCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4471,11 +4478,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxErrNoFrameCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrUnknownNeighborCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4483,11 +4490,11 @@ NS_ASSUME_NONNULL_BEGIN
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxErrUnknownNeighborCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4495,11 +4502,11 @@ NS_ASSUME_NONNULL_BEGIN
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxErrInvalidSrcAddrCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrSecCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4507,10 +4514,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrSecCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrFcsCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4519,10 +4526,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrFcsCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRxErrOtherCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4531,11 +4538,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRxErrOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4543,11 +4550,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePendingTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4555,11 +4562,11 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePendingTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDelayWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4567,10 +4574,10 @@ NS_ASSUME_NONNULL_BEGIN
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSecurityPolicyWithCompletion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
@@ -4579,11 +4586,12 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
-                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSecurityPolicyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:
+                                                  (void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
+                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeChannelPage0MaskWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4591,10 +4599,10 @@ NS_ASSUME_NONNULL_BEGIN
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelPage0MaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOperationalDatasetComponentsWithCompletion:
@@ -4608,13 +4616,13 @@ NS_ASSUME_NONNULL_BEGIN
                                                        MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
 + (void)
-    readAttributeOperationalDatasetComponentsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(
-                                                             MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
-                                                             NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+    readAttributeOperationalDatasetComponentsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:
+                                                            (void (^)(
+                                                                MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveNetworkFaultsListWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4622,11 +4630,11 @@ NS_ASSUME_NONNULL_BEGIN
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSArray * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveNetworkFaultsListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSArray * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4634,11 +4642,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4646,11 +4654,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4658,10 +4666,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4670,10 +4678,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4682,11 +4690,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -4714,10 +4722,10 @@ NS_ASSUME_NONNULL_BEGIN
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBssidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSecurityTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4726,10 +4734,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSecurityTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWiFiVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4738,10 +4746,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiFiVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeChannelNumberWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4750,10 +4758,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRssiWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4762,10 +4770,10 @@ NS_ASSUME_NONNULL_BEGIN
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRssiWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBeaconLostCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4774,11 +4782,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBeaconLostCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBeaconRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4786,10 +4794,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBeaconRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketMulticastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -4798,11 +4806,11 @@ NS_ASSUME_NONNULL_BEGIN
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePacketMulticastRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketMulticastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -4810,11 +4818,11 @@ NS_ASSUME_NONNULL_BEGIN
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePacketMulticastTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketUnicastRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4822,11 +4830,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePacketUnicastRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketUnicastTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4834,11 +4842,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePacketUnicastTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentMaxRateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4846,10 +4854,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentMaxRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4858,10 +4866,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -4870,11 +4878,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4882,11 +4890,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -4894,10 +4902,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4906,10 +4914,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4918,11 +4926,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -4950,10 +4958,10 @@ NS_ASSUME_NONNULL_BEGIN
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePHYRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFullDuplexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4962,10 +4970,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFullDuplexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketRxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4974,10 +4982,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePacketTxCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4986,10 +4994,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTxErrCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -4998,10 +5006,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCollisionCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5010,10 +5018,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCollisionCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOverrunCountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5022,10 +5030,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCarrierDetectWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5034,10 +5042,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCarrierDetectWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTimeSinceResetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5046,10 +5054,10 @@ NS_ASSUME_NONNULL_BEGIN
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTimeSinceResetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -5058,11 +5066,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5070,11 +5078,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5082,10 +5090,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5094,10 +5102,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5106,11 +5114,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5136,10 +5144,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5148,10 +5156,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5160,10 +5168,10 @@ NS_ASSUME_NONNULL_BEGIN
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5176,10 +5184,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNodeLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5188,11 +5196,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHardwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5200,11 +5208,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSString * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHardwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSString * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5212,11 +5220,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSoftwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5224,11 +5232,11 @@ NS_ASSUME_NONNULL_BEGIN
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSString * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSString * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSoftwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSString * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5236,11 +5244,11 @@ NS_ASSUME_NONNULL_BEGIN
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeManufacturingDateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSString * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5248,10 +5256,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5260,10 +5268,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5272,10 +5280,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5284,10 +5292,10 @@ NS_ASSUME_NONNULL_BEGIN
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSerialNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5296,10 +5304,10 @@ NS_ASSUME_NONNULL_BEGIN
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReachableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -5308,10 +5316,10 @@ NS_ASSUME_NONNULL_BEGIN
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUniqueIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -5320,11 +5328,11 @@ NS_ASSUME_NONNULL_BEGIN
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5332,11 +5340,11 @@ NS_ASSUME_NONNULL_BEGIN
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5344,10 +5352,10 @@ NS_ASSUME_NONNULL_BEGIN
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5356,10 +5364,10 @@ NS_ASSUME_NONNULL_BEGIN
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5368,11 +5376,11 @@ NS_ASSUME_NONNULL_BEGIN
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5400,11 +5408,11 @@ light or a window shade.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfPositionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5412,11 +5420,11 @@ light or a window shade.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMultiPressMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5424,10 +5432,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMultiPressMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -5436,11 +5444,11 @@ light or a window shade.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5448,11 +5456,11 @@ light or a window shade.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5460,10 +5468,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5472,10 +5480,10 @@ light or a window shade.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5484,11 +5492,11 @@ light or a window shade.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5519,10 +5527,10 @@ light or a window shade.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindowStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAdminFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5531,11 +5539,11 @@ light or a window shade.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAdminFabricIndexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAdminVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5543,10 +5551,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAdminVendorIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -5555,11 +5563,11 @@ light or a window shade.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5567,11 +5575,11 @@ light or a window shade.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5579,10 +5587,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5591,10 +5599,10 @@ light or a window shade.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5603,11 +5611,11 @@ light or a window shade.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5655,10 +5663,10 @@ light or a window shade.
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNOCsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
@@ -5668,10 +5676,10 @@ light or a window shade.
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5680,11 +5688,11 @@ light or a window shade.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCommissionedFabricsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5692,11 +5700,11 @@ light or a window shade.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCommissionedFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTrustedRootCertificatesWithCompletion:(void (^)(NSArray * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -5704,11 +5712,11 @@ light or a window shade.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSArray * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSArray * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTrustedRootCertificatesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSArray * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentFabricIndexWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5716,11 +5724,11 @@ light or a window shade.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentFabricIndexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5728,11 +5736,11 @@ light or a window shade.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5740,11 +5748,11 @@ light or a window shade.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5752,10 +5760,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5764,10 +5772,10 @@ light or a window shade.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5776,11 +5784,11 @@ light or a window shade.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5819,10 +5827,10 @@ light or a window shade.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGroupKeyMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
@@ -5832,10 +5840,10 @@ light or a window shade.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGroupTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxGroupsPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5844,11 +5852,11 @@ light or a window shade.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxGroupsPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxGroupKeysPerFabricWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5856,11 +5864,11 @@ light or a window shade.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxGroupKeysPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5868,11 +5876,11 @@ light or a window shade.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5880,11 +5888,11 @@ light or a window shade.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5892,10 +5900,10 @@ light or a window shade.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5904,10 +5912,10 @@ light or a window shade.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5916,11 +5924,11 @@ light or a window shade.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -5944,10 +5952,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLabelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -5956,11 +5964,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5968,11 +5976,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -5980,10 +5988,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -5992,10 +6000,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6004,11 +6012,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -6035,10 +6043,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLabelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -6047,11 +6055,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6059,11 +6067,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6071,10 +6079,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6083,10 +6091,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6095,11 +6103,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -6122,10 +6130,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStateValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -6134,11 +6142,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6146,11 +6154,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6158,10 +6166,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6170,10 +6178,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6182,11 +6190,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -6212,10 +6220,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStandardNamespaceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6224,11 +6232,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeStandardNamespaceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedModesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6236,10 +6244,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedModesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6248,10 +6256,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartUpModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6265,10 +6273,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartUpModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOnModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6281,10 +6289,10 @@ labels.
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -6293,11 +6301,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6305,11 +6313,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6317,10 +6325,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6329,10 +6337,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6341,11 +6349,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -6410,10 +6418,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLockStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLockTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6422,10 +6430,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLockTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActuatorEnabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6434,11 +6442,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActuatorEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDoorStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6446,10 +6454,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDoorStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDoorOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6463,10 +6471,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDoorOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDoorClosedEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6480,11 +6488,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDoorClosedEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6496,10 +6504,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOpenPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfTotalUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -6508,11 +6516,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfTotalUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfPINUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6520,11 +6528,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfPINUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6532,12 +6540,12 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-
++ (void)readAttributeNumberOfRFIDUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
 - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MTRSubscribeParams *)params
@@ -6546,12 +6554,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletion:
@@ -6562,12 +6570,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -6578,11 +6586,12 @@ labels.
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeNumberOfHolidaySchedulesSupportedWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6591,11 +6600,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxPINCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinPINCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6603,11 +6612,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinPINCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6615,11 +6624,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxRFIDCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinRFIDCodeLengthWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6627,11 +6636,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinRFIDCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCredentialRulesSupportWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6639,11 +6648,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCredentialRulesSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6653,11 +6662,12 @@ labels.
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeNumberOfCredentialsSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLanguageWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -6670,10 +6680,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLanguageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLEDSettingsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6687,10 +6697,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLEDSettingsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAutoRelockTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6704,10 +6714,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAutoRelockTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSoundVolumeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6721,10 +6731,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoundVolumeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOperatingModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6738,10 +6748,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedOperatingModesWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -6750,11 +6760,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedOperatingModesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDefaultConfigurationRegisterWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6763,11 +6773,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDefaultConfigurationRegisterWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnableLocalProgrammingWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6780,11 +6791,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnableLocalProgrammingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnableOneTouchLockingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6797,11 +6808,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnableOneTouchLockingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnableInsideStatusLEDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6814,11 +6825,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnableInsideStatusLEDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnablePrivacyModeButtonWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6831,11 +6842,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnablePrivacyModeButtonWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLocalProgrammingFeaturesWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6848,11 +6859,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLocalProgrammingFeaturesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWrongCodeEntryLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6865,11 +6876,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeWrongCodeEntryLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUserCodeTemporaryDisableTimeWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6883,11 +6894,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUserCodeTemporaryDisableTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSendPINOverTheAirWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6900,11 +6912,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSendPINOverTheAirWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRequirePINforRemoteOperationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -6918,11 +6930,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRequirePINforRemoteOperationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeExpiringUserTimeoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6935,11 +6948,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeExpiringUserTimeoutWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6947,11 +6960,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6959,11 +6972,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -6971,10 +6984,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6983,10 +6996,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -6995,11 +7008,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -7040,10 +7053,10 @@ labels.
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalClosedLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7052,11 +7065,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhysicalClosedLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalClosedLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7064,11 +7077,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhysicalClosedLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionLiftWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7076,11 +7089,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPositionLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionTiltWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7088,11 +7101,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPositionTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfActuationsLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7100,11 +7113,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfActuationsLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfActuationsTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7112,11 +7125,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfActuationsTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeConfigStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7124,10 +7137,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeConfigStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionLiftPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7137,11 +7150,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPositionLiftPercentageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionTiltPercentageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7150,11 +7164,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPositionTiltPercentageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOperationalStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7162,11 +7177,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOperationalStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTargetPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7176,11 +7191,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTargetPositionLiftPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTargetPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7191,11 +7207,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTargetPositionTiltPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEndProductTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7204,10 +7221,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEndProductTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7218,11 +7235,12 @@ labels.
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionLiftPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7233,11 +7251,12 @@ labels.
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionTiltPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstalledOpenLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7246,11 +7265,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstalledOpenLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstalledClosedLimitLiftWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7258,11 +7277,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstalledClosedLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstalledOpenLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7270,11 +7289,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstalledOpenLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstalledClosedLimitTiltWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7282,11 +7301,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstalledClosedLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7298,10 +7317,10 @@ labels.
                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                            reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7310,10 +7329,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSafetyStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -7322,11 +7341,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7334,11 +7353,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7346,10 +7365,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7358,10 +7377,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7370,11 +7389,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -7403,11 +7422,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierMovingStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierSafetyStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7415,11 +7434,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierSafetyStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7427,11 +7446,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierCapabilitiesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7444,11 +7463,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierCloseEventsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7461,11 +7480,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierCloseEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierCommandOpenEventsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7478,11 +7497,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierCommandOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierCommandCloseEventsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -7495,11 +7514,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierCommandCloseEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierOpenPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7512,11 +7531,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierOpenPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierClosePeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7529,11 +7548,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierClosePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBarrierPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7541,11 +7560,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBarrierPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7553,11 +7572,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7565,11 +7584,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7577,10 +7596,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7589,10 +7608,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7601,11 +7620,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -7628,10 +7647,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7640,10 +7659,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7652,10 +7671,10 @@ labels.
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7664,11 +7683,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinConstPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxConstPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7676,11 +7695,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxConstPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7688,11 +7707,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinCompPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxCompPressureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7700,11 +7719,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxCompPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7712,10 +7731,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxConstSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7724,10 +7743,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7736,10 +7755,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxConstFlowWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7748,10 +7767,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7760,10 +7779,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstTempWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxConstTempWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7772,10 +7791,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstTempWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePumpStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7784,10 +7803,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePumpStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEffectiveOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7796,11 +7815,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEffectiveOperationModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEffectiveControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7808,11 +7827,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEffectiveControlModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7820,10 +7839,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7832,10 +7851,10 @@ labels.
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLifetimeRunningHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7849,11 +7868,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLifetimeRunningHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7861,10 +7880,10 @@ labels.
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLifetimeEnergyConsumedWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -7878,11 +7897,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLifetimeEnergyConsumedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7895,10 +7914,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOperationModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeControlModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7912,10 +7931,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeControlModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -7924,11 +7943,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7936,11 +7955,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -7948,10 +7967,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7960,10 +7979,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -7972,11 +7991,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -8010,11 +8029,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLocalTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOutdoorTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8022,11 +8041,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOutdoorTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupancyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8034,10 +8053,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupancyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAbsMinHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -8046,11 +8065,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAbsMinHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8058,11 +8077,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAbsMaxHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAbsMinCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8070,11 +8089,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAbsMinCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8082,11 +8101,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAbsMaxCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePICoolingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8094,11 +8113,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePICoolingDemandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePIHeatingDemandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8106,11 +8125,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePIHeatingDemandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHVACSystemTypeConfigurationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8123,11 +8142,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHVACSystemTypeConfigurationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLocalTemperatureCalibrationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8140,11 +8159,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLocalTemperatureCalibrationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupiedCoolingSetpointWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8157,11 +8176,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupiedCoolingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupiedHeatingSetpointWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8174,11 +8193,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupiedHeatingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnoccupiedCoolingSetpointWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8191,11 +8210,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUnoccupiedCoolingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnoccupiedHeatingSetpointWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8208,11 +8227,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUnoccupiedHeatingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8225,11 +8244,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxHeatSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8242,11 +8261,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8259,11 +8278,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxCoolSetpointLimitWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8276,11 +8295,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinSetpointDeadBandWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8293,11 +8312,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinSetpointDeadBandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRemoteSensingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8310,10 +8329,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemoteSensingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeControlSequenceOfOperationWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -8327,11 +8346,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeControlSequenceOfOperationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSystemModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8343,10 +8362,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSystemModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeThermostatRunningModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8355,11 +8374,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeThermostatRunningModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartOfWeekWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8367,10 +8386,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartOfWeekWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfWeeklyTransitionsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -8379,11 +8398,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfWeeklyTransitionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfDailyTransitionsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8391,11 +8410,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfDailyTransitionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTemperatureSetpointHoldWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8408,11 +8427,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTemperatureSetpointHoldWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTemperatureSetpointHoldDurationWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8427,11 +8446,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTemperatureSetpointHoldDurationWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeThermostatProgrammingOperationModeWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -8447,11 +8467,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeThermostatProgrammingOperationModeWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeThermostatRunningStateWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -8460,11 +8481,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeThermostatRunningStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSetpointChangeSourceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8472,11 +8493,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSetpointChangeSourceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSetpointChangeAmountWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8484,11 +8505,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSetpointChangeAmountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSetpointChangeSourceTimestampWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -8497,11 +8518,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSetpointChangeSourceTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8514,11 +8536,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupiedSetbackWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8526,11 +8548,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupiedSetbackMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8538,11 +8560,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupiedSetbackMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnoccupiedSetbackWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8555,11 +8577,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUnoccupiedSetbackWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnoccupiedSetbackMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8567,11 +8589,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUnoccupiedSetbackMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnoccupiedSetbackMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8579,11 +8601,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeUnoccupiedSetbackMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEmergencyHeatDeltaWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8596,11 +8618,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEmergencyHeatDeltaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8612,10 +8634,10 @@ labels.
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACCapacityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8628,10 +8650,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACRefrigerantTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8645,11 +8667,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeACRefrigerantTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACCompressorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8662,11 +8684,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeACCompressorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACErrorCodeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8679,10 +8701,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACErrorCodeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACLouverPositionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8696,11 +8718,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeACLouverPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACCoilTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8708,11 +8730,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeACCoilTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeACCapacityformatWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8725,11 +8747,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeACCapacityformatWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8737,11 +8759,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8749,11 +8771,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8761,10 +8783,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8773,10 +8795,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8785,11 +8807,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -8816,10 +8838,10 @@ labels.
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFanModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFanModeSequenceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8833,11 +8855,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeFanModeSequenceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePercentSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8850,10 +8872,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePercentSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePercentCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8862,10 +8884,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePercentCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSpeedMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8874,10 +8896,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSpeedSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8891,10 +8913,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8903,10 +8925,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRockSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8915,10 +8937,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRockSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRockSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8932,10 +8954,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRockSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWindSupportWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8944,10 +8966,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWindSettingWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -8961,10 +8983,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -8973,11 +8995,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8985,11 +9007,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -8997,10 +9019,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9009,10 +9031,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9021,11 +9043,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -9053,11 +9075,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTemperatureDisplayModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeKeypadLockoutWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9070,10 +9092,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeKeypadLockoutWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeScheduleProgrammingVisibilityWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -9088,11 +9110,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeScheduleProgrammingVisibilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9100,11 +9123,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9112,11 +9135,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9124,10 +9147,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9136,10 +9159,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9148,11 +9171,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -9214,10 +9237,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentSaturationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9226,11 +9249,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentSaturationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRemainingTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9238,10 +9261,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemainingTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9250,10 +9273,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9262,10 +9285,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDriftCompensationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9274,11 +9297,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDriftCompensationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCompensationTextWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9286,11 +9309,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCompensationTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSString * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorTemperatureMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -9298,11 +9321,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorTemperatureMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9310,10 +9333,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOptionsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9326,10 +9349,10 @@ labels.
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOptionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNumberOfPrimariesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9338,11 +9361,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfPrimariesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary1XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9350,10 +9373,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary1XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary1YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9362,10 +9385,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary1YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary1IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9374,11 +9397,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary1IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary2XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9386,10 +9409,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary2XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary2YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9398,10 +9421,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary2YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary2IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9410,11 +9433,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary2IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary3XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9422,10 +9445,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary3XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary3YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9434,10 +9457,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary3YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary3IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9446,11 +9469,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary3IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary4XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9458,10 +9481,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary4XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary4YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9470,10 +9493,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary4YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary4IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9482,11 +9505,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary4IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary5XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9494,10 +9517,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary5XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary5YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9506,10 +9529,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary5YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary5IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9518,11 +9541,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary5IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary6XWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9530,10 +9553,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary6XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary6YWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9542,10 +9565,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary6YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePrimary6IntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9554,11 +9577,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePrimary6IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWhitePointXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9571,10 +9594,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWhitePointXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWhitePointYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9588,10 +9611,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWhitePointYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointRXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9605,10 +9628,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointRXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointRYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9622,10 +9645,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointRYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointRIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9639,11 +9662,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorPointRIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointGXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9656,10 +9679,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointGXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointGYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9673,10 +9696,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointGYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointGIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9690,11 +9713,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorPointGIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointBXWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9707,10 +9730,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointBXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointBYWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9724,10 +9747,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointBYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorPointBIntensityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9741,11 +9764,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorPointBIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnhancedCurrentHueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9753,11 +9776,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnhancedCurrentHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnhancedColorModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9765,11 +9788,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEnhancedColorModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorLoopActiveWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9777,11 +9800,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorLoopActiveWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorLoopDirectionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9789,11 +9812,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorLoopDirectionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorLoopTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9801,10 +9824,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorLoopTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorLoopStartEnhancedHueWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -9813,11 +9836,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorLoopStartEnhancedHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorLoopStoredEnhancedHueWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -9825,11 +9848,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorLoopStoredEnhancedHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorCapabilitiesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9837,11 +9860,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorCapabilitiesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorTempPhysicalMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -9849,11 +9872,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorTempPhysicalMinMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -9861,11 +9884,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeColorTempPhysicalMaxMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -9875,11 +9898,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeCoupleColorTempToLevelMinMiredsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartUpColorTemperatureMiredsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -9894,11 +9918,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeStartUpColorTemperatureMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9906,11 +9931,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9918,11 +9943,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9930,10 +9955,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9942,10 +9967,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -9954,11 +9979,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -9981,11 +10006,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhysicalMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -9993,11 +10018,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhysicalMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBallastStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10005,10 +10030,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBallastStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10021,10 +10046,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10037,10 +10062,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeIntrinsicBalanceFactorWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -10054,11 +10079,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeIntrinsicBalanceFactorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBallastFactorAdjustmentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -10071,11 +10096,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBallastFactorAdjustmentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampQuantityWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10083,10 +10108,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampQuantityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampTypeWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -10099,10 +10124,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampManufacturerWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -10116,11 +10141,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLampManufacturerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSString * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampRatedHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10133,10 +10158,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampRatedHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampBurnHoursWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10150,10 +10175,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampBurnHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampAlarmModeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10167,10 +10192,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampAlarmModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLampBurnHoursTripPointWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -10184,11 +10209,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLampBurnHoursTripPointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10196,23 +10221,23 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10220,10 +10245,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10232,10 +10257,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10244,11 +10269,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10271,10 +10296,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10283,11 +10308,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10295,11 +10320,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10307,10 +10332,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLightSensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10319,11 +10344,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLightSensorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10331,11 +10356,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10343,11 +10368,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10355,10 +10380,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10367,10 +10392,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10379,11 +10404,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10406,10 +10431,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10418,11 +10443,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10430,11 +10455,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10442,10 +10467,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -10454,11 +10479,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10466,11 +10491,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10478,10 +10503,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10490,10 +10515,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10502,11 +10527,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10529,10 +10554,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10541,11 +10566,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10553,11 +10578,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10565,10 +10590,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10577,10 +10602,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10589,10 +10614,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxScaledValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10601,10 +10626,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeScaledToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10613,11 +10638,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeScaledToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeScaleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10625,10 +10650,10 @@ labels.
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScaleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -10637,11 +10662,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10649,11 +10674,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10661,10 +10686,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10673,10 +10698,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10685,11 +10710,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10712,10 +10737,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10724,11 +10749,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10736,11 +10761,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10748,10 +10773,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -10760,11 +10785,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10772,11 +10797,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10784,10 +10809,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10796,10 +10821,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10808,11 +10833,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10835,10 +10860,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMinMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10847,11 +10872,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMaxMeasuredValueWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10859,11 +10884,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeToleranceWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10871,10 +10896,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -10883,11 +10908,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10895,11 +10920,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -10907,10 +10932,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10919,10 +10944,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10931,11 +10956,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -10958,10 +10983,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupancyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupancySensorTypeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -10970,11 +10995,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupancySensorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOccupancySensorTypeBitmapWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -10982,11 +11007,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOccupancySensorTypeBitmapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePirOccupiedToUnoccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -11000,11 +11025,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePirOccupiedToUnoccupiedDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePirUnoccupiedToOccupiedDelayWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -11018,11 +11044,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePirUnoccupiedToOccupiedDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePirUnoccupiedToOccupiedThresholdWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -11037,11 +11064,12 @@ labels.
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributePirUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletion:
@@ -11057,11 +11085,12 @@ labels.
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletion:
@@ -11077,11 +11106,12 @@ labels.
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletion:
@@ -11097,11 +11127,12 @@ labels.
                                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                 NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                      endpoint:(NSNumber *)endpoint
-                                                                         queue:(dispatch_queue_t)queue
-                                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                                   NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                         endpoint:(NSNumber *)endpoint
+                                                                            queue:(dispatch_queue_t)queue
+                                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                                      NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletion:
@@ -11117,12 +11148,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletion:
@@ -11138,12 +11169,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletion:
@@ -11159,12 +11190,12 @@ labels.
                                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                      NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                           endpoint:(NSNumber *)endpoint
-                                                                              queue:(dispatch_queue_t)queue
-                                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                                        NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                              endpoint:(NSNumber *)endpoint
+                                                                                 queue:(dispatch_queue_t)queue
+                                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                                           NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -11173,11 +11204,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11185,11 +11216,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11197,10 +11228,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11209,10 +11240,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11221,11 +11252,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11248,10 +11279,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMACAddressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -11260,11 +11291,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11272,11 +11303,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11284,10 +11315,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11296,10 +11327,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11308,11 +11339,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11343,10 +11374,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLineupWithCompletion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
@@ -11355,11 +11386,11 @@ labels.
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
-                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLineupWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
+                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentChannelWithCompletion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -11367,11 +11398,11 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
-                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentChannelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
+                                                             NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11379,11 +11410,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11391,11 +11422,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11403,10 +11434,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11415,10 +11446,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11427,11 +11458,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11458,10 +11489,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTargetListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentTargetWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11470,10 +11501,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentTargetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -11482,11 +11513,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11494,11 +11525,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11506,10 +11537,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11518,10 +11549,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11530,11 +11561,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11608,10 +11639,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStartTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11620,10 +11651,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDurationWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11632,10 +11663,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDurationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSampledPositionWithCompletion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
@@ -11644,11 +11675,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                         NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
-                                                           NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSampledPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePlaybackSpeedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11656,10 +11687,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePlaybackSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSeekRangeEndWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11668,11 +11699,11 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSeekRangeEndWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSeekRangeStartWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11680,10 +11711,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSeekRangeStartWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -11692,11 +11723,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11704,11 +11735,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11716,10 +11747,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11728,10 +11759,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11740,11 +11771,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11778,10 +11809,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInputListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentInputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11790,10 +11821,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentInputWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -11802,11 +11833,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11814,11 +11845,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11826,10 +11857,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11838,10 +11869,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11850,11 +11881,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11881,11 +11912,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11893,11 +11924,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11905,10 +11936,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11917,10 +11948,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11929,11 +11960,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -11960,11 +11991,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11972,11 +12003,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -11984,10 +12015,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -11996,10 +12027,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12008,11 +12039,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12042,10 +12073,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptHeaderWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeSupportedStreamingProtocolsWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -12059,11 +12090,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedStreamingProtocolsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12071,11 +12102,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12083,11 +12114,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12095,10 +12126,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12107,10 +12138,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12119,11 +12150,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12151,10 +12182,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOutputListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentOutputWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12163,10 +12194,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentOutputWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -12175,11 +12206,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12187,11 +12218,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12199,10 +12230,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12211,10 +12242,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12223,11 +12254,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12260,10 +12291,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCatalogListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentAppWithCompletion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
@@ -12277,11 +12308,11 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
-                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentAppWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
+                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12289,11 +12320,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12301,11 +12332,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12313,10 +12344,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12325,10 +12356,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12337,11 +12368,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12365,10 +12396,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12377,10 +12408,10 @@ labels.
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApplicationNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -12389,11 +12420,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApplicationNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSString * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12401,10 +12432,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApplicationWithCompletion:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
@@ -12413,12 +12444,12 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:
-                                            (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
-                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApplicationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:
+                                               (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
+                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStatusWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12426,10 +12457,10 @@ labels.
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApplicationVersionWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -12438,11 +12469,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSString * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApplicationVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSString * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAllowedVendorListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12450,11 +12481,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAllowedVendorListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSArray * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12462,11 +12493,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12474,11 +12505,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12486,10 +12517,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12498,10 +12529,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12510,11 +12541,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12547,11 +12578,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12559,11 +12590,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12571,10 +12602,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12583,10 +12614,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12595,11 +12626,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -12629,11 +12660,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasurementTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12641,10 +12672,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12653,10 +12684,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12665,10 +12696,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12677,10 +12708,10 @@ labels.
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12689,10 +12720,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12701,10 +12732,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12713,10 +12744,10 @@ labels.
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcPowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12725,10 +12756,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcPowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12737,10 +12768,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12749,11 +12780,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDcVoltageMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12761,11 +12792,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDcVoltageDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12773,11 +12804,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDcCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12785,11 +12816,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDcCurrentDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12797,11 +12828,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDcPowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeDcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12809,10 +12840,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcFrequencyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12821,10 +12852,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcFrequencyMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12833,10 +12864,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcFrequencyMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12845,10 +12876,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNeutralCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12857,10 +12888,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNeutralCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTotalActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -12869,11 +12900,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTotalActivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTotalReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12881,11 +12912,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTotalReactivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTotalApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -12893,11 +12924,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTotalApparentPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12905,11 +12936,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured1stHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12917,11 +12948,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured3rdHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12929,11 +12960,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured5thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12941,11 +12972,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured7thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12953,11 +12984,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured9thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasured11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12965,11 +12996,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeMeasured11thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -12979,11 +13010,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase1stHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -12994,11 +13026,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13009,11 +13042,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase5thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13024,11 +13058,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase7thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13039,11 +13074,12 @@ labels.
                                                       reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase9thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13054,11 +13090,12 @@ labels.
                                                        reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase11thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcFrequencyMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13067,11 +13104,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcFrequencyMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcFrequencyDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13079,11 +13116,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcFrequencyDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13091,11 +13128,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13103,10 +13140,10 @@ labels.
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13115,11 +13152,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHarmonicCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13128,11 +13165,12 @@ labels.
                                                (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                      reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                             endpoint:(NSNumber *)endpoint
-                                                                queue:(dispatch_queue_t)queue
-                                                           completion:(void (^)(NSNumber * _Nullable value,
-                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhaseHarmonicCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                endpoint:(NSNumber *)endpoint
+                                                                   queue:(dispatch_queue_t)queue
+                                                              completion:(void (^)(NSNumber * _Nullable value,
+                                                                             NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstantaneousVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13140,11 +13178,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstantaneousVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstantaneousLineCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13152,11 +13190,11 @@ labels.
                                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                  NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstantaneousLineCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstantaneousActiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13164,11 +13202,11 @@ labels.
                                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                  reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstantaneousActiveCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstantaneousReactiveCurrentWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13177,11 +13215,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstantaneousReactiveCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInstantaneousPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13189,11 +13228,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInstantaneousPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13201,10 +13240,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13213,10 +13252,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13225,10 +13264,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13237,10 +13276,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13249,10 +13288,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13261,10 +13300,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13273,10 +13312,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMinWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13285,10 +13324,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMaxWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13297,10 +13336,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReactivePowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13309,10 +13348,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApparentPowerWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13321,10 +13360,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApparentPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerFactorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13333,10 +13372,10 @@ labels.
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerFactorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13352,11 +13391,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsUnderVoltageCounterWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13371,11 +13411,12 @@ labels.
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAverageRmsUnderVoltageCounterWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13388,11 +13429,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsExtremeOverVoltagePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13406,11 +13447,12 @@ labels.
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsExtremeUnderVoltagePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSagPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13423,11 +13465,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSagPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSwellPeriodWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13440,11 +13482,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSwellPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcVoltageMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13452,23 +13494,23 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
-
++ (void)readAttributeAcVoltageMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
 - (void)readAttributeAcVoltageDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcVoltageDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcCurrentMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13476,11 +13518,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcCurrentDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13488,11 +13530,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcCurrentDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcPowerMultiplierWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13500,11 +13542,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcPowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcPowerDivisorWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13512,10 +13554,10 @@ labels.
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcPowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13529,11 +13571,11 @@ labels.
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOverloadAlarmsMaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13541,11 +13583,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeVoltageOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13553,11 +13595,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcOverloadAlarmsMaskWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13570,11 +13612,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcOverloadAlarmsMaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcVoltageOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13582,11 +13624,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcVoltageOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcCurrentOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13594,11 +13636,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcCurrentOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcActivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13606,11 +13648,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcActivePowerOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcReactivePowerOverloadWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13618,11 +13660,11 @@ labels.
                                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                               reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                 NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcReactivePowerOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13630,11 +13672,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAverageRmsOverVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsUnderVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13642,11 +13684,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAverageRmsUnderVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeOverVoltageWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13654,11 +13696,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsExtremeOverVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeUnderVoltageWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13666,11 +13708,11 @@ labels.
                                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                              reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:(void (^)(NSNumber * _Nullable value,
-                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsExtremeUnderVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSagWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13678,10 +13720,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSagWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSwellWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -13690,11 +13732,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSwellWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLineCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13702,11 +13744,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLineCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13714,11 +13756,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReactiveCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13726,11 +13768,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeReactiveCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltagePhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13738,11 +13780,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltagePhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13750,11 +13792,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13762,11 +13804,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13774,11 +13816,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13786,11 +13828,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13798,11 +13840,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13810,11 +13852,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMinPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13822,11 +13864,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMaxPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13834,11 +13876,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReactivePowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13846,11 +13888,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeReactivePowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApparentPowerPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13858,11 +13900,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApparentPowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerFactorPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13870,11 +13912,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePowerFactorPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13884,12 +13926,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13900,11 +13942,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletion:
@@ -13915,11 +13958,12 @@ labels.
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13930,11 +13974,12 @@ labels.
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13945,11 +13990,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -13958,11 +14004,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSagPeriodPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -13970,11 +14016,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSwellPeriodPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLineCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13982,11 +14028,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeLineCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -13994,11 +14040,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActiveCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReactiveCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14006,11 +14052,11 @@ labels.
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeReactiveCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltagePhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14018,11 +14064,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltagePhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14030,11 +14076,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14042,11 +14088,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14054,11 +14100,11 @@ labels.
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14066,11 +14112,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsCurrentMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14078,11 +14124,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsCurrentMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14090,11 +14136,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMinPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14102,11 +14148,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeActivePowerMaxPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14114,11 +14160,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeActivePowerMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeReactivePowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14126,11 +14172,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeReactivePowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeApparentPowerPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14138,11 +14184,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeApparentPowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributePowerFactorPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14150,11 +14196,11 @@ labels.
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributePowerFactorPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletion:
     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -14164,12 +14210,12 @@ labels.
                                                                reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                                  NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -14180,11 +14226,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletion:
@@ -14195,11 +14242,12 @@ labels.
                                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -14210,11 +14258,12 @@ labels.
                                                         reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -14225,11 +14274,12 @@ labels.
                                                          reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
@@ -14238,11 +14288,11 @@ labels.
                                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                 reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                   NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSagPeriodPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -14250,11 +14300,11 @@ labels.
                                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                   reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRmsVoltageSwellPeriodPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14262,11 +14312,11 @@ labels.
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14274,11 +14324,11 @@ labels.
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14286,10 +14336,10 @@ labels.
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14298,10 +14348,10 @@ labels.
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14310,11 +14360,11 @@ labels.
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -14417,10 +14467,10 @@ MTR_NEWLY_AVAILABLE
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14433,10 +14483,10 @@ MTR_NEWLY_AVAILABLE
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14449,10 +14499,10 @@ MTR_NEWLY_AVAILABLE
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14465,10 +14515,10 @@ MTR_NEWLY_AVAILABLE
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap32WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14481,10 +14531,10 @@ MTR_NEWLY_AVAILABLE
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap64WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14497,10 +14547,10 @@ MTR_NEWLY_AVAILABLE
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14513,10 +14563,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14529,10 +14579,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt24uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14545,10 +14595,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt32uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14561,10 +14611,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt40uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14577,10 +14627,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt48uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14593,10 +14643,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt56uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14609,10 +14659,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt64uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14625,10 +14675,10 @@ MTR_NEWLY_AVAILABLE
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14641,10 +14691,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14657,10 +14707,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt24sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14673,10 +14723,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt32sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14689,10 +14739,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt40sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14705,10 +14755,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt48sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14721,10 +14771,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt56sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14737,10 +14787,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt64sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14753,10 +14803,10 @@ MTR_NEWLY_AVAILABLE
                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                             reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnum8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14769,10 +14819,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnum16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14786,10 +14836,10 @@ MTR_NEWLY_AVAILABLE
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFloatSingleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14803,10 +14853,10 @@ MTR_NEWLY_AVAILABLE
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFloatDoubleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
@@ -14819,10 +14869,10 @@ MTR_NEWLY_AVAILABLE
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListInt8uWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -14835,10 +14885,10 @@ MTR_NEWLY_AVAILABLE
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -14852,10 +14902,10 @@ MTR_NEWLY_AVAILABLE
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListStructOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -14869,11 +14919,11 @@ MTR_NEWLY_AVAILABLE
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSArray * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSArray * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeListStructOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSArray * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLongOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -14886,10 +14936,10 @@ MTR_NEWLY_AVAILABLE
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLongOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -14902,10 +14952,10 @@ MTR_NEWLY_AVAILABLE
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeLongCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
@@ -14919,10 +14969,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLongCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEpochUsWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14935,10 +14985,10 @@ MTR_NEWLY_AVAILABLE
                     subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                               reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEpochUsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEpochSWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14951,10 +15001,10 @@ MTR_NEWLY_AVAILABLE
                    subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                              reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEpochSWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeVendorIdWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -14967,10 +15017,10 @@ MTR_NEWLY_AVAILABLE
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListNullablesAndOptionalsStructWithCompletion:(void (^)(NSArray * _Nullable value,
@@ -14986,11 +15036,12 @@ MTR_NEWLY_AVAILABLE
                                                       reportHandler:(void (^)(NSArray * _Nullable value,
                                                                         NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSArray * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeListNullablesAndOptionalsStructWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSArray * _Nullable value,
+                                                                              NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15003,10 +15054,10 @@ MTR_NEWLY_AVAILABLE
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnumAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeStructAttrWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
@@ -15020,11 +15071,11 @@ MTR_NEWLY_AVAILABLE
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                    NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
-                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeStructAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15037,11 +15088,11 @@ MTR_NEWLY_AVAILABLE
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRangeRestrictedInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15054,11 +15105,11 @@ MTR_NEWLY_AVAILABLE
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSNumber * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSNumber * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRangeRestrictedInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSNumber * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15071,11 +15122,11 @@ MTR_NEWLY_AVAILABLE
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRangeRestrictedInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15088,11 +15139,11 @@ MTR_NEWLY_AVAILABLE
                                   subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                             reportHandler:(void (^)(NSNumber * _Nullable value,
                                                               NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:(void (^)(NSNumber * _Nullable value,
-                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeRangeRestrictedInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:(void (^)(NSNumber * _Nullable value,
+                                                                    NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListLongOctetStringWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15105,11 +15156,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeListLongOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)params
                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -15123,11 +15174,11 @@ MTR_NEWLY_AVAILABLE
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeListFabricScopedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSArray * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeTimedWriteBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15140,11 +15191,11 @@ MTR_NEWLY_AVAILABLE
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTimedWriteBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneralErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15157,11 +15208,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneralErrorBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterErrorBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15174,11 +15225,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterErrorBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeUnsupportedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15191,10 +15242,10 @@ MTR_NEWLY_AVAILABLE
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUnsupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableBooleanWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15208,11 +15259,11 @@ MTR_NEWLY_AVAILABLE
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableBitmap8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15225,11 +15276,11 @@ MTR_NEWLY_AVAILABLE
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableBitmap8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableBitmap16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15242,11 +15293,11 @@ MTR_NEWLY_AVAILABLE
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableBitmap16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableBitmap32WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15259,11 +15310,11 @@ MTR_NEWLY_AVAILABLE
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableBitmap32WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableBitmap64WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15276,11 +15327,11 @@ MTR_NEWLY_AVAILABLE
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableBitmap64WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15293,10 +15344,10 @@ MTR_NEWLY_AVAILABLE
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt16uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15308,12 +15359,12 @@ MTR_NEWLY_AVAILABLE
                                    completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams *)params
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-    MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt24uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15327,10 +15378,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt24uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt32uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15344,10 +15395,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt32uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt40uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15361,10 +15412,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt40uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt48uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15378,10 +15429,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt48uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt56uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15395,10 +15446,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt56uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt64uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15412,10 +15463,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt64uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt8sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15429,10 +15480,10 @@ MTR_NEWLY_AVAILABLE
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt16sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15446,10 +15497,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt24sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15463,10 +15514,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt24sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt32sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15480,10 +15531,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt32sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt40sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15497,10 +15548,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt40sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt48sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15514,10 +15565,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt48sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt56sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15531,10 +15582,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt56sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableInt64sWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15548,10 +15599,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt64sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableEnum8WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15565,10 +15616,10 @@ MTR_NEWLY_AVAILABLE
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableEnum8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableEnum16WithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15582,10 +15633,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableEnum16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableFloatSingleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15599,11 +15650,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableFloatSingleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableFloatDoubleWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15616,11 +15667,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSNumber * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableFloatDoubleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableOctetStringWithCompletion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15633,11 +15684,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSData * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableCharStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15650,11 +15701,11 @@ MTR_NEWLY_AVAILABLE
                                subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                          reportHandler:(void (^)(NSString * _Nullable value,
                                                            NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:(void (^)(NSString * _Nullable value,
-                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:(void (^)(NSString * _Nullable value,
+                                                                 NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableEnumAttrWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15667,11 +15718,11 @@ MTR_NEWLY_AVAILABLE
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                        reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableEnumAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableStructWithCompletion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -15684,11 +15735,11 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
                                                        NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
-                                                          NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableStructWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                                             NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableRangeRestrictedInt8uWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -15702,11 +15753,12 @@ MTR_NEWLY_AVAILABLE
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableRangeRestrictedInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableRangeRestrictedInt8sWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                     NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -15720,11 +15772,12 @@ MTR_NEWLY_AVAILABLE
                                              (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                    reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableRangeRestrictedInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableRangeRestrictedInt16uWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -15738,11 +15791,12 @@ MTR_NEWLY_AVAILABLE
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableRangeRestrictedInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeNullableRangeRestrictedInt16sWithCompletion:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
@@ -15756,11 +15810,12 @@ MTR_NEWLY_AVAILABLE
                                               (MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                                     reportHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNullableRangeRestrictedInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
+    MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeWriteOnlyInt8uWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15773,10 +15828,10 @@ MTR_NEWLY_AVAILABLE
                            subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                      reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWriteOnlyInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
@@ -15785,11 +15840,11 @@ MTR_NEWLY_AVAILABLE
                                  subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                            reportHandler:(void (^)(NSArray * _Nullable value,
                                                              NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:(void (^)(NSArray * _Nullable value,
-                                                                NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:(void (^)(NSArray * _Nullable value,
+                                                                   NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15797,11 +15852,11 @@ MTR_NEWLY_AVAILABLE
                                 subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                           reportHandler:(void (^)(NSArray * _Nullable value,
                                                             NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSArray * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:(void (^)(NSArray * _Nullable value,
+                                                                  NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -15809,10 +15864,10 @@ MTR_NEWLY_AVAILABLE
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15821,10 +15876,10 @@ MTR_NEWLY_AVAILABLE
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
@@ -15833,11 +15888,11 @@ MTR_NEWLY_AVAILABLE
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
     MTR_NEWLY_AVAILABLE;
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-    MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                              NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 58ebfb94160ee6..cd17c0221c3ee9 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -17,12 +17,12 @@
 
 #import 
 
-#import "MTRAttributeCacheContainer_Internal.h"
 #import "MTRBaseClustersCpp_Internal.h"
 #import "MTRBaseClusters_internal.h"
 #import "MTRBaseDevice.h"
 #import "MTRBaseDevice_Internal.h"
 #import "MTRCallbackBridge_internal.h"
+#import "MTRClusterStateCacheContainer_Internal.h"
 #import "MTRCluster_internal.h"
 #import "MTRCommandPayloadsObjc.h"
 #import "MTRStructsObjc.h"
@@ -167,21 +167,21 @@ - (void)subscribeAttributeIdentifyTimeWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeIdentifyTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Identify::Attributes::IdentifyTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -209,21 +209,21 @@ - (void)subscribeAttributeIdentifyTypeWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeIdentifyTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Identify::Attributes::IdentifyType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -252,23 +252,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIdentifyGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(IdentifyGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Identify::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -297,23 +297,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIdentifyAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(IdentifyAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Identify::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -341,21 +341,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIdentifyAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(IdentifyAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Identify::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -383,21 +383,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Identify::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -425,21 +425,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Identify::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -507,13 +508,13 @@ + (void)readAttributeIdentifyTimeWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIdentifyTimeWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeIdentifyTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeIdentifyTypeWithCompletionHandler:(void (^)(
@@ -550,13 +551,13 @@ + (void)readAttributeIdentifyTypeWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIdentifyTypeWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeIdentifyTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -595,13 +596,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -640,13 +641,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -683,13 +684,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -725,13 +726,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -769,13 +770,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -1006,21 +1007,21 @@ - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNameSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Groups::Attributes::NameSupport::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -1049,23 +1050,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Groups::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -1094,22 +1095,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(GroupsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Groups::Attributes::AcceptedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -1137,21 +1138,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(GroupsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Groups::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -1179,21 +1180,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Groups::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -1221,21 +1222,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Groups::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -1339,13 +1341,13 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNameSupportWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeNameSupportWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -1384,13 +1386,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -1429,13 +1431,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -1472,13 +1474,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -1514,13 +1516,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -1558,13 +1560,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -2042,21 +2044,21 @@ - (void)subscribeAttributeSceneCountWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSceneCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::SceneCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2084,21 +2086,21 @@ - (void)subscribeAttributeCurrentSceneWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentSceneWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::CurrentScene::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2126,21 +2128,21 @@ - (void)subscribeAttributeCurrentGroupWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentGroupWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::CurrentGroup::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2168,21 +2170,21 @@ - (void)subscribeAttributeSceneValidWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSceneValidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::SceneValid::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2210,21 +2212,21 @@ - (void)subscribeAttributeNameSupportWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNameSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::NameSupport::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2252,21 +2254,22 @@ - (void)subscribeAttributeLastConfiguredByWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLastConfiguredByWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::LastConfiguredBy::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2295,23 +2298,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRScenesGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ScenesGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Scenes::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -2340,22 +2343,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRScenesAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ScenesAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::AcceptedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2383,21 +2386,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRScenesAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ScenesAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2425,21 +2428,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2467,21 +2470,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Scenes::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -2625,13 +2629,13 @@ + (void)readAttributeSceneCountWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSceneCountWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeSceneCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentSceneWithCompletionHandler:(void (^)(
@@ -2668,13 +2672,13 @@ + (void)readAttributeCurrentSceneWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentSceneWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentSceneWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCurrentGroupWithCompletionHandler:(void (^)(
@@ -2711,13 +2715,13 @@ + (void)readAttributeCurrentGroupWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentGroupWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentGroupWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSceneValidWithCompletionHandler:(void (^)(
@@ -2753,13 +2757,13 @@ + (void)readAttributeSceneValidWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSceneValidWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeSceneValidWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeNameSupportWithCompletionHandler:(void (^)(
@@ -2796,13 +2800,13 @@ + (void)readAttributeNameSupportWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNameSupportWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeNameSupportWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeLastConfiguredByWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -2840,13 +2844,13 @@ + (void)readAttributeLastConfiguredByWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastConfiguredByWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeLastConfiguredByWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -2885,13 +2889,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -2930,13 +2934,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -2973,13 +2977,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -3015,13 +3019,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -3059,13 +3063,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -3294,21 +3298,21 @@ - (void)subscribeAttributeOnOffWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::OnOff::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3337,22 +3341,22 @@ - (void)subscribeAttributeGlobalSceneControlWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGlobalSceneControlWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::GlobalSceneControl::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3417,21 +3421,21 @@ - (void)subscribeAttributeOnTimeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::OnTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3496,21 +3500,21 @@ - (void)subscribeAttributeOffWaitTimeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOffWaitTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::OffWaitTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3580,22 +3584,22 @@ - (void)subscribeAttributeStartUpOnOffWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartUpOnOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOnOffClusterOnOffStartUpOnOffAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableOnOffClusterOnOffStartUpOnOffAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OnOff::Attributes::StartUpOnOff::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -3624,22 +3628,22 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(OnOffGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::GeneratedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3668,22 +3672,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(OnOffAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::AcceptedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3711,21 +3715,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(OnOffAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3753,21 +3757,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3795,21 +3799,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOff::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -3899,13 +3904,13 @@ + (void)readAttributeOnOffWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnOffWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeOnOffWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeGlobalSceneControlWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -3944,13 +3949,13 @@ + (void)readAttributeGlobalSceneControlWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGlobalSceneControlWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeGlobalSceneControlWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeOnTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -3995,13 +4000,13 @@ + (void)readAttributeOnTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnTimeWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeOnTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeOffWaitTimeWithCompletionHandler:(void (^)(
@@ -4048,13 +4053,13 @@ + (void)readAttributeOffWaitTimeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOffWaitTimeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeOffWaitTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeStartUpOnOffWithCompletionHandler:(void (^)(
@@ -4101,13 +4106,13 @@ + (void)readAttributeStartUpOnOffWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpOnOffWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeStartUpOnOffWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -4146,13 +4151,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -4191,13 +4196,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -4234,13 +4239,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -4276,13 +4281,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -4320,13 +4325,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -4369,21 +4374,21 @@ - (void)subscribeAttributeSwitchTypeWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSwitchTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -4448,21 +4453,21 @@ - (void)subscribeAttributeSwitchActionsWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSwitchActionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOffSwitchConfiguration::Attributes::SwitchActions::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -4492,23 +4497,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffSwitchConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OnOffSwitchConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OnOffSwitchConfiguration::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -4538,23 +4543,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffSwitchConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OnOffSwitchConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OnOffSwitchConfiguration::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -4582,22 +4587,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROnOffSwitchConfigurationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OnOffSwitchConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OnOffSwitchConfiguration::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -4625,21 +4630,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOffSwitchConfiguration::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -4667,21 +4672,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OnOffSwitchConfiguration::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -4728,13 +4734,13 @@ + (void)readAttributeSwitchTypeWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSwitchTypeWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeSwitchTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeSwitchActionsWithCompletionHandler:(void (^)(
@@ -4782,13 +4788,13 @@ + (void)readAttributeSwitchActionsWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSwitchActionsWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeSwitchActionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -4827,13 +4833,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -4872,13 +4878,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -4915,13 +4921,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -4957,13 +4963,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -5001,13 +5007,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -5356,21 +5362,21 @@ - (void)subscribeAttributeCurrentLevelWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::CurrentLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5398,21 +5404,21 @@ - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemainingTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::RemainingTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5440,21 +5446,21 @@ - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::MinLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5482,21 +5488,21 @@ - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::MaxLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5524,21 +5530,22 @@ - (void)subscribeAttributeCurrentFrequencyWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::CurrentFrequency::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5566,21 +5573,21 @@ - (void)subscribeAttributeMinFrequencyWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::MinFrequency::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5608,21 +5615,21 @@ - (void)subscribeAttributeMaxFrequencyWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::MaxFrequency::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5687,21 +5694,21 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOptionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::Options::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5767,22 +5774,22 @@ - (void)subscribeAttributeOnOffTransitionTimeWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnOffTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::OnOffTransitionTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5852,21 +5859,21 @@ - (void)subscribeAttributeOnLevelWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::OnLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -5936,21 +5943,22 @@ - (void)subscribeAttributeOnTransitionTimeWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::OnTransitionTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6020,21 +6028,22 @@ - (void)subscribeAttributeOffTransitionTimeWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOffTransitionTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::OffTransitionTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6104,21 +6113,22 @@ - (void)subscribeAttributeDefaultMoveRateWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDefaultMoveRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::DefaultMoveRate::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6189,22 +6199,22 @@ - (void)subscribeAttributeStartUpCurrentLevelWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartUpCurrentLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::StartUpCurrentLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6233,23 +6243,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLevelControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LevelControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LevelControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -6278,23 +6288,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLevelControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LevelControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LevelControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -6322,21 +6332,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLevelControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(LevelControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6364,21 +6374,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6406,21 +6416,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LevelControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -6511,13 +6522,13 @@ + (void)readAttributeCurrentLevelWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentLevelWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeRemainingTimeWithCompletionHandler:(void (^)(
@@ -6555,13 +6566,13 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemainingTimeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRemainingTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinLevelWithCompletionHandler:(void (^)(
@@ -6597,13 +6608,13 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinLevelWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeMinLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeMaxLevelWithCompletionHandler:(void (^)(
@@ -6639,13 +6650,13 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxLevelWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeMaxLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeCurrentFrequencyWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -6683,13 +6694,13 @@ + (void)readAttributeCurrentFrequencyWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentFrequencyWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeCurrentFrequencyWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMinFrequencyWithCompletionHandler:(void (^)(
@@ -6726,13 +6737,13 @@ + (void)readAttributeMinFrequencyWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinFrequencyWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMinFrequencyWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMaxFrequencyWithCompletionHandler:(void (^)(
@@ -6769,13 +6780,13 @@ + (void)readAttributeMaxFrequencyWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxFrequencyWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMaxFrequencyWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeOptionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -6820,13 +6831,13 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOptionsWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeOptionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeOnOffTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -6876,13 +6887,13 @@ + (void)readAttributeOnOffTransitionTimeWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnOffTransitionTimeWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeOnOffTransitionTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeOnLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -6927,13 +6938,13 @@ + (void)readAttributeOnLevelWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnLevelWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeOnLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeOnTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -6981,13 +6992,13 @@ + (void)readAttributeOnTransitionTimeWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnTransitionTimeWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeOnTransitionTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOffTransitionTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -7037,13 +7048,13 @@ + (void)readAttributeOffTransitionTimeWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOffTransitionTimeWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeOffTransitionTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeDefaultMoveRateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -7091,13 +7102,13 @@ + (void)readAttributeDefaultMoveRateWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultMoveRateWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeDefaultMoveRateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeStartUpCurrentLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -7147,13 +7158,13 @@ + (void)readAttributeStartUpCurrentLevelWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpCurrentLevelWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeStartUpCurrentLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -7192,13 +7203,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -7237,13 +7248,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -7280,13 +7291,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -7322,13 +7333,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -7366,13 +7377,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -7452,21 +7463,21 @@ - (void)subscribeAttributeActiveTextWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::ActiveText::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7531,21 +7542,21 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::Description::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7610,21 +7621,21 @@ - (void)subscribeAttributeInactiveTextWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInactiveTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::InactiveText::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7689,21 +7700,21 @@ - (void)subscribeAttributeOutOfServiceWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOutOfServiceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::OutOfService::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7731,21 +7742,21 @@ - (void)subscribeAttributePolarityWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePolarityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::Polarity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7810,21 +7821,21 @@ - (void)subscribeAttributePresentValueWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePresentValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::PresentValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7889,21 +7900,21 @@ - (void)subscribeAttributeReliabilityWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReliabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::Reliability::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7931,21 +7942,21 @@ - (void)subscribeAttributeStatusFlagsWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusFlagsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::StatusFlags::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -7973,21 +7984,22 @@ - (void)subscribeAttributeApplicationTypeWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApplicationTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::ApplicationType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -8016,23 +8028,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBinaryInputBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BinaryInputBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BinaryInputBasic::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -8061,23 +8073,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBinaryInputBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BinaryInputBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BinaryInputBasic::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -8105,22 +8117,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBinaryInputBasicAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BinaryInputBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BinaryInputBasic::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -8148,21 +8160,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -8190,21 +8202,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BinaryInputBasic::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -8261,13 +8274,13 @@ + (void)readAttributeActiveTextWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveTextWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeActiveTextWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeDescriptionWithCompletionHandler:(void (^)(
@@ -8314,13 +8327,13 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeDescriptionWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeInactiveTextWithCompletionHandler:(void (^)(
@@ -8367,13 +8380,13 @@ + (void)readAttributeInactiveTextWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInactiveTextWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeInactiveTextWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeOutOfServiceWithCompletionHandler:(void (^)(
@@ -8420,13 +8433,13 @@ + (void)readAttributeOutOfServiceWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutOfServiceWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeOutOfServiceWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePolarityWithCompletionHandler:(void (^)(
@@ -8462,13 +8475,13 @@ + (void)readAttributePolarityWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePolarityWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributePolarityWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributePresentValueWithCompletionHandler:(void (^)(
@@ -8515,13 +8528,13 @@ + (void)readAttributePresentValueWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePresentValueWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributePresentValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeReliabilityWithCompletionHandler:(void (^)(
@@ -8568,13 +8581,13 @@ + (void)readAttributeReliabilityWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReliabilityWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeReliabilityWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeStatusFlagsWithCompletionHandler:(void (^)(
@@ -8611,13 +8624,13 @@ + (void)readAttributeStatusFlagsWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusFlagsWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeStatusFlagsWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeApplicationTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -8655,13 +8668,13 @@ + (void)readAttributeApplicationTypeWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationTypeWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeApplicationTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -8700,13 +8713,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -8745,13 +8758,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -8788,13 +8801,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -8830,13 +8843,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -8874,13 +8887,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -8923,21 +8936,21 @@ - (void)subscribeAttributeDeviceTypeListWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDeviceTypeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDeviceTypeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorDeviceTypeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DescriptorDeviceTypeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::DeviceTypeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -8965,21 +8978,21 @@ - (void)subscribeAttributeServerListWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeServerListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorServerListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DescriptorServerListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::ServerList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9007,21 +9020,21 @@ - (void)subscribeAttributeClientListWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClientListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorClientListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DescriptorClientListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::ClientList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9049,21 +9062,21 @@ - (void)subscribeAttributePartsListWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartsListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorPartsListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DescriptorPartsListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::PartsList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9092,23 +9105,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DescriptorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Descriptor::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -9137,23 +9150,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DescriptorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Descriptor::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -9181,21 +9194,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDescriptorAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DescriptorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9223,21 +9236,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9265,21 +9278,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Descriptor::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9326,13 +9340,13 @@ + (void)readAttributeDeviceListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDeviceTypeListWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeDeviceTypeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeServerListWithCompletionHandler:(void (^)(
@@ -9368,13 +9382,13 @@ + (void)readAttributeServerListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeServerListWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeServerListWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClientListWithCompletionHandler:(void (^)(
@@ -9410,13 +9424,13 @@ + (void)readAttributeClientListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClientListWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeClientListWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributePartsListWithCompletionHandler:(void (^)(
@@ -9452,13 +9466,13 @@ + (void)readAttributePartsListWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartsListWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePartsListWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -9497,13 +9511,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -9542,13 +9556,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -9585,13 +9599,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -9627,13 +9641,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -9671,13 +9685,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -9795,21 +9809,21 @@ - (void)subscribeAttributeBindingWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBindingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBindingBindingListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BindingBindingListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Binding::Attributes::Binding::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9838,23 +9852,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBindingGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BindingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Binding::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -9883,23 +9897,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBindingAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BindingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Binding::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -9927,21 +9941,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBindingAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BindingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Binding::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -9969,21 +9983,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Binding::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10011,21 +10025,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Binding::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10083,13 +10098,13 @@ + (void)readAttributeBindingWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBindingWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeBindingWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -10128,13 +10143,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -10173,13 +10188,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -10216,13 +10231,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -10258,13 +10273,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -10302,13 +10317,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -10487,21 +10502,21 @@ - (void)subscribeAttributeAclWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                  endpoint:(NSNumber *)endpoint
-                                     queue:(dispatch_queue_t)queue
-                                completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAclWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                     endpoint:(NSNumber *)endpoint
+                                        queue:(dispatch_queue_t)queue
+                                   completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccessControlAclListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(AccessControlAclListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::Acl::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10589,21 +10604,21 @@ - (void)subscribeAttributeExtensionWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeExtensionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccessControlExtensionListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(AccessControlExtensionListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::Extension::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10634,22 +10649,22 @@ - (void)subscribeAttributeSubjectsPerAccessControlEntryWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeSubjectsPerAccessControlEntryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10680,22 +10695,22 @@ - (void)subscribeAttributeTargetsPerAccessControlEntryWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeTargetsPerAccessControlEntryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10726,22 +10741,22 @@ - (void)subscribeAttributeAccessControlEntriesPerFabricWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeAccessControlEntriesPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10770,23 +10785,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccessControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AccessControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AccessControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -10815,23 +10830,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccessControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AccessControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AccessControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -10859,22 +10874,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccessControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AccessControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AccessControl::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -10902,21 +10917,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -10944,21 +10959,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccessControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -11016,13 +11032,13 @@ + (void)readAttributeAclWithAttributeCache:(MTRAttributeCacheContainer *)attribu
                                      queue:(dispatch_queue_t)queue
                          completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAclWithAttributeCache:attributeCacheContainer
-                                    endpoint:endpoint
-                                       queue:queue
-                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                      // Cast is safe because subclass does not add any selectors.
-                                      completionHandler(static_cast(value), error);
-                                  }];
+    [self readAttributeAclWithClusterStateCache:attributeCacheContainer.realContainer
+                                       endpoint:endpoint
+                                          queue:queue
+                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                         // Cast is safe because subclass does not add any selectors.
+                                         completionHandler(static_cast(value), error);
+                                     }];
 }
 
 - (void)readAttributeExtensionWithParams:(MTRReadParams * _Nullable)params
@@ -11069,13 +11085,13 @@ + (void)readAttributeExtensionWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExtensionWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeExtensionWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -11114,13 +11130,13 @@ + (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSubjectsPerAccessControlEntryWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeSubjectsPerAccessControlEntryWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeTargetsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -11159,13 +11175,13 @@ + (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetsPerAccessControlEntryWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeTargetsPerAccessControlEntryWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeAccessControlEntriesPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -11204,13 +11220,13 @@ + (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAccessControlEntriesPerFabricWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeAccessControlEntriesPerFabricWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -11249,13 +11265,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -11294,13 +11310,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -11337,13 +11353,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -11379,13 +11395,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -11423,13 +11439,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -11866,21 +11882,21 @@ - (void)subscribeAttributeActionListWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActionListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRActionsActionListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ActionsActionListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::ActionList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -11908,21 +11924,21 @@ - (void)subscribeAttributeEndpointListsWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEndpointListsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRActionsEndpointListsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ActionsEndpointListsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::EndpointLists::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -11950,21 +11966,21 @@ - (void)subscribeAttributeSetupURLWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSetupURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::SetupURL::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -11993,23 +12009,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRActionsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ActionsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Actions::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -12038,23 +12054,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRActionsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ActionsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Actions::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -12082,21 +12098,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRActionsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ActionsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12124,21 +12140,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12166,21 +12182,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Actions::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12285,13 +12302,13 @@ + (void)readAttributeActionListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActionListWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeActionListWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeEndpointListsWithCompletionHandler:(void (^)(
@@ -12328,13 +12345,13 @@ + (void)readAttributeEndpointListsWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEndpointListsWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeEndpointListsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeSetupURLWithCompletionHandler:(void (^)(
@@ -12370,13 +12387,13 @@ + (void)readAttributeSetupURLWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetupURLWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeSetupURLWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -12415,13 +12432,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -12460,13 +12477,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -12503,13 +12520,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -12545,13 +12562,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -12589,13 +12606,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -12670,21 +12687,22 @@ - (void)subscribeAttributeDataModelRevisionWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDataModelRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12712,21 +12730,21 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12754,21 +12772,21 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12796,21 +12814,21 @@ - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12838,21 +12856,21 @@ - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12917,21 +12935,21 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNodeLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -12996,21 +13014,21 @@ - (void)subscribeAttributeLocationWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::Location::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13038,21 +13056,22 @@ - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHardwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13081,22 +13100,22 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHardwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13124,21 +13143,22 @@ - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoftwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13167,22 +13187,22 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoftwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13210,21 +13230,22 @@ - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeManufacturingDateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13252,21 +13273,21 @@ - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13294,21 +13315,21 @@ - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13336,21 +13357,21 @@ - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13378,21 +13399,21 @@ - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSerialNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13458,22 +13479,22 @@ - (void)subscribeAttributeLocalConfigDisabledWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocalConfigDisabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13501,21 +13522,21 @@ - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReachableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13543,21 +13564,21 @@ - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUniqueIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13588,22 +13609,22 @@ - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
-                                                            NSError * _Nullable error))completion
++ (void)readAttributeCapabilityMinimaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                                               NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BasicCapabilityMinimaStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13632,22 +13653,22 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13676,22 +13697,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13719,21 +13740,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13761,21 +13782,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13803,21 +13824,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -13877,13 +13899,13 @@ + (void)readAttributeDataModelRevisionWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDataModelRevisionWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeDataModelRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeVendorNameWithCompletionHandler:(void (^)(
@@ -13919,13 +13941,13 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeVendorNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
@@ -13961,13 +13983,13 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeVendorIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeProductNameWithCompletionHandler:(void (^)(
@@ -14004,13 +14026,13 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductNameWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeProductNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeProductIDWithCompletionHandler:(void (^)(
@@ -14046,13 +14068,13 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductIDWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeProductIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeNodeLabelWithCompletionHandler:(void (^)(
@@ -14098,13 +14120,13 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNodeLabelWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeNodeLabelWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeLocationWithCompletionHandler:(void (^)(
@@ -14150,13 +14172,13 @@ + (void)readAttributeLocationWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocationWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeLocationWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeHardwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -14194,13 +14216,13 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeHardwareVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeHardwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -14239,13 +14261,13 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionStringWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeHardwareVersionStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeSoftwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -14283,13 +14305,13 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeSoftwareVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeSoftwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -14328,13 +14350,13 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionStringWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeSoftwareVersionStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeManufacturingDateWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -14373,13 +14395,13 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeManufacturingDateWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeManufacturingDateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePartNumberWithCompletionHandler:(void (^)(
@@ -14415,13 +14437,13 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartNumberWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributePartNumberWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeProductURLWithCompletionHandler:(void (^)(
@@ -14457,13 +14479,13 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductURLWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeProductURLWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeProductLabelWithCompletionHandler:(void (^)(
@@ -14500,13 +14522,13 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductLabelWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeProductLabelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSerialNumberWithCompletionHandler:(void (^)(
@@ -14543,13 +14565,13 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSerialNumberWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSerialNumberWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeLocalConfigDisabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -14599,13 +14621,13 @@ + (void)readAttributeLocalConfigDisabledWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalConfigDisabledWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeLocalConfigDisabledWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeReachableWithCompletionHandler:(void (^)(
@@ -14641,13 +14663,13 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReachableWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeReachableWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeUniqueIDWithCompletionHandler:(void (^)(
@@ -14683,13 +14705,13 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUniqueIDWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeUniqueIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeCapabilityMinimaWithCompletionHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
@@ -14730,15 +14752,15 @@ + (void)readAttributeCapabilityMinimaWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCapabilityMinimaWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
-                                                   NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(
-                                                       static_cast(value), error);
-                                               }];
+    [self readAttributeCapabilityMinimaWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                                      NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(
+                                                          static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -14777,13 +14799,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -14822,13 +14844,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -14865,13 +14887,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -14907,13 +14929,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -14951,13 +14973,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -15128,23 +15150,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateProviderGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateProvider::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15174,23 +15196,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateProviderAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15218,22 +15240,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateProviderAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateProviderAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateProvider::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15261,21 +15283,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateProvider::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -15303,21 +15325,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateProvider::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -15396,13 +15419,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -15441,13 +15464,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -15484,13 +15507,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -15526,13 +15549,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -15570,13 +15593,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -15719,23 +15742,23 @@ - (void)subscribeAttributeDefaultOtaProvidersWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDefaultOtaProvidersWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::DefaultOtaProviders::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15763,21 +15786,21 @@ - (void)subscribeAttributeUpdatePossibleWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpdatePossibleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdatePossible::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -15806,22 +15829,22 @@ - (void)subscribeAttributeUpdateStateWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpdateStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateRequestorClusterOTAUpdateStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateState::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15850,22 +15873,22 @@ - (void)subscribeAttributeUpdateStateProgressWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpdateStateProgressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::UpdateStateProgress::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -15895,23 +15918,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateRequestorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15941,23 +15964,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateRequestorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -15986,22 +16009,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROtaSoftwareUpdateRequestorAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OtaSoftwareUpdateRequestorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -16029,21 +16052,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -16071,21 +16094,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OtaSoftwareUpdateRequestor::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -16153,13 +16177,13 @@ + (void)readAttributeDefaultOtaProvidersWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultOtaProvidersWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeDefaultOtaProvidersWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeUpdatePossibleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -16197,13 +16221,13 @@ + (void)readAttributeUpdatePossibleWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdatePossibleWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeUpdatePossibleWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeUpdateStateWithCompletionHandler:(void (^)(
@@ -16240,13 +16264,13 @@ + (void)readAttributeUpdateStateWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdateStateWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeUpdateStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeUpdateStateProgressWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -16285,13 +16309,13 @@ + (void)readAttributeUpdateStateProgressWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpdateStateProgressWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeUpdateStateProgressWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -16330,13 +16354,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -16375,13 +16399,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -16418,13 +16442,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -16460,13 +16484,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -16504,13 +16528,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -16590,21 +16614,21 @@ - (void)subscribeAttributeActiveLocaleWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveLocaleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LocalizationConfiguration::Attributes::ActiveLocale::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -16633,22 +16657,23 @@ - (void)subscribeAttributeSupportedLocalesWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedLocalesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLocalizationConfigurationSupportedLocalesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LocalizationConfigurationSupportedLocalesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LocalizationConfiguration::Attributes::SupportedLocales::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -16678,23 +16703,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLocalizationConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LocalizationConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LocalizationConfiguration::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -16724,23 +16749,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLocalizationConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LocalizationConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LocalizationConfiguration::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -16768,22 +16793,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLocalizationConfigurationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LocalizationConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LocalizationConfiguration::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -16811,21 +16836,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LocalizationConfiguration::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -16853,21 +16878,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LocalizationConfiguration::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -16925,13 +16951,13 @@ + (void)readAttributeActiveLocaleWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveLocaleWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeActiveLocaleWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSupportedLocalesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -16969,13 +16995,13 @@ + (void)readAttributeSupportedLocalesWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedLocalesWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeSupportedLocalesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -17014,13 +17040,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -17059,13 +17085,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -17102,13 +17128,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -17144,13 +17170,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -17188,13 +17214,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -17274,22 +17300,22 @@ - (void)subscribeAttributeHourFormatWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHourFormatWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationClusterHourFormatAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationClusterHourFormatAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::HourFormat::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17355,23 +17381,23 @@ - (void)subscribeAttributeActiveCalendarTypeWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveCalendarTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationClusterCalendarTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationClusterCalendarTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::ActiveCalendarType::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17401,23 +17427,23 @@ - (void)subscribeAttributeSupportedCalendarTypesWithParams:(MTRSubscribeParams *
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedCalendarTypesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:
+                                                          (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationSupportedCalendarTypesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationSupportedCalendarTypesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::SupportedCalendarTypes::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17447,23 +17473,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17493,23 +17519,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17537,22 +17563,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTimeFormatLocalizationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TimeFormatLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TimeFormatLocalization::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -17580,21 +17606,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TimeFormatLocalization::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -17622,21 +17648,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TimeFormatLocalization::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -17693,13 +17720,13 @@ + (void)readAttributeHourFormatWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHourFormatWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeHourFormatWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeActiveCalendarTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -17749,13 +17776,13 @@ + (void)readAttributeActiveCalendarTypeWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCalendarTypeWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeActiveCalendarTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeSupportedCalendarTypesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -17794,13 +17821,13 @@ + (void)readAttributeSupportedCalendarTypesWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedCalendarTypesWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeSupportedCalendarTypesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -17839,13 +17866,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -17884,13 +17911,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -17927,13 +17954,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -17969,13 +17996,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -18013,13 +18040,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -18099,22 +18126,23 @@ - (void)subscribeAttributeTemperatureUnitWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTemperatureUnitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitLocalizationClusterTempUnitAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitLocalizationClusterTempUnitAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitLocalization::Attributes::TemperatureUnit::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18143,23 +18171,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitLocalizationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitLocalizationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitLocalization::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18188,23 +18216,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitLocalizationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitLocalizationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitLocalization::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18232,22 +18260,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitLocalizationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitLocalizationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitLocalization::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18275,21 +18303,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitLocalization::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -18317,21 +18345,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitLocalization::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -18390,13 +18419,13 @@ + (void)readAttributeTemperatureUnitWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureUnitWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeTemperatureUnitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -18435,13 +18464,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -18480,13 +18509,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -18523,13 +18552,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -18565,13 +18594,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -18609,13 +18638,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -18658,22 +18687,22 @@ - (void)subscribeAttributeSourcesWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSourcesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceConfigurationSourcesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceConfigurationSourcesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSourceConfiguration::Attributes::Sources::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18703,23 +18732,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSourceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18749,23 +18778,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSourceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18793,22 +18822,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceConfigurationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSourceConfiguration::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -18836,21 +18865,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSourceConfiguration::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -18878,21 +18907,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSourceConfiguration::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -18938,13 +18968,13 @@ + (void)readAttributeSourcesWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSourcesWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeSourcesWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -18983,13 +19013,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -19028,13 +19058,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -19071,13 +19101,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -19113,13 +19143,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -19157,13 +19187,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -19206,22 +19236,22 @@ - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceClusterPowerSourceStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceClusterPowerSourceStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::Status::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -19249,21 +19279,21 @@ - (void)subscribeAttributeOrderWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOrderWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::Order::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19291,21 +19321,21 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::Description::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19335,22 +19365,22 @@ - (void)subscribeAttributeWiredAssessedInputVoltageWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeWiredAssessedInputVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredAssessedInputVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19380,22 +19410,22 @@ - (void)subscribeAttributeWiredAssessedInputFrequencyWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeWiredAssessedInputFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredAssessedInputFrequency::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19423,22 +19453,23 @@ - (void)subscribeAttributeWiredCurrentTypeWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredCurrentTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceClusterWiredCurrentTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceClusterWiredCurrentTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::WiredCurrentType::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -19467,22 +19498,22 @@ - (void)subscribeAttributeWiredAssessedCurrentWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredAssessedCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredAssessedCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19511,22 +19542,22 @@ - (void)subscribeAttributeWiredNominalVoltageWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredNominalVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredNominalVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19555,22 +19586,22 @@ - (void)subscribeAttributeWiredMaximumCurrentWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredMaximumCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredMaximumCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19598,21 +19629,21 @@ - (void)subscribeAttributeWiredPresentWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiredPresentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::WiredPresent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19640,22 +19671,23 @@ - (void)subscribeAttributeActiveWiredFaultsWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveWiredFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceActiveWiredFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceActiveWiredFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::ActiveWiredFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -19683,21 +19715,21 @@ - (void)subscribeAttributeBatVoltageWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19726,22 +19758,22 @@ - (void)subscribeAttributeBatPercentRemainingWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatPercentRemainingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatPercentRemaining::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19769,21 +19801,22 @@ - (void)subscribeAttributeBatTimeRemainingWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatTimeRemainingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatTimeRemaining::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19811,22 +19844,22 @@ - (void)subscribeAttributeBatChargeLevelWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatChargeLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceClusterBatChargeLevelAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceClusterBatChargeLevelAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::BatChargeLevel::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -19855,22 +19888,22 @@ - (void)subscribeAttributeBatReplacementNeededWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatReplacementNeededWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatReplacementNeeded::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19898,22 +19931,23 @@ - (void)subscribeAttributeBatReplaceabilityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatReplaceabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceClusterBatReplaceabilityAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceClusterBatReplaceabilityAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::BatReplaceability::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -19941,21 +19975,21 @@ - (void)subscribeAttributeBatPresentWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatPresentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatPresent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -19983,22 +20017,22 @@ - (void)subscribeAttributeActiveBatFaultsWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveBatFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceActiveBatFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceActiveBatFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::ActiveBatFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -20028,22 +20062,22 @@ - (void)subscribeAttributeBatReplacementDescriptionWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSString * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeBatReplacementDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSString * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatReplacementDescription::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20072,22 +20106,22 @@ - (void)subscribeAttributeBatCommonDesignationWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatCommonDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatCommonDesignation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20116,22 +20150,22 @@ - (void)subscribeAttributeBatANSIDesignationWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatANSIDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatANSIDesignation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20159,21 +20193,22 @@ - (void)subscribeAttributeBatIECDesignationWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatIECDesignationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatIECDesignation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20202,22 +20237,22 @@ - (void)subscribeAttributeBatApprovedChemistryWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatApprovedChemistryWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatApprovedChemistry::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20245,21 +20280,21 @@ - (void)subscribeAttributeBatCapacityWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatCapacity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20287,21 +20322,21 @@ - (void)subscribeAttributeBatQuantityWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatQuantityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatQuantity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20329,22 +20364,22 @@ - (void)subscribeAttributeBatChargeStateWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatChargeStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceClusterBatChargeStateAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceClusterBatChargeStateAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::BatChargeState::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -20373,22 +20408,22 @@ - (void)subscribeAttributeBatTimeToFullChargeWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatTimeToFullChargeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatTimeToFullCharge::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20418,22 +20453,22 @@ - (void)subscribeAttributeBatFunctionalWhileChargingWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeBatFunctionalWhileChargingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatFunctionalWhileCharging::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20462,22 +20497,22 @@ - (void)subscribeAttributeBatChargingCurrentWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBatChargingCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::BatChargingCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20506,23 +20541,23 @@ - (void)subscribeAttributeActiveBatChargeFaultsWithParams:(MTRSubscribeParams *
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveBatChargeFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceActiveBatChargeFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceActiveBatChargeFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::ActiveBatChargeFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -20551,23 +20586,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -20596,23 +20631,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PowerSourceAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PowerSource::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -20640,21 +20675,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPowerSourceAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(PowerSourceAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20682,21 +20717,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20724,21 +20759,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PowerSource::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -20784,13 +20820,13 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeOrderWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -20825,13 +20861,13 @@ + (void)readAttributeOrderWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOrderWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeOrderWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeDescriptionWithCompletionHandler:(void (^)(
@@ -20868,13 +20904,13 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeDescriptionWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeWiredAssessedInputVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -20913,13 +20949,13 @@ + (void)readAttributeWiredAssessedInputVoltageWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedInputVoltageWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeWiredAssessedInputVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeWiredAssessedInputFrequencyWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -20958,13 +20994,13 @@ + (void)readAttributeWiredAssessedInputFrequencyWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedInputFrequencyWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeWiredAssessedInputFrequencyWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeWiredCurrentTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21002,13 +21038,13 @@ + (void)readAttributeWiredCurrentTypeWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredCurrentTypeWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeWiredCurrentTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeWiredAssessedCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21047,13 +21083,13 @@ + (void)readAttributeWiredAssessedCurrentWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredAssessedCurrentWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeWiredAssessedCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeWiredNominalVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21092,13 +21128,13 @@ + (void)readAttributeWiredNominalVoltageWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredNominalVoltageWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeWiredNominalVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeWiredMaximumCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21137,13 +21173,13 @@ + (void)readAttributeWiredMaximumCurrentWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredMaximumCurrentWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeWiredMaximumCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeWiredPresentWithCompletionHandler:(void (^)(
@@ -21180,13 +21216,13 @@ + (void)readAttributeWiredPresentWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiredPresentWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeWiredPresentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeActiveWiredFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -21224,13 +21260,13 @@ + (void)readAttributeActiveWiredFaultsWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveWiredFaultsWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeActiveWiredFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatVoltageWithCompletionHandler:(void (^)(
@@ -21266,13 +21302,13 @@ + (void)readAttributeBatVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatVoltageWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeBatVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeBatPercentRemainingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21311,13 +21347,13 @@ + (void)readAttributeBatPercentRemainingWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatPercentRemainingWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeBatPercentRemainingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBatTimeRemainingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21355,13 +21391,13 @@ + (void)readAttributeBatTimeRemainingWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatTimeRemainingWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeBatTimeRemainingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBatChargeLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21399,13 +21435,13 @@ + (void)readAttributeBatChargeLevelWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargeLevelWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeBatChargeLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBatReplacementNeededWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21444,13 +21480,13 @@ + (void)readAttributeBatReplacementNeededWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplacementNeededWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeBatReplacementNeededWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeBatReplaceabilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21489,13 +21525,13 @@ + (void)readAttributeBatReplaceabilityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplaceabilityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeBatReplaceabilityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatPresentWithCompletionHandler:(void (^)(
@@ -21531,13 +21567,13 @@ + (void)readAttributeBatPresentWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatPresentWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeBatPresentWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeActiveBatFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -21575,13 +21611,13 @@ + (void)readAttributeActiveBatFaultsWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveBatFaultsWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeActiveBatFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBatReplacementDescriptionWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -21620,13 +21656,13 @@ + (void)readAttributeBatReplacementDescriptionWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSString * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatReplacementDescriptionWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeBatReplacementDescriptionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeBatCommonDesignationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21665,13 +21701,13 @@ + (void)readAttributeBatCommonDesignationWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatCommonDesignationWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeBatCommonDesignationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeBatANSIDesignationWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -21710,13 +21746,13 @@ + (void)readAttributeBatANSIDesignationWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatANSIDesignationWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeBatANSIDesignationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeBatIECDesignationWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -21755,13 +21791,13 @@ + (void)readAttributeBatIECDesignationWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatIECDesignationWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeBatIECDesignationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBatApprovedChemistryWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21800,13 +21836,13 @@ + (void)readAttributeBatApprovedChemistryWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatApprovedChemistryWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeBatApprovedChemistryWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeBatCapacityWithCompletionHandler:(void (^)(
@@ -21843,13 +21879,13 @@ + (void)readAttributeBatCapacityWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatCapacityWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeBatCapacityWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeBatQuantityWithCompletionHandler:(void (^)(
@@ -21886,13 +21922,13 @@ + (void)readAttributeBatQuantityWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatQuantityWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeBatQuantityWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeBatChargeStateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21930,13 +21966,13 @@ + (void)readAttributeBatChargeStateWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargeStateWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeBatChargeStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeBatTimeToFullChargeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -21975,13 +22011,13 @@ + (void)readAttributeBatTimeToFullChargeWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatTimeToFullChargeWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeBatTimeToFullChargeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBatFunctionalWhileChargingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -22020,13 +22056,13 @@ + (void)readAttributeBatFunctionalWhileChargingWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatFunctionalWhileChargingWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeBatFunctionalWhileChargingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeBatChargingCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -22065,13 +22101,13 @@ + (void)readAttributeBatChargingCurrentWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBatChargingCurrentWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeBatChargingCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeActiveBatChargeFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -22110,13 +22146,13 @@ + (void)readAttributeActiveBatChargeFaultsWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveBatChargeFaultsWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeActiveBatChargeFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -22155,13 +22191,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -22200,13 +22236,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -22243,13 +22279,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -22285,13 +22321,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -22329,13 +22365,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -22506,21 +22542,21 @@ - (void)subscribeAttributeBreadcrumbWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBreadcrumbWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralCommissioning::Attributes::Breadcrumb::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -22552,25 +22588,26 @@ - (void)subscribeAttributeBasicCommissioningInfoWithParams:(MTRSubscribeParams *
         reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(
-                                                           MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
-                                                           NSError * _Nullable error))completion
++ (void)
+    readAttributeBasicCommissioningInfoWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(
+                                                          MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
+                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningBasicCommissioningInfoStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningBasicCommissioningInfoStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::BasicCommissioningInfo::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22599,22 +22636,23 @@ - (void)subscribeAttributeRegulatoryConfigWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRegulatoryConfigWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::RegulatoryConfig::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22644,23 +22682,23 @@ - (void)subscribeAttributeLocationCapabilityWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocationCapabilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningClusterRegulatoryLocationTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningClusterRegulatoryLocationTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::LocationCapability::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22691,22 +22729,22 @@ - (void)subscribeAttributeSupportsConcurrentConnectionWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeSupportsConcurrentConnectionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralCommissioning::Attributes::SupportsConcurrentConnection::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -22736,23 +22774,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22782,23 +22820,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22826,22 +22864,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralCommissioningAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralCommissioning::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -22869,21 +22907,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralCommissioning::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -22911,21 +22949,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralCommissioning::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -23026,13 +23065,13 @@ + (void)readAttributeBreadcrumbWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBreadcrumbWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeBreadcrumbWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeBasicCommissioningInfoWithCompletionHandler:
@@ -23079,18 +23118,18 @@ + (void)readAttributeBasicCommissioningInfoWithAttributeCache:(MTRAttributeCache
                                                 (void (^)(MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBasicCommissioningInfoWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(
-                                                         MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
-                                                         NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(
-                                                             static_cast(
-                                                                 value),
-                                                             error);
-                                                     }];
+    [self readAttributeBasicCommissioningInfoWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(
+                                                            MTRGeneralCommissioningClusterBasicCommissioningInfo * _Nullable value,
+                                                            NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(
+                                                                static_cast(
+                                                                    value),
+                                                                error);
+                                                        }];
 }
 
 - (void)readAttributeRegulatoryConfigWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -23128,13 +23167,13 @@ + (void)readAttributeRegulatoryConfigWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRegulatoryConfigWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRegulatoryConfigWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeLocationCapabilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -23173,13 +23212,13 @@ + (void)readAttributeLocationCapabilityWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocationCapabilityWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeLocationCapabilityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeSupportsConcurrentConnectionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -23218,13 +23257,13 @@ + (void)readAttributeSupportsConcurrentConnectionWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportsConcurrentConnectionWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeSupportsConcurrentConnectionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -23263,13 +23302,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -23308,13 +23347,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -23351,13 +23390,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -23393,13 +23432,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -23437,13 +23476,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -23684,21 +23723,21 @@ - (void)subscribeAttributeMaxNetworksWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxNetworksWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::MaxNetworks::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -23726,22 +23765,22 @@ - (void)subscribeAttributeNetworksWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNetworksWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNetworkCommissioningNetworksListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NetworkCommissioningNetworksListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = NetworkCommissioning::Attributes::Networks::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -23770,22 +23809,22 @@ - (void)subscribeAttributeScanMaxTimeSecondsWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScanMaxTimeSecondsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::ScanMaxTimeSeconds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -23814,22 +23853,22 @@ - (void)subscribeAttributeConnectMaxTimeSecondsWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeConnectMaxTimeSecondsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -23894,21 +23933,22 @@ - (void)subscribeAttributeInterfaceEnabledWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInterfaceEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::InterfaceEnabled::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -23938,23 +23978,23 @@ - (void)subscribeAttributeLastNetworkingStatusWithParams:(MTRSubscribeParams * _
         self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLastNetworkingStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableNetworkCommissioningClusterNetworkCommissioningStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = NetworkCommissioning::Attributes::LastNetworkingStatus::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -23982,21 +24022,21 @@ - (void)subscribeAttributeLastNetworkIDWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLastNetworkIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::LastNetworkID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -24025,22 +24065,22 @@ - (void)subscribeAttributeLastConnectErrorValueWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLastConnectErrorValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::LastConnectErrorValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -24070,23 +24110,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNetworkCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NetworkCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = NetworkCommissioning::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -24116,23 +24156,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNetworkCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NetworkCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = NetworkCommissioning::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -24160,22 +24200,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNetworkCommissioningAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NetworkCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = NetworkCommissioning::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -24203,21 +24243,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -24245,21 +24285,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = NetworkCommissioning::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -24378,13 +24419,13 @@ + (void)readAttributeMaxNetworksWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxNetworksWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeMaxNetworksWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNetworksWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
@@ -24419,13 +24460,13 @@ + (void)readAttributeNetworksWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworksWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeNetworksWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeScanMaxTimeSecondsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24464,13 +24505,13 @@ + (void)readAttributeScanMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScanMaxTimeSecondsWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeScanMaxTimeSecondsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeConnectMaxTimeSecondsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24509,13 +24550,13 @@ + (void)readAttributeConnectMaxTimeSecondsWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeConnectMaxTimeSecondsWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeConnectMaxTimeSecondsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeInterfaceEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24563,13 +24604,13 @@ + (void)readAttributeInterfaceEnabledWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInterfaceEnabledWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeInterfaceEnabledWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeLastNetworkingStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24608,13 +24649,13 @@ + (void)readAttributeLastNetworkingStatusWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastNetworkingStatusWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeLastNetworkingStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeLastNetworkIDWithCompletionHandler:(void (^)(
@@ -24651,13 +24692,13 @@ + (void)readAttributeLastNetworkIDWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastNetworkIDWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeLastNetworkIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLastConnectErrorValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24696,13 +24737,13 @@ + (void)readAttributeLastConnectErrorValueWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLastConnectErrorValueWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeLastConnectErrorValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -24741,13 +24782,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -24786,13 +24827,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -24829,13 +24870,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -24871,13 +24912,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -24915,13 +24956,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -24995,23 +25036,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDiagnosticLogsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DiagnosticLogsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DiagnosticLogs::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25040,23 +25081,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDiagnosticLogsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DiagnosticLogsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DiagnosticLogs::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25084,22 +25125,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDiagnosticLogsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DiagnosticLogsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DiagnosticLogs::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25127,21 +25168,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DiagnosticLogs::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25169,21 +25210,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DiagnosticLogs::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25245,13 +25287,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -25290,13 +25332,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -25333,13 +25375,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -25375,13 +25417,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -25419,13 +25461,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -25498,22 +25540,23 @@ - (void)subscribeAttributeNetworkInterfacesWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNetworkInterfacesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsNetworkInterfacesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsNetworkInterfacesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::NetworkInterfaces::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25541,21 +25584,21 @@ - (void)subscribeAttributeRebootCountWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRebootCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::RebootCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25583,21 +25626,21 @@ - (void)subscribeAttributeUpTimeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUpTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::UpTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25626,22 +25669,22 @@ - (void)subscribeAttributeTotalOperationalHoursWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTotalOperationalHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::TotalOperationalHours::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25669,21 +25712,21 @@ - (void)subscribeAttributeBootReasonsWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBootReasonsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::BootReasons::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25712,23 +25755,23 @@ - (void)subscribeAttributeActiveHardwareFaultsWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveHardwareFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsActiveHardwareFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsActiveHardwareFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::ActiveHardwareFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25756,22 +25799,23 @@ - (void)subscribeAttributeActiveRadioFaultsWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveRadioFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsActiveRadioFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsActiveRadioFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::ActiveRadioFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25800,23 +25844,23 @@ - (void)subscribeAttributeActiveNetworkFaultsWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveNetworkFaultsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsActiveNetworkFaultsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsActiveNetworkFaultsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::ActiveNetworkFaults::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25846,22 +25890,22 @@ - (void)subscribeAttributeTestEventTriggersEnabledWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTestEventTriggersEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::TestEventTriggersEnabled::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -25890,23 +25934,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25935,23 +25979,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -25979,22 +26023,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGeneralDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GeneralDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GeneralDiagnostics::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -26022,21 +26066,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -26064,21 +26108,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GeneralDiagnostics::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -26133,13 +26178,13 @@ + (void)readAttributeNetworkInterfacesWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworkInterfacesWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeNetworkInterfacesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRebootCountWithCompletionHandler:(void (^)(
@@ -26176,13 +26221,13 @@ + (void)readAttributeRebootCountWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRebootCountWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeRebootCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeUpTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -26217,13 +26262,13 @@ + (void)readAttributeUpTimeWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUpTimeWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeUpTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeTotalOperationalHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -26262,13 +26307,13 @@ + (void)readAttributeTotalOperationalHoursWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalOperationalHoursWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeTotalOperationalHoursWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeBootReasonsWithCompletionHandler:(void (^)(
@@ -26305,13 +26350,13 @@ + (void)readAttributeBootReasonsWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBootReasonsWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeBootReasonsWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeActiveHardwareFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -26350,13 +26395,13 @@ + (void)readAttributeActiveHardwareFaultsWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveHardwareFaultsWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeActiveHardwareFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeActiveRadioFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -26394,13 +26439,13 @@ + (void)readAttributeActiveRadioFaultsWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveRadioFaultsWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeActiveRadioFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActiveNetworkFaultsWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -26439,13 +26484,13 @@ + (void)readAttributeActiveNetworkFaultsWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveNetworkFaultsWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeActiveNetworkFaultsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeTestEventTriggersEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -26484,13 +26529,13 @@ + (void)readAttributeTestEventTriggersEnabledWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTestEventTriggersEnabledWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeTestEventTriggersEnabledWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -26529,13 +26574,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -26574,13 +26619,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -26617,13 +26662,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -26659,13 +26704,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -26703,13 +26748,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -26784,22 +26829,22 @@ - (void)subscribeAttributeThreadMetricsWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeThreadMetricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSoftwareDiagnosticsThreadMetricsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(SoftwareDiagnosticsThreadMetricsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = SoftwareDiagnostics::Attributes::ThreadMetrics::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -26827,21 +26872,22 @@ - (void)subscribeAttributeCurrentHeapFreeWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentHeapFreeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapFree::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -26869,21 +26915,22 @@ - (void)subscribeAttributeCurrentHeapUsedWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentHeapUsedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapUsed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -26913,22 +26960,22 @@ - (void)subscribeAttributeCurrentHeapHighWatermarkWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentHeapHighWatermarkWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = SoftwareDiagnostics::Attributes::CurrentHeapHighWatermark::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -26958,23 +27005,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSoftwareDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(SoftwareDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = SoftwareDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -27003,23 +27050,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSoftwareDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(SoftwareDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = SoftwareDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -27047,22 +27094,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSoftwareDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(SoftwareDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = SoftwareDiagnostics::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -27090,21 +27137,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = SoftwareDiagnostics::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27132,21 +27179,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = SoftwareDiagnostics::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27204,13 +27252,13 @@ + (void)readAttributeThreadMetricsWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThreadMetricsWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeThreadMetricsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeCurrentHeapFreeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -27248,13 +27296,13 @@ + (void)readAttributeCurrentHeapFreeWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapFreeWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeCurrentHeapFreeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeCurrentHeapUsedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -27292,13 +27340,13 @@ + (void)readAttributeCurrentHeapUsedWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapUsedWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeCurrentHeapUsedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeCurrentHeapHighWatermarkWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -27337,13 +27385,13 @@ + (void)readAttributeCurrentHeapHighWatermarkWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHeapHighWatermarkWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeCurrentHeapHighWatermarkWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -27382,13 +27430,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -27427,13 +27475,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -27470,13 +27518,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -27512,13 +27560,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -27556,13 +27604,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -27637,21 +27685,21 @@ - (void)subscribeAttributeChannelWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27680,22 +27728,22 @@ - (void)subscribeAttributeRoutingRoleWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRoutingRoleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -27723,21 +27771,21 @@ - (void)subscribeAttributeNetworkNameWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNetworkNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableCharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27765,21 +27813,21 @@ - (void)subscribeAttributePanIdWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePanIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27807,21 +27855,21 @@ - (void)subscribeAttributeExtendedPanIdWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeExtendedPanIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27849,21 +27897,21 @@ - (void)subscribeAttributeMeshLocalPrefixWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeshLocalPrefixWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27891,21 +27939,21 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -27934,22 +27982,23 @@ - (void)subscribeAttributeNeighborTableListWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNeighborTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsNeighborTableListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsNeighborTableListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::NeighborTableList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -27977,22 +28026,22 @@ - (void)subscribeAttributeRouteTableListWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRouteTableListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsRouteTableListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsRouteTableListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouteTableList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -28020,21 +28069,21 @@ - (void)subscribeAttributePartitionIdWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartitionIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28062,21 +28111,21 @@ - (void)subscribeAttributeWeightingWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWeightingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::Weighting::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28104,21 +28153,21 @@ - (void)subscribeAttributeDataVersionWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDataVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::DataVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28146,21 +28195,22 @@ - (void)subscribeAttributeStableDataVersionWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStableDataVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::StableDataVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28188,21 +28238,21 @@ - (void)subscribeAttributeLeaderRouterIdWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLeaderRouterIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRouterId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28230,21 +28280,22 @@ - (void)subscribeAttributeDetachedRoleCountWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDetachedRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::DetachedRoleCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28272,21 +28323,21 @@ - (void)subscribeAttributeChildRoleCountWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChildRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChildRoleCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28314,21 +28365,22 @@ - (void)subscribeAttributeRouterRoleCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRouterRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RouterRoleCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28356,21 +28408,22 @@ - (void)subscribeAttributeLeaderRoleCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLeaderRoleCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::LeaderRoleCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28399,22 +28452,22 @@ - (void)subscribeAttributeAttachAttemptCountWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttachAttemptCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttachAttemptCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28444,22 +28497,22 @@ - (void)subscribeAttributePartitionIdChangeCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartitionIdChangeCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::PartitionIdChangeCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28490,22 +28543,23 @@ - (void)subscribeAttributeBetterPartitionAttachAttemptCountWithParams:(MTRSubscr
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeBetterPartitionAttachAttemptCountWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::BetterPartitionAttachAttemptCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28533,21 +28587,22 @@ - (void)subscribeAttributeParentChangeCountWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeParentChangeCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ParentChangeCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28575,21 +28630,21 @@ - (void)subscribeAttributeTxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxTotalCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxTotalCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28617,21 +28672,21 @@ - (void)subscribeAttributeTxUnicastCountWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxUnicastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxUnicastCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28659,21 +28714,22 @@ - (void)subscribeAttributeTxBroadcastCountWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxBroadcastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBroadcastCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28702,22 +28758,22 @@ - (void)subscribeAttributeTxAckRequestedCountWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxAckRequestedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckRequestedCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28745,21 +28801,21 @@ - (void)subscribeAttributeTxAckedCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxAckedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxAckedCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28788,22 +28844,22 @@ - (void)subscribeAttributeTxNoAckRequestedCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxNoAckRequestedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxNoAckRequestedCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28831,21 +28887,21 @@ - (void)subscribeAttributeTxDataCountWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxDataCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28873,21 +28929,22 @@ - (void)subscribeAttributeTxDataPollCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxDataPollCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDataPollCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28915,21 +28972,21 @@ - (void)subscribeAttributeTxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxBeaconCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -28958,22 +29015,22 @@ - (void)subscribeAttributeTxBeaconRequestCountWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxBeaconRequestCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxBeaconRequestCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29001,21 +29058,21 @@ - (void)subscribeAttributeTxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxOtherCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29043,21 +29100,21 @@ - (void)subscribeAttributeTxRetryCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxRetryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxRetryCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29087,22 +29144,22 @@ - (void)subscribeAttributeTxDirectMaxRetryExpiryCountWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeTxDirectMaxRetryExpiryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxDirectMaxRetryExpiryCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29133,22 +29190,22 @@ - (void)subscribeAttributeTxIndirectMaxRetryExpiryCountWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeTxIndirectMaxRetryExpiryCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxIndirectMaxRetryExpiryCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29176,21 +29233,21 @@ - (void)subscribeAttributeTxErrCcaCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrCcaCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrCcaCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29218,21 +29275,22 @@ - (void)subscribeAttributeTxErrAbortCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrAbortCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrAbortCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29261,22 +29319,22 @@ - (void)subscribeAttributeTxErrBusyChannelCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrBusyChannelCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::TxErrBusyChannelCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29304,21 +29362,21 @@ - (void)subscribeAttributeRxTotalCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxTotalCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxTotalCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29346,21 +29404,21 @@ - (void)subscribeAttributeRxUnicastCountWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxUnicastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxUnicastCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29388,21 +29446,22 @@ - (void)subscribeAttributeRxBroadcastCountWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxBroadcastCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBroadcastCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29430,21 +29489,21 @@ - (void)subscribeAttributeRxDataCountWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxDataCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29472,21 +29531,22 @@ - (void)subscribeAttributeRxDataPollCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxDataPollCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDataPollCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29514,21 +29574,21 @@ - (void)subscribeAttributeRxBeaconCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxBeaconCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29557,22 +29617,22 @@ - (void)subscribeAttributeRxBeaconRequestCountWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxBeaconRequestCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxBeaconRequestCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29600,21 +29660,21 @@ - (void)subscribeAttributeRxOtherCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxOtherCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29644,22 +29704,22 @@ - (void)subscribeAttributeRxAddressFilteredCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxAddressFilteredCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxAddressFilteredCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29689,22 +29749,22 @@ - (void)subscribeAttributeRxDestAddrFilteredCountWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxDestAddrFilteredCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDestAddrFilteredCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29732,21 +29792,22 @@ - (void)subscribeAttributeRxDuplicatedCountWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxDuplicatedCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxDuplicatedCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29774,21 +29835,22 @@ - (void)subscribeAttributeRxErrNoFrameCountWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrNoFrameCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrNoFrameCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29818,22 +29880,22 @@ - (void)subscribeAttributeRxErrUnknownNeighborCountWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeRxErrUnknownNeighborCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrUnknownNeighborCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29863,22 +29925,22 @@ - (void)subscribeAttributeRxErrInvalidSrcAddrCountWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrInvalidSrcAddrCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrInvalidSrcAddrCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29906,21 +29968,21 @@ - (void)subscribeAttributeRxErrSecCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrSecCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrSecCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29948,21 +30010,21 @@ - (void)subscribeAttributeRxErrFcsCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrFcsCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrFcsCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -29990,21 +30052,22 @@ - (void)subscribeAttributeRxErrOtherCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRxErrOtherCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::RxErrOtherCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30032,21 +30095,22 @@ - (void)subscribeAttributeActiveTimestampWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveTimestamp::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30074,21 +30138,22 @@ - (void)subscribeAttributePendingTimestampWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePendingTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::PendingTimestamp::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30116,21 +30181,21 @@ - (void)subscribeAttributeDelayWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::Delay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30161,23 +30226,24 @@ - (void)subscribeAttributeSecurityPolicyWithParams:(MTRSubscribeParams * _Nonnul
         self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
-                                                          NSError * _Nullable error))completion
++ (void)readAttributeSecurityPolicyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:
+                                                  (void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
+                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsSecurityPolicyStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::SecurityPolicy::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30205,21 +30271,21 @@ - (void)subscribeAttributeChannelPage0MaskWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelPage0MaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ChannelPage0Mask::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30255,25 +30321,25 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletion:
 }
 
 + (void)
-    readAttributeOperationalDatasetComponentsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(
-                                                             MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
-                                                             NSError * _Nullable error))completion
+    readAttributeOperationalDatasetComponentsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:
+                                                            (void (^)(
+                                                                MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
+                                                                NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsOperationalDatasetComponentsStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::OperationalDatasetComponents::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30304,23 +30370,23 @@ - (void)subscribeAttributeActiveNetworkFaultsListWithParams:(MTRSubscribeParams
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveNetworkFaultsListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSArray * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsActiveNetworkFaultsListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::ActiveNetworkFaultsList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30350,23 +30416,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30396,23 +30462,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30440,22 +30506,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThreadNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThreadNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThreadNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -30483,21 +30549,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30525,21 +30591,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -30595,13 +30662,13 @@ + (void)readAttributeChannelWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeChannelWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeRoutingRoleWithCompletionHandler:(void (^)(
@@ -30638,13 +30705,13 @@ + (void)readAttributeRoutingRoleWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRoutingRoleWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeRoutingRoleWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNetworkNameWithCompletionHandler:(void (^)(
@@ -30681,13 +30748,13 @@ + (void)readAttributeNetworkNameWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNetworkNameWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeNetworkNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributePanIdWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -30722,13 +30789,13 @@ + (void)readAttributePanIdWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePanIdWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributePanIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeExtendedPanIdWithCompletionHandler:(void (^)(
@@ -30766,13 +30833,13 @@ + (void)readAttributeExtendedPanIdWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExtendedPanIdWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeExtendedPanIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMeshLocalPrefixWithCompletionHandler:(void (^)(
@@ -30810,13 +30877,13 @@ + (void)readAttributeMeshLocalPrefixWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeshLocalPrefixWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeMeshLocalPrefixWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
@@ -30853,13 +30920,13 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeOverrunCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeNeighborTableListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -30897,13 +30964,13 @@ + (void)readAttributeNeighborTableListWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNeighborTableListWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeNeighborTableListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRouteTableListWithCompletionHandler:(void (^)(
@@ -30941,13 +31008,13 @@ + (void)readAttributeRouteTableListWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRouteTableListWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeRouteTableListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePartitionIdWithCompletionHandler:(void (^)(
@@ -30984,13 +31051,13 @@ + (void)readAttributePartitionIdWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartitionIdWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributePartitionIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeWeightingWithCompletionHandler:(void (^)(
@@ -31026,13 +31093,13 @@ + (void)readAttributeWeightingWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWeightingWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeWeightingWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDataVersionWithCompletionHandler:(void (^)(
@@ -31069,13 +31136,13 @@ + (void)readAttributeDataVersionWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDataVersionWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeDataVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeStableDataVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31114,13 +31181,13 @@ + (void)readAttributeStableDataVersionWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStableDataVersionWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeStableDataVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeLeaderRouterIdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31158,13 +31225,13 @@ + (void)readAttributeLeaderRouterIdWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLeaderRouterIdWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeLeaderRouterIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeDetachedRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31203,13 +31270,13 @@ + (void)readAttributeDetachedRoleCountWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDetachedRoleCountWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeDetachedRoleCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeChildRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31247,13 +31314,13 @@ + (void)readAttributeChildRoleCountWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChildRoleCountWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeChildRoleCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRouterRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31291,13 +31358,13 @@ + (void)readAttributeRouterRoleCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRouterRoleCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeRouterRoleCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeLeaderRoleCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31335,13 +31402,13 @@ + (void)readAttributeLeaderRoleCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLeaderRoleCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeLeaderRoleCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeAttachAttemptCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31380,13 +31447,13 @@ + (void)readAttributeAttachAttemptCountWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttachAttemptCountWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeAttachAttemptCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributePartitionIdChangeCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31425,13 +31492,13 @@ + (void)readAttributePartitionIdChangeCountWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartitionIdChangeCountWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributePartitionIdChangeCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeBetterPartitionAttachAttemptCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31470,14 +31537,14 @@ + (void)readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeBetterPartitionAttachAttemptCountWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self readAttributeBetterPartitionAttachAttemptCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                     endpoint:endpoint
+                                                                        queue:queue
+                                                                   completion:^(
+                                                                       NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                       // Cast is safe because subclass does not add any selectors.
+                                                                       completionHandler(static_cast(value), error);
+                                                                   }];
 }
 
 - (void)readAttributeParentChangeCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31516,13 +31583,13 @@ + (void)readAttributeParentChangeCountWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeParentChangeCountWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeParentChangeCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeTxTotalCountWithCompletionHandler:(void (^)(
@@ -31559,13 +31626,13 @@ + (void)readAttributeTxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxTotalCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeTxTotalCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxUnicastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31603,13 +31670,13 @@ + (void)readAttributeTxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxUnicastCountWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeTxUnicastCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeTxBroadcastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31647,13 +31714,13 @@ + (void)readAttributeTxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBroadcastCountWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeTxBroadcastCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTxAckRequestedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31692,13 +31759,13 @@ + (void)readAttributeTxAckRequestedCountWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxAckRequestedCountWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeTxAckRequestedCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeTxAckedCountWithCompletionHandler:(void (^)(
@@ -31735,13 +31802,13 @@ + (void)readAttributeTxAckedCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxAckedCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeTxAckedCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxNoAckRequestedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31780,13 +31847,13 @@ + (void)readAttributeTxNoAckRequestedCountWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxNoAckRequestedCountWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeTxNoAckRequestedCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeTxDataCountWithCompletionHandler:(void (^)(
@@ -31823,13 +31890,13 @@ + (void)readAttributeTxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDataCountWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeTxDataCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeTxDataPollCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31867,13 +31934,13 @@ + (void)readAttributeTxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDataPollCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeTxDataPollCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeTxBeaconCountWithCompletionHandler:(void (^)(
@@ -31911,13 +31978,13 @@ + (void)readAttributeTxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBeaconCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeTxBeaconCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTxBeaconRequestCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -31956,13 +32023,13 @@ + (void)readAttributeTxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxBeaconRequestCountWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeTxBeaconRequestCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeTxOtherCountWithCompletionHandler:(void (^)(
@@ -31999,13 +32066,13 @@ + (void)readAttributeTxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxOtherCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeTxOtherCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxRetryCountWithCompletionHandler:(void (^)(
@@ -32042,13 +32109,13 @@ + (void)readAttributeTxRetryCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxRetryCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeTxRetryCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeTxDirectMaxRetryExpiryCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32087,13 +32154,13 @@ + (void)readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxDirectMaxRetryExpiryCountWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeTxDirectMaxRetryExpiryCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeTxIndirectMaxRetryExpiryCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32132,13 +32199,13 @@ + (void)readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxIndirectMaxRetryExpiryCountWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeTxIndirectMaxRetryExpiryCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeTxErrCcaCountWithCompletionHandler:(void (^)(
@@ -32176,13 +32243,13 @@ + (void)readAttributeTxErrCcaCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrCcaCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeTxErrCcaCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTxErrAbortCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32220,13 +32287,13 @@ + (void)readAttributeTxErrAbortCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrAbortCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeTxErrAbortCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeTxErrBusyChannelCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32265,13 +32332,13 @@ + (void)readAttributeTxErrBusyChannelCountWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrBusyChannelCountWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeTxErrBusyChannelCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRxTotalCountWithCompletionHandler:(void (^)(
@@ -32308,13 +32375,13 @@ + (void)readAttributeRxTotalCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxTotalCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeRxTotalCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeRxUnicastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32352,13 +32419,13 @@ + (void)readAttributeRxUnicastCountWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxUnicastCountWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeRxUnicastCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeRxBroadcastCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32396,13 +32463,13 @@ + (void)readAttributeRxBroadcastCountWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBroadcastCountWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRxBroadcastCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRxDataCountWithCompletionHandler:(void (^)(
@@ -32439,13 +32506,13 @@ + (void)readAttributeRxDataCountWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDataCountWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeRxDataCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeRxDataPollCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32483,13 +32550,13 @@ + (void)readAttributeRxDataPollCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDataPollCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeRxDataPollCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeRxBeaconCountWithCompletionHandler:(void (^)(
@@ -32527,13 +32594,13 @@ + (void)readAttributeRxBeaconCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBeaconCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRxBeaconCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRxBeaconRequestCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32572,13 +32639,13 @@ + (void)readAttributeRxBeaconRequestCountWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxBeaconRequestCountWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeRxBeaconRequestCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeRxOtherCountWithCompletionHandler:(void (^)(
@@ -32615,13 +32682,13 @@ + (void)readAttributeRxOtherCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxOtherCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeRxOtherCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeRxAddressFilteredCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32660,13 +32727,13 @@ + (void)readAttributeRxAddressFilteredCountWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxAddressFilteredCountWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeRxAddressFilteredCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRxDestAddrFilteredCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32705,13 +32772,13 @@ + (void)readAttributeRxDestAddrFilteredCountWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDestAddrFilteredCountWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeRxDestAddrFilteredCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeRxDuplicatedCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32750,13 +32817,13 @@ + (void)readAttributeRxDuplicatedCountWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxDuplicatedCountWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeRxDuplicatedCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRxErrNoFrameCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32795,13 +32862,13 @@ + (void)readAttributeRxErrNoFrameCountWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrNoFrameCountWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeRxErrNoFrameCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRxErrUnknownNeighborCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32840,13 +32907,13 @@ + (void)readAttributeRxErrUnknownNeighborCountWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrUnknownNeighborCountWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeRxErrUnknownNeighborCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeRxErrInvalidSrcAddrCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -32885,13 +32952,13 @@ + (void)readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrInvalidSrcAddrCountWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeRxErrInvalidSrcAddrCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeRxErrSecCountWithCompletionHandler:(void (^)(
@@ -32929,13 +32996,13 @@ + (void)readAttributeRxErrSecCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrSecCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRxErrSecCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRxErrFcsCountWithCompletionHandler:(void (^)(
@@ -32973,13 +33040,13 @@ + (void)readAttributeRxErrFcsCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrFcsCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRxErrFcsCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRxErrOtherCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -33017,13 +33084,13 @@ + (void)readAttributeRxErrOtherCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRxErrOtherCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeRxErrOtherCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeActiveTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -33061,13 +33128,13 @@ + (void)readAttributeActiveTimestampWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveTimestampWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeActiveTimestampWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePendingTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -33105,13 +33172,13 @@ + (void)readAttributePendingTimestampWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePendingTimestampWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributePendingTimestampWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -33146,13 +33213,13 @@ + (void)readAttributeDelayWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDelayWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeSecurityPolicyWithCompletionHandler:
@@ -33194,15 +33261,16 @@ + (void)readAttributeSecurityPolicyWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:(void (^)(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSecurityPolicyWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
-                                                 NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(
-                                                     static_cast(value), error);
-                                             }];
+    [self readAttributeSecurityPolicyWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(MTRThreadNetworkDiagnosticsClusterSecurityPolicy * _Nullable value,
+                                                    NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(
+                                                        static_cast(value),
+                                                        error);
+                                                }];
 }
 
 - (void)readAttributeChannelPage0MaskWithCompletionHandler:(void (^)(NSData * _Nullable value,
@@ -33240,13 +33308,13 @@ + (void)readAttributeChannelPage0MaskWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelPage0MaskWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeChannelPage0MaskWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOperationalDatasetComponentsWithCompletionHandler:
@@ -33301,19 +33369,19 @@ - (void)readAttributeOperationalDatasetComponentsWithCompletionHandler:
                                                       NSError * _Nullable error))completionHandler
 {
     [self
-        readAttributeOperationalDatasetComponentsWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(
-                                                             MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
-                                                             NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(
-                                                                 static_cast<
-                                                                     MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents *>(
-                                                                     value),
-                                                                 error);
-                                                         }];
+        readAttributeOperationalDatasetComponentsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(
+                                                                MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents * _Nullable value,
+                                                                NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(
+                                                                    static_cast<
+                                                                        MTRThreadNetworkDiagnosticsClusterOperationalDatasetComponents *>(
+                                                                        value),
+                                                                    error);
+                                                            }];
 }
 
 - (void)readAttributeActiveNetworkFaultsListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -33352,13 +33420,13 @@ + (void)readAttributeActiveNetworkFaultsListWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveNetworkFaultsListWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeActiveNetworkFaultsListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -33397,13 +33465,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -33442,13 +33510,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -33485,13 +33553,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -33527,13 +33595,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -33571,13 +33639,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -33652,21 +33720,21 @@ - (void)subscribeAttributeBssidWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBssidWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::Bssid::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33695,22 +33763,22 @@ - (void)subscribeAttributeSecurityTypeWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSecurityTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableWiFiNetworkDiagnosticsClusterSecurityTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WiFiNetworkDiagnostics::Attributes::SecurityType::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -33739,22 +33807,22 @@ - (void)subscribeAttributeWiFiVersionWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWiFiVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableWiFiNetworkDiagnosticsClusterWiFiVersionTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WiFiNetworkDiagnostics::Attributes::WiFiVersion::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -33782,21 +33850,21 @@ - (void)subscribeAttributeChannelNumberWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::ChannelNumber::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33824,21 +33892,21 @@ - (void)subscribeAttributeRssiWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRssiWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::Rssi::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33866,21 +33934,22 @@ - (void)subscribeAttributeBeaconLostCountWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBeaconLostCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconLostCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33908,21 +33977,21 @@ - (void)subscribeAttributeBeaconRxCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBeaconRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::BeaconRxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33952,22 +34021,22 @@ - (void)subscribeAttributePacketMulticastRxCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketMulticastRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastRxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -33997,22 +34066,22 @@ - (void)subscribeAttributePacketMulticastTxCountWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketMulticastTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketMulticastTxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34041,22 +34110,22 @@ - (void)subscribeAttributePacketUnicastRxCountWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketUnicastRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastRxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34085,22 +34154,22 @@ - (void)subscribeAttributePacketUnicastTxCountWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketUnicastTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::PacketUnicastTxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34128,21 +34197,21 @@ - (void)subscribeAttributeCurrentMaxRateWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentMaxRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::CurrentMaxRate::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34170,21 +34239,21 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34214,23 +34283,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WiFiNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WiFiNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -34260,23 +34329,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WiFiNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WiFiNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -34304,22 +34373,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWiFiNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WiFiNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WiFiNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -34347,21 +34416,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34389,21 +34458,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WiFiNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -34459,13 +34529,13 @@ + (void)readAttributeBssidWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBssidWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeBssidWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeSecurityTypeWithCompletionHandler:(void (^)(
@@ -34502,13 +34572,13 @@ + (void)readAttributeSecurityTypeWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSecurityTypeWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSecurityTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeWiFiVersionWithCompletionHandler:(void (^)(
@@ -34545,13 +34615,13 @@ + (void)readAttributeWiFiVersionWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWiFiVersionWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeWiFiVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeChannelNumberWithCompletionHandler:(void (^)(
@@ -34589,13 +34659,13 @@ + (void)readAttributeChannelNumberWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelNumberWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeChannelNumberWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRssiWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -34630,13 +34700,13 @@ + (void)readAttributeRssiWithAttributeCache:(MTRAttributeCacheContainer *)attrib
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRssiWithAttributeCache:attributeCacheContainer
-                                     endpoint:endpoint
-                                        queue:queue
-                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                       // Cast is safe because subclass does not add any selectors.
-                                       completionHandler(static_cast(value), error);
-                                   }];
+    [self readAttributeRssiWithClusterStateCache:attributeCacheContainer.realContainer
+                                        endpoint:endpoint
+                                           queue:queue
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeBeaconLostCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34674,13 +34744,13 @@ + (void)readAttributeBeaconLostCountWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBeaconLostCountWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeBeaconLostCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeBeaconRxCountWithCompletionHandler:(void (^)(
@@ -34718,13 +34788,13 @@ + (void)readAttributeBeaconRxCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBeaconRxCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeBeaconRxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributePacketMulticastRxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34763,13 +34833,13 @@ + (void)readAttributePacketMulticastRxCountWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketMulticastRxCountWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributePacketMulticastRxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributePacketMulticastTxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34808,13 +34878,13 @@ + (void)readAttributePacketMulticastTxCountWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketMulticastTxCountWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributePacketMulticastTxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributePacketUnicastRxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34853,13 +34923,13 @@ + (void)readAttributePacketUnicastRxCountWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketUnicastRxCountWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributePacketUnicastRxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributePacketUnicastTxCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34898,13 +34968,13 @@ + (void)readAttributePacketUnicastTxCountWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketUnicastTxCountWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributePacketUnicastTxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeCurrentMaxRateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -34942,13 +35012,13 @@ + (void)readAttributeCurrentMaxRateWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentMaxRateWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeCurrentMaxRateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
@@ -34985,13 +35055,13 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeOverrunCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -35030,13 +35100,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -35075,13 +35145,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -35118,13 +35188,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -35160,13 +35230,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -35204,13 +35274,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -35286,22 +35356,22 @@ - (void)subscribeAttributePHYRateWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePHYRateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableEthernetNetworkDiagnosticsClusterPHYRateTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = EthernetNetworkDiagnostics::Attributes::PHYRate::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -35329,21 +35399,21 @@ - (void)subscribeAttributeFullDuplexWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFullDuplexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::FullDuplex::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35371,21 +35441,21 @@ - (void)subscribeAttributePacketRxCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketRxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketRxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35413,21 +35483,21 @@ - (void)subscribeAttributePacketTxCountWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePacketTxCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::PacketTxCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35455,21 +35525,21 @@ - (void)subscribeAttributeTxErrCountWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTxErrCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::TxErrCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35497,21 +35567,21 @@ - (void)subscribeAttributeCollisionCountWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCollisionCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::CollisionCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35539,21 +35609,21 @@ - (void)subscribeAttributeOverrunCountWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverrunCountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::OverrunCount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35581,21 +35651,21 @@ - (void)subscribeAttributeCarrierDetectWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCarrierDetectWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::CarrierDetect::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35623,21 +35693,21 @@ - (void)subscribeAttributeTimeSinceResetWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTimeSinceResetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::TimeSinceReset::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35667,23 +35737,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTREthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(EthernetNetworkDiagnosticsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = EthernetNetworkDiagnostics::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -35713,23 +35783,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTREthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(EthernetNetworkDiagnosticsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = EthernetNetworkDiagnostics::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -35758,22 +35828,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTREthernetNetworkDiagnosticsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(EthernetNetworkDiagnosticsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = EthernetNetworkDiagnostics::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -35801,21 +35871,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35843,21 +35913,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = EthernetNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -35913,13 +35984,13 @@ + (void)readAttributePHYRateWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePHYRateWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributePHYRateWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeFullDuplexWithCompletionHandler:(void (^)(
@@ -35955,13 +36026,13 @@ + (void)readAttributeFullDuplexWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFullDuplexWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFullDuplexWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributePacketRxCountWithCompletionHandler:(void (^)(
@@ -35999,13 +36070,13 @@ + (void)readAttributePacketRxCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketRxCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributePacketRxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributePacketTxCountWithCompletionHandler:(void (^)(
@@ -36043,13 +36114,13 @@ + (void)readAttributePacketTxCountWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePacketTxCountWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributePacketTxCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTxErrCountWithCompletionHandler:(void (^)(
@@ -36085,13 +36156,13 @@ + (void)readAttributeTxErrCountWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTxErrCountWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeTxErrCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCollisionCountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -36129,13 +36200,13 @@ + (void)readAttributeCollisionCountWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCollisionCountWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeCollisionCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeOverrunCountWithCompletionHandler:(void (^)(
@@ -36172,13 +36243,13 @@ + (void)readAttributeOverrunCountWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverrunCountWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeOverrunCountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCarrierDetectWithCompletionHandler:(void (^)(
@@ -36216,13 +36287,13 @@ + (void)readAttributeCarrierDetectWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCarrierDetectWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeCarrierDetectWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeTimeSinceResetWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -36260,13 +36331,13 @@ + (void)readAttributeTimeSinceResetWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTimeSinceResetWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeTimeSinceResetWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -36305,13 +36376,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -36350,13 +36421,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -36393,13 +36464,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -36435,13 +36506,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -36479,13 +36550,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -36528,21 +36599,21 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::VendorName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36570,21 +36641,21 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::VendorID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36612,21 +36683,21 @@ - (void)subscribeAttributeProductNameWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::ProductName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36691,21 +36762,21 @@ - (void)subscribeAttributeNodeLabelWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNodeLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::NodeLabel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36733,21 +36804,22 @@ - (void)subscribeAttributeHardwareVersionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHardwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36776,22 +36848,22 @@ - (void)subscribeAttributeHardwareVersionStringWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeHardwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::HardwareVersionString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36819,21 +36891,22 @@ - (void)subscribeAttributeSoftwareVersionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoftwareVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36862,22 +36935,22 @@ - (void)subscribeAttributeSoftwareVersionStringWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoftwareVersionStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::SoftwareVersionString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36905,21 +36978,22 @@ - (void)subscribeAttributeManufacturingDateWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeManufacturingDateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::ManufacturingDate::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36947,21 +37021,21 @@ - (void)subscribeAttributePartNumberWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePartNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::PartNumber::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -36989,21 +37063,21 @@ - (void)subscribeAttributeProductURLWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductURLWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::ProductURL::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37031,21 +37105,21 @@ - (void)subscribeAttributeProductLabelWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductLabelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::ProductLabel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37073,21 +37147,21 @@ - (void)subscribeAttributeSerialNumberWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSerialNumberWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::SerialNumber::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37115,21 +37189,21 @@ - (void)subscribeAttributeReachableWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReachableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::Reachable::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37157,21 +37231,21 @@ - (void)subscribeAttributeUniqueIDWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUniqueIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::UniqueID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37200,23 +37274,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBridgedDeviceBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BridgedDeviceBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BridgedDeviceBasic::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -37245,23 +37319,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBridgedDeviceBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BridgedDeviceBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BridgedDeviceBasic::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -37289,22 +37363,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBridgedDeviceBasicAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BridgedDeviceBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BridgedDeviceBasic::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -37332,21 +37406,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37374,21 +37448,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BridgedDeviceBasic::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -37435,13 +37510,13 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeVendorNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
@@ -37477,13 +37552,13 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeVendorIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeProductNameWithCompletionHandler:(void (^)(
@@ -37520,13 +37595,13 @@ + (void)readAttributeProductNameWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductNameWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeProductNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNodeLabelWithCompletionHandler:(void (^)(
@@ -37572,13 +37647,13 @@ + (void)readAttributeNodeLabelWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNodeLabelWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeNodeLabelWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeHardwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -37616,13 +37691,13 @@ + (void)readAttributeHardwareVersionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeHardwareVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeHardwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -37661,13 +37736,13 @@ + (void)readAttributeHardwareVersionStringWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHardwareVersionStringWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeHardwareVersionStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeSoftwareVersionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -37705,13 +37780,13 @@ + (void)readAttributeSoftwareVersionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeSoftwareVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeSoftwareVersionStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -37750,13 +37825,13 @@ + (void)readAttributeSoftwareVersionStringWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoftwareVersionStringWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeSoftwareVersionStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeManufacturingDateWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -37795,13 +37870,13 @@ + (void)readAttributeManufacturingDateWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeManufacturingDateWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeManufacturingDateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePartNumberWithCompletionHandler:(void (^)(
@@ -37837,13 +37912,13 @@ + (void)readAttributePartNumberWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePartNumberWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributePartNumberWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeProductURLWithCompletionHandler:(void (^)(
@@ -37879,13 +37954,13 @@ + (void)readAttributeProductURLWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductURLWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeProductURLWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeProductLabelWithCompletionHandler:(void (^)(
@@ -37922,13 +37997,13 @@ + (void)readAttributeProductLabelWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductLabelWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeProductLabelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSerialNumberWithCompletionHandler:(void (^)(
@@ -37965,13 +38040,13 @@ + (void)readAttributeSerialNumberWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSerialNumberWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSerialNumberWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeReachableWithCompletionHandler:(void (^)(
@@ -38007,13 +38082,13 @@ + (void)readAttributeReachableWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReachableWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeReachableWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeUniqueIDWithCompletionHandler:(void (^)(
@@ -38049,13 +38124,13 @@ + (void)readAttributeUniqueIDWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUniqueIDWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeUniqueIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -38094,13 +38169,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -38139,13 +38214,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -38182,13 +38257,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -38224,13 +38299,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -38268,13 +38343,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -38317,21 +38392,22 @@ - (void)subscribeAttributeNumberOfPositionsWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNumberOfPositionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::NumberOfPositions::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38359,21 +38435,22 @@ - (void)subscribeAttributeCurrentPositionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::CurrentPosition::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38401,21 +38478,21 @@ - (void)subscribeAttributeMultiPressMaxWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMultiPressMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::MultiPressMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38444,23 +38521,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSwitchGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(SwitchGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Switch::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -38489,22 +38566,22 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSwitchAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(SwitchAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::AcceptedCommandList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38532,21 +38609,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRSwitchAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(SwitchAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38574,21 +38651,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38616,21 +38693,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Switch::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -38680,13 +38758,13 @@ + (void)readAttributeNumberOfPositionsWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPositionsWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeNumberOfPositionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeCurrentPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -38724,13 +38802,13 @@ + (void)readAttributeCurrentPositionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeCurrentPositionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeMultiPressMaxWithCompletionHandler:(void (^)(
@@ -38768,13 +38846,13 @@ + (void)readAttributeMultiPressMaxWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMultiPressMaxWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMultiPressMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -38813,13 +38891,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -38858,13 +38936,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -38901,13 +38979,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -38943,13 +39021,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -38987,13 +39065,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -39140,22 +39218,22 @@ - (void)subscribeAttributeWindowStatusWithParams:(MTRSubscribeParams * _Nonnull)
         self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindowStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAdministratorCommissioningClusterCommissioningWindowStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AdministratorCommissioningClusterCommissioningWindowStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AdministratorCommissioning::Attributes::WindowStatus::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -39183,21 +39261,22 @@ - (void)subscribeAttributeAdminFabricIndexWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAdminFabricIndexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AdministratorCommissioning::Attributes::AdminFabricIndex::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -39225,21 +39304,21 @@ - (void)subscribeAttributeAdminVendorIdWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAdminVendorIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AdministratorCommissioning::Attributes::AdminVendorId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -39269,23 +39348,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAdministratorCommissioningGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AdministratorCommissioningGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AdministratorCommissioning::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -39315,23 +39394,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAdministratorCommissioningAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AdministratorCommissioningAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AdministratorCommissioning::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -39360,22 +39439,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAdministratorCommissioningAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AdministratorCommissioningAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AdministratorCommissioning::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -39403,21 +39482,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AdministratorCommissioning::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -39445,21 +39524,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AdministratorCommissioning::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -39527,13 +39607,13 @@ + (void)readAttributeWindowStatusWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindowStatusWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeWindowStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeAdminFabricIndexWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -39571,13 +39651,13 @@ + (void)readAttributeAdminFabricIndexWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAdminFabricIndexWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeAdminFabricIndexWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAdminVendorIdWithCompletionHandler:(void (^)(
@@ -39615,13 +39695,13 @@ + (void)readAttributeAdminVendorIdWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAdminVendorIdWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAdminVendorIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -39660,13 +39740,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -39705,13 +39785,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -39748,13 +39828,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -39790,13 +39870,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -39834,13 +39914,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -40118,22 +40198,22 @@ - (void)subscribeAttributeNOCsWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNOCsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsNOCsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsNOCsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::NOCs::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40162,22 +40242,22 @@ - (void)subscribeAttributeFabricsWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsFabricsListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsFabricsListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::Fabrics::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40205,21 +40285,22 @@ - (void)subscribeAttributeSupportedFabricsWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OperationalCredentials::Attributes::SupportedFabrics::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -40248,22 +40329,22 @@ - (void)subscribeAttributeCommissionedFabricsWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCommissionedFabricsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OperationalCredentials::Attributes::CommissionedFabrics::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -40294,23 +40375,23 @@ - (void)subscribeAttributeTrustedRootCertificatesWithParams:(MTRSubscribeParams
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTrustedRootCertificatesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSArray * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsTrustedRootCertificatesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsTrustedRootCertificatesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::TrustedRootCertificates::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40339,22 +40420,22 @@ - (void)subscribeAttributeCurrentFabricIndexWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentFabricIndexWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OperationalCredentials::Attributes::CurrentFabricIndex::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -40384,23 +40465,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40430,23 +40511,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40474,22 +40555,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROperationalCredentialsAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OperationalCredentialsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OperationalCredentials::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -40517,21 +40598,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OperationalCredentials::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -40559,21 +40640,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OperationalCredentials::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -40703,13 +40785,13 @@ + (void)readAttributeNOCsWithAttributeCache:(MTRAttributeCacheContainer *)attrib
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNOCsWithAttributeCache:attributeCacheContainer
-                                     endpoint:endpoint
-                                        queue:queue
-                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                       // Cast is safe because subclass does not add any selectors.
-                                       completionHandler(static_cast(value), error);
-                                   }];
+    [self readAttributeNOCsWithClusterStateCache:attributeCacheContainer.realContainer
+                                        endpoint:endpoint
+                                           queue:queue
+                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeFabricsWithParams:(MTRReadParams * _Nullable)params
@@ -40746,13 +40828,13 @@ + (void)readAttributeFabricsWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFabricsWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeFabricsWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeSupportedFabricsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -40790,13 +40872,13 @@ + (void)readAttributeSupportedFabricsWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedFabricsWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeSupportedFabricsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeCommissionedFabricsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -40835,13 +40917,13 @@ + (void)readAttributeCommissionedFabricsWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCommissionedFabricsWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeCommissionedFabricsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeTrustedRootCertificatesWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -40880,13 +40962,13 @@ + (void)readAttributeTrustedRootCertificatesWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTrustedRootCertificatesWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeTrustedRootCertificatesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeCurrentFabricIndexWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -40925,13 +41007,13 @@ + (void)readAttributeCurrentFabricIndexWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentFabricIndexWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeCurrentFabricIndexWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -40970,13 +41052,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -41015,13 +41097,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -41058,13 +41140,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -41100,13 +41182,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -41144,13 +41226,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -41424,22 +41506,22 @@ - (void)subscribeAttributeGroupKeyMapWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGroupKeyMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupKeyManagementGroupKeyMapListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupKeyManagementGroupKeyMapListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GroupKeyManagement::Attributes::GroupKeyMap::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -41468,22 +41550,22 @@ - (void)subscribeAttributeGroupTableWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGroupTableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupKeyManagementGroupTableListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupKeyManagementGroupTableListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GroupKeyManagement::Attributes::GroupTable::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -41512,22 +41594,22 @@ - (void)subscribeAttributeMaxGroupsPerFabricWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxGroupsPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GroupKeyManagement::Attributes::MaxGroupsPerFabric::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -41556,22 +41638,22 @@ - (void)subscribeAttributeMaxGroupKeysPerFabricWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxGroupKeysPerFabricWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GroupKeyManagement::Attributes::MaxGroupKeysPerFabric::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -41600,23 +41682,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupKeyManagementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupKeyManagementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GroupKeyManagement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -41645,23 +41727,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupKeyManagementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupKeyManagementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GroupKeyManagement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -41689,22 +41771,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRGroupKeyManagementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(GroupKeyManagementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = GroupKeyManagement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -41732,21 +41814,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GroupKeyManagement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -41774,21 +41856,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = GroupKeyManagement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -41879,13 +41962,13 @@ + (void)readAttributeGroupKeyMapWithAttributeCache:(MTRAttributeCacheContainer *
                                              queue:(dispatch_queue_t)queue
                                  completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGroupKeyMapWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeGroupKeyMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGroupTableWithParams:(MTRReadParams * _Nullable)params
@@ -41922,13 +42005,13 @@ + (void)readAttributeGroupTableWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGroupTableWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeGroupTableWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeMaxGroupsPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -41967,13 +42050,13 @@ + (void)readAttributeMaxGroupsPerFabricWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxGroupsPerFabricWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeMaxGroupsPerFabricWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeMaxGroupKeysPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -42012,13 +42095,13 @@ + (void)readAttributeMaxGroupKeysPerFabricWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxGroupKeysPerFabricWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeMaxGroupKeysPerFabricWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -42057,13 +42140,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -42102,13 +42185,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -42145,13 +42228,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -42187,13 +42270,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -42231,13 +42314,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -42280,21 +42363,21 @@ - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLabelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFixedLabelLabelListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FixedLabelLabelListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FixedLabel::Attributes::LabelList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -42323,23 +42406,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFixedLabelGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FixedLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FixedLabel::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -42368,23 +42451,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFixedLabelAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FixedLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FixedLabel::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -42412,21 +42495,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFixedLabelAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FixedLabelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FixedLabel::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -42454,21 +42537,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FixedLabel::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -42496,21 +42579,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FixedLabel::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -42557,13 +42641,13 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLabelListWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeLabelListWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -42602,13 +42686,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -42647,13 +42731,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -42690,13 +42774,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -42732,13 +42816,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -42776,13 +42860,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -42884,21 +42968,21 @@ - (void)subscribeAttributeLabelListWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLabelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUserLabelLabelListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UserLabelLabelListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -42927,23 +43011,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUserLabelGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UserLabelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UserLabel::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -42972,23 +43056,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUserLabelAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UserLabelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UserLabel::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -43016,21 +43100,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUserLabelAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UserLabelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UserLabel::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43058,21 +43142,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UserLabel::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43100,21 +43184,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43171,13 +43256,13 @@ + (void)readAttributeLabelListWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLabelListWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeLabelListWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -43216,13 +43301,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -43261,13 +43346,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -43304,13 +43389,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -43346,13 +43431,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -43390,13 +43475,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -43439,21 +43524,21 @@ - (void)subscribeAttributeStateValueWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStateValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BooleanState::Attributes::StateValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43482,23 +43567,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanStateGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BooleanStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BooleanState::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -43527,23 +43612,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanStateAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BooleanStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BooleanState::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -43571,21 +43656,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanStateAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BooleanState::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43613,21 +43698,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BooleanState::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43655,21 +43740,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BooleanState::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -43716,13 +43802,13 @@ + (void)readAttributeStateValueWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStateValueWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeStateValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -43761,13 +43847,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -43806,13 +43892,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -43849,13 +43935,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -43891,13 +43977,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -43935,13 +44021,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -44012,21 +44098,21 @@ - (void)subscribeAttributeDescriptionWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDescriptionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::Description::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44054,21 +44140,22 @@ - (void)subscribeAttributeStandardNamespaceWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStandardNamespaceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::StandardNamespace::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44096,21 +44183,21 @@ - (void)subscribeAttributeSupportedModesWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedModesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRModeSelectSupportedModesListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ModeSelectSupportedModesListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::SupportedModes::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44138,21 +44225,21 @@ - (void)subscribeAttributeCurrentModeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::CurrentMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44222,21 +44309,21 @@ - (void)subscribeAttributeStartUpModeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartUpModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::StartUpMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44306,21 +44393,21 @@ - (void)subscribeAttributeOnModeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOnModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::OnMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44349,23 +44436,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRModeSelectGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ModeSelectGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ModeSelect::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -44394,23 +44481,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRModeSelectAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ModeSelectAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ModeSelect::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -44438,21 +44525,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRModeSelectAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ModeSelectAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44480,21 +44567,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44522,21 +44609,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ModeSelect::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -44590,13 +44678,13 @@ + (void)readAttributeDescriptionWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDescriptionWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeDescriptionWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeStandardNamespaceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -44635,13 +44723,13 @@ + (void)readAttributeStandardNamespaceWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStandardNamespaceWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeStandardNamespaceWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeSupportedModesWithCompletionHandler:(void (^)(
@@ -44679,13 +44767,13 @@ + (void)readAttributeSupportedModesWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedModesWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeSupportedModesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeCurrentModeWithCompletionHandler:(void (^)(
@@ -44722,13 +44810,13 @@ + (void)readAttributeCurrentModeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentModeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeCurrentModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeStartUpModeWithCompletionHandler:(void (^)(
@@ -44775,13 +44863,13 @@ + (void)readAttributeStartUpModeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpModeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeStartUpModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOnModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -44826,13 +44914,13 @@ + (void)readAttributeOnModeWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOnModeWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeOnModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -44871,13 +44959,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -44916,13 +45004,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -44959,13 +45047,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -45001,13 +45089,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -45045,13 +45133,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -45712,22 +45800,22 @@ - (void)subscribeAttributeLockStateWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLockStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableDoorLockClusterDlLockStateAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableDoorLockClusterDlLockStateAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::LockState::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -45755,21 +45843,21 @@ - (void)subscribeAttributeLockTypeWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLockTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockClusterDlLockTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DoorLockClusterDlLockTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::LockType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -45797,21 +45885,22 @@ - (void)subscribeAttributeActuatorEnabledWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActuatorEnabledWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::ActuatorEnabled::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -45839,22 +45928,22 @@ - (void)subscribeAttributeDoorStateWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDoorStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableDoorLockClusterDlDoorStateAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableDoorLockClusterDlDoorStateAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::DoorState::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -45919,21 +46008,21 @@ - (void)subscribeAttributeDoorOpenEventsWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDoorOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::DoorOpenEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -45998,21 +46087,22 @@ - (void)subscribeAttributeDoorClosedEventsWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDoorClosedEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::DoorClosedEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46077,21 +46167,21 @@ - (void)subscribeAttributeOpenPeriodWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOpenPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::OpenPeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46121,22 +46211,22 @@ - (void)subscribeAttributeNumberOfTotalUsersSupportedWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeNumberOfTotalUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfTotalUsersSupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46166,22 +46256,22 @@ - (void)subscribeAttributeNumberOfPINUsersSupportedWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeNumberOfPINUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfPINUsersSupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46211,22 +46301,22 @@ - (void)subscribeAttributeNumberOfRFIDUsersSupportedWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeNumberOfRFIDUsersSupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfRFIDUsersSupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46257,23 +46347,23 @@ - (void)subscribeAttributeNumberOfWeekDaySchedulesSupportedPerUserWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfWeekDaySchedulesSupportedPerUser::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46304,23 +46394,23 @@ - (void)subscribeAttributeNumberOfYearDaySchedulesSupportedPerUserWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfYearDaySchedulesSupportedPerUser::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46351,22 +46441,23 @@ - (void)subscribeAttributeNumberOfHolidaySchedulesSupportedWithParams:(MTRSubscr
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeNumberOfHolidaySchedulesSupportedWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfHolidaySchedulesSupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46394,21 +46485,22 @@ - (void)subscribeAttributeMaxPINCodeLengthWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxPINCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::MaxPINCodeLength::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46436,21 +46528,22 @@ - (void)subscribeAttributeMinPINCodeLengthWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinPINCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::MinPINCodeLength::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46478,21 +46571,22 @@ - (void)subscribeAttributeMaxRFIDCodeLengthWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxRFIDCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::MaxRFIDCodeLength::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46520,21 +46614,22 @@ - (void)subscribeAttributeMinRFIDCodeLengthWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinRFIDCodeLengthWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::MinRFIDCodeLength::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46564,23 +46659,23 @@ - (void)subscribeAttributeCredentialRulesSupportWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCredentialRulesSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockCredentialRulesSupportAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockCredentialRulesSupportAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::CredentialRulesSupport::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -46611,22 +46706,23 @@ - (void)subscribeAttributeNumberOfCredentialsSupportedPerUserWithParams:(MTRSubs
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeNumberOfCredentialsSupportedPerUserWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::NumberOfCredentialsSupportedPerUser::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46691,21 +46787,21 @@ - (void)subscribeAttributeLanguageWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLanguageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::Language::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46770,21 +46866,21 @@ - (void)subscribeAttributeLEDSettingsWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLEDSettingsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::LEDSettings::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46849,21 +46945,21 @@ - (void)subscribeAttributeAutoRelockTimeWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAutoRelockTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::AutoRelockTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -46928,21 +47024,21 @@ - (void)subscribeAttributeSoundVolumeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSoundVolumeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::SoundVolume::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47007,22 +47103,22 @@ - (void)subscribeAttributeOperatingModeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockClusterDlOperatingModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockClusterDlOperatingModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::OperatingMode::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -47052,23 +47148,23 @@ - (void)subscribeAttributeSupportedOperatingModesWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSupportedOperatingModesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockSupportedOperatingModesAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockSupportedOperatingModesAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::SupportedOperatingModes::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -47099,23 +47195,23 @@ - (void)subscribeAttributeDefaultConfigurationRegisterWithParams:(MTRSubscribePa
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeDefaultConfigurationRegisterWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockDefaultConfigurationRegisterAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockDefaultConfigurationRegisterAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::DefaultConfigurationRegister::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -47182,22 +47278,22 @@ - (void)subscribeAttributeEnableLocalProgrammingWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnableLocalProgrammingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::EnableLocalProgramming::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47263,22 +47359,22 @@ - (void)subscribeAttributeEnableOneTouchLockingWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnableOneTouchLockingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::EnableOneTouchLocking::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47344,22 +47440,22 @@ - (void)subscribeAttributeEnableInsideStatusLEDWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnableInsideStatusLEDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::EnableInsideStatusLED::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47426,22 +47522,22 @@ - (void)subscribeAttributeEnablePrivacyModeButtonWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnablePrivacyModeButtonWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::EnablePrivacyModeButton::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47508,23 +47604,23 @@ - (void)subscribeAttributeLocalProgrammingFeaturesWithParams:(MTRSubscribeParams
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocalProgrammingFeaturesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockLocalProgrammingFeaturesAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockLocalProgrammingFeaturesAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::LocalProgrammingFeatures::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -47590,22 +47686,22 @@ - (void)subscribeAttributeWrongCodeEntryLimitWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWrongCodeEntryLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::WrongCodeEntryLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47673,22 +47769,22 @@ - (void)subscribeAttributeUserCodeTemporaryDisableTimeWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeUserCodeTemporaryDisableTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::UserCodeTemporaryDisableTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47753,21 +47849,22 @@ - (void)subscribeAttributeSendPINOverTheAirWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSendPINOverTheAirWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::SendPINOverTheAir::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47835,22 +47932,22 @@ - (void)subscribeAttributeRequirePINforRemoteOperationWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeRequirePINforRemoteOperationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::RequirePINforRemoteOperation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47916,22 +48013,22 @@ - (void)subscribeAttributeExpiringUserTimeoutWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeExpiringUserTimeoutWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::ExpiringUserTimeout::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -47960,23 +48057,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -48005,23 +48102,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(DoorLockAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = DoorLock::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -48049,21 +48146,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoorLockAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DoorLockAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -48091,21 +48188,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -48133,21 +48230,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = DoorLock::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -48317,13 +48415,13 @@ + (void)readAttributeLockStateWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLockStateWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeLockStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeLockTypeWithCompletionHandler:(void (^)(
@@ -48359,13 +48457,13 @@ + (void)readAttributeLockTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLockTypeWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeLockTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeActuatorEnabledWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48403,13 +48501,13 @@ + (void)readAttributeActuatorEnabledWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActuatorEnabledWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeActuatorEnabledWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeDoorStateWithCompletionHandler:(void (^)(
@@ -48445,13 +48543,13 @@ + (void)readAttributeDoorStateWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorStateWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeDoorStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDoorOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48499,13 +48597,13 @@ + (void)readAttributeDoorOpenEventsWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorOpenEventsWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeDoorOpenEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeDoorClosedEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48553,13 +48651,13 @@ + (void)readAttributeDoorClosedEventsWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDoorClosedEventsWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeDoorClosedEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOpenPeriodWithCompletionHandler:(void (^)(
@@ -48605,13 +48703,13 @@ + (void)readAttributeOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOpenPeriodWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeOpenPeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeNumberOfTotalUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48650,13 +48748,13 @@ + (void)readAttributeNumberOfTotalUsersSupportedWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfTotalUsersSupportedWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeNumberOfTotalUsersSupportedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeNumberOfPINUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48695,13 +48793,13 @@ + (void)readAttributeNumberOfPINUsersSupportedWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPINUsersSupportedWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeNumberOfPINUsersSupportedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeNumberOfRFIDUsersSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48740,13 +48838,13 @@ + (void)readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfRFIDUsersSupportedWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeNumberOfRFIDUsersSupportedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48788,15 +48886,16 @@ + (void)readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributeNumberOfWeekDaySchedulesSupportedPerUserWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48838,15 +48937,16 @@ + (void)readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfYearDaySchedulesSupportedPerUserWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributeNumberOfYearDaySchedulesSupportedPerUserWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributeNumberOfHolidaySchedulesSupportedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48885,14 +48985,14 @@ + (void)readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeNumberOfHolidaySchedulesSupportedWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self readAttributeNumberOfHolidaySchedulesSupportedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                     endpoint:endpoint
+                                                                        queue:queue
+                                                                   completion:^(
+                                                                       NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                       // Cast is safe because subclass does not add any selectors.
+                                                                       completionHandler(static_cast(value), error);
+                                                                   }];
 }
 
 - (void)readAttributeMaxPINCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48930,13 +49030,13 @@ + (void)readAttributeMaxPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxPINCodeLengthWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxPINCodeLengthWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMinPINCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -48974,13 +49074,13 @@ + (void)readAttributeMinPINCodeLengthWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinPINCodeLengthWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinPINCodeLengthWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxRFIDCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49019,13 +49119,13 @@ + (void)readAttributeMaxRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxRFIDCodeLengthWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeMaxRFIDCodeLengthWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeMinRFIDCodeLengthWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49064,13 +49164,13 @@ + (void)readAttributeMinRFIDCodeLengthWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinRFIDCodeLengthWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeMinRFIDCodeLengthWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeCredentialRulesSupportWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49109,13 +49209,13 @@ + (void)readAttributeCredentialRulesSupportWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCredentialRulesSupportWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeCredentialRulesSupportWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeNumberOfCredentialsSupportedPerUserWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49154,14 +49254,15 @@ + (void)readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:(MTRA
                                                          completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfCredentialsSupportedPerUserWithAttributeCache:attributeCacheContainer
-                                                                    endpoint:endpoint
-                                                                       queue:queue
-                                                                  completion:^(
-                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                      // Cast is safe because subclass does not add any selectors.
-                                                                      completionHandler(static_cast(value), error);
-                                                                  }];
+    [self readAttributeNumberOfCredentialsSupportedPerUserWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                       endpoint:endpoint
+                                                                          queue:queue
+                                                                     completion:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         completionHandler(static_cast(value), error);
+                                                                     }];
 }
 
 - (void)readAttributeLanguageWithCompletionHandler:(void (^)(
@@ -49207,13 +49308,13 @@ + (void)readAttributeLanguageWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLanguageWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeLanguageWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeLEDSettingsWithCompletionHandler:(void (^)(
@@ -49260,13 +49361,13 @@ + (void)readAttributeLEDSettingsWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLEDSettingsWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeLEDSettingsWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeAutoRelockTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49314,13 +49415,13 @@ + (void)readAttributeAutoRelockTimeWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAutoRelockTimeWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeAutoRelockTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeSoundVolumeWithCompletionHandler:(void (^)(
@@ -49367,13 +49468,13 @@ + (void)readAttributeSoundVolumeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSoundVolumeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeSoundVolumeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOperatingModeWithCompletionHandler:(void (^)(
@@ -49421,13 +49522,13 @@ + (void)readAttributeOperatingModeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperatingModeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeOperatingModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeSupportedOperatingModesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49466,13 +49567,13 @@ + (void)readAttributeSupportedOperatingModesWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedOperatingModesWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeSupportedOperatingModesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeDefaultConfigurationRegisterWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49511,13 +49612,13 @@ + (void)readAttributeDefaultConfigurationRegisterWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDefaultConfigurationRegisterWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeDefaultConfigurationRegisterWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeEnableLocalProgrammingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49567,13 +49668,13 @@ + (void)readAttributeEnableLocalProgrammingWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableLocalProgrammingWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeEnableLocalProgrammingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeEnableOneTouchLockingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49623,13 +49724,13 @@ + (void)readAttributeEnableOneTouchLockingWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableOneTouchLockingWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeEnableOneTouchLockingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeEnableInsideStatusLEDWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49679,13 +49780,13 @@ + (void)readAttributeEnableInsideStatusLEDWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnableInsideStatusLEDWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeEnableInsideStatusLEDWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeEnablePrivacyModeButtonWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49735,13 +49836,13 @@ + (void)readAttributeEnablePrivacyModeButtonWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnablePrivacyModeButtonWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeEnablePrivacyModeButtonWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeLocalProgrammingFeaturesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49791,13 +49892,13 @@ + (void)readAttributeLocalProgrammingFeaturesWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalProgrammingFeaturesWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeLocalProgrammingFeaturesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeWrongCodeEntryLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49847,13 +49948,13 @@ + (void)readAttributeWrongCodeEntryLimitWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWrongCodeEntryLimitWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeWrongCodeEntryLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeUserCodeTemporaryDisableTimeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49903,13 +50004,13 @@ + (void)readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUserCodeTemporaryDisableTimeWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeUserCodeTemporaryDisableTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeSendPINOverTheAirWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -49958,13 +50059,13 @@ + (void)readAttributeSendPINOverTheAirWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSendPINOverTheAirWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeSendPINOverTheAirWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRequirePINforRemoteOperationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -50014,13 +50115,13 @@ + (void)readAttributeRequirePINforRemoteOperationWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRequirePINforRemoteOperationWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeRequirePINforRemoteOperationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeExpiringUserTimeoutWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -50070,13 +50171,13 @@ + (void)readAttributeExpiringUserTimeoutWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeExpiringUserTimeoutWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeExpiringUserTimeoutWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -50115,13 +50216,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -50160,13 +50261,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -50203,13 +50304,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -50245,13 +50346,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -50289,13 +50390,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -50546,21 +50647,21 @@ - (void)subscribeAttributeTypeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringClusterTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(WindowCoveringClusterTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::Type::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50590,22 +50691,22 @@ - (void)subscribeAttributePhysicalClosedLimitLiftWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePhysicalClosedLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitLift::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50635,22 +50736,22 @@ - (void)subscribeAttributePhysicalClosedLimitTiltWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePhysicalClosedLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::PhysicalClosedLimitTilt::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50679,22 +50780,22 @@ - (void)subscribeAttributeCurrentPositionLiftWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionLift::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50723,22 +50824,22 @@ - (void)subscribeAttributeCurrentPositionTiltWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionTilt::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50768,22 +50869,22 @@ - (void)subscribeAttributeNumberOfActuationsLiftWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNumberOfActuationsLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::NumberOfActuationsLift::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50813,22 +50914,22 @@ - (void)subscribeAttributeNumberOfActuationsTiltWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNumberOfActuationsTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::NumberOfActuationsTilt::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50856,21 +50957,21 @@ - (void)subscribeAttributeConfigStatusWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeConfigStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringConfigStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(WindowCoveringConfigStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::ConfigStatus::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50901,22 +51002,22 @@ - (void)subscribeAttributeCurrentPositionLiftPercentageWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionLiftPercentageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercentage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50947,22 +51048,22 @@ - (void)subscribeAttributeCurrentPositionTiltPercentageWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionTiltPercentageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercentage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -50990,22 +51091,23 @@ - (void)subscribeAttributeOperationalStatusWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOperationalStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringOperationalStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WindowCoveringOperationalStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WindowCovering::Attributes::OperationalStatus::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -51036,22 +51138,23 @@ - (void)subscribeAttributeTargetPositionLiftPercent100thsWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTargetPositionLiftPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::TargetPositionLiftPercent100ths::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51082,22 +51185,23 @@ - (void)subscribeAttributeTargetPositionTiltPercent100thsWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTargetPositionTiltPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::TargetPositionTiltPercent100ths::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51125,22 +51229,22 @@ - (void)subscribeAttributeEndProductTypeWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEndProductTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringClusterEndProductTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WindowCoveringClusterEndProductTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WindowCovering::Attributes::EndProductType::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -51171,22 +51275,23 @@ - (void)subscribeAttributeCurrentPositionLiftPercent100thsWithParams:(MTRSubscri
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionLiftPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionLiftPercent100ths::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51217,22 +51322,23 @@ - (void)subscribeAttributeCurrentPositionTiltPercent100thsWithParams:(MTRSubscri
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeCurrentPositionTiltPercent100thsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::CurrentPositionTiltPercent100ths::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51262,22 +51368,22 @@ - (void)subscribeAttributeInstalledOpenLimitLiftWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstalledOpenLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitLift::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51307,22 +51413,22 @@ - (void)subscribeAttributeInstalledClosedLimitLiftWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstalledClosedLimitLiftWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitLift::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51352,22 +51458,22 @@ - (void)subscribeAttributeInstalledOpenLimitTiltWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstalledOpenLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::InstalledOpenLimitTilt::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51397,22 +51503,22 @@ - (void)subscribeAttributeInstalledClosedLimitTiltWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstalledClosedLimitTiltWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::InstalledClosedLimitTilt::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51477,21 +51583,21 @@ - (void)subscribeAttributeModeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                   endpoint:(NSNumber *)endpoint
-                                      queue:(dispatch_queue_t)queue
-                                 completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                      endpoint:(NSNumber *)endpoint
+                                         queue:(dispatch_queue_t)queue
+                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(WindowCoveringModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::Mode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51519,21 +51625,21 @@ - (void)subscribeAttributeSafetyStatusWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSafetyStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringSafetyStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(WindowCoveringSafetyStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::SafetyStatus::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51562,23 +51668,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WindowCoveringGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WindowCovering::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -51607,23 +51713,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WindowCoveringAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WindowCovering::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -51651,22 +51757,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWindowCoveringAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WindowCoveringAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WindowCovering::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -51694,21 +51800,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51736,21 +51842,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WindowCovering::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -51844,13 +51951,13 @@ + (void)readAttributeTypeWithAttributeCache:(MTRAttributeCacheContainer *)attrib
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTypeWithAttributeCache:attributeCacheContainer
-                                     endpoint:endpoint
-                                        queue:queue
-                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                       // Cast is safe because subclass does not add any selectors.
-                                       completionHandler(static_cast(value), error);
-                                   }];
+    [self readAttributeTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                        endpoint:endpoint
+                                           queue:queue
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributePhysicalClosedLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -51889,13 +51996,13 @@ + (void)readAttributePhysicalClosedLimitLiftWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalClosedLimitLiftWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributePhysicalClosedLimitLiftWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributePhysicalClosedLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -51934,13 +52041,13 @@ + (void)readAttributePhysicalClosedLimitTiltWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalClosedLimitTiltWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributePhysicalClosedLimitTiltWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeCurrentPositionLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -51979,13 +52086,13 @@ + (void)readAttributeCurrentPositionLiftWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeCurrentPositionLiftWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeCurrentPositionTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52024,13 +52131,13 @@ + (void)readAttributeCurrentPositionTiltWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeCurrentPositionTiltWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNumberOfActuationsLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52069,13 +52176,13 @@ + (void)readAttributeNumberOfActuationsLiftWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfActuationsLiftWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeNumberOfActuationsLiftWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeNumberOfActuationsTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52114,13 +52221,13 @@ + (void)readAttributeNumberOfActuationsTiltWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfActuationsTiltWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeNumberOfActuationsTiltWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeConfigStatusWithCompletionHandler:(void (^)(
@@ -52157,13 +52264,13 @@ + (void)readAttributeConfigStatusWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeConfigStatusWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeConfigStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeCurrentPositionLiftPercentageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52202,13 +52309,13 @@ + (void)readAttributeCurrentPositionLiftPercentageWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftPercentageWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeCurrentPositionLiftPercentageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeCurrentPositionTiltPercentageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52247,13 +52354,13 @@ + (void)readAttributeCurrentPositionTiltPercentageWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltPercentageWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeCurrentPositionTiltPercentageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeOperationalStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52292,13 +52399,13 @@ + (void)readAttributeOperationalStatusWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationalStatusWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeOperationalStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeTargetPositionLiftPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52337,13 +52444,14 @@ + (void)readAttributeTargetPositionLiftPercent100thsWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetPositionLiftPercent100thsWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeTargetPositionLiftPercent100thsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeTargetPositionTiltPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52382,13 +52490,14 @@ + (void)readAttributeTargetPositionTiltPercent100thsWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetPositionTiltPercent100thsWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeTargetPositionTiltPercent100thsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeEndProductTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52426,13 +52535,13 @@ + (void)readAttributeEndProductTypeWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEndProductTypeWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeEndProductTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeCurrentPositionLiftPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52471,13 +52580,14 @@ + (void)readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:(MTRAttr
                                                       completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionLiftPercent100thsWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeCurrentPositionLiftPercent100thsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                    endpoint:endpoint
+                                                                       queue:queue
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeCurrentPositionTiltPercent100thsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52516,13 +52626,14 @@ + (void)readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:(MTRAttr
                                                       completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentPositionTiltPercent100thsWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeCurrentPositionTiltPercent100thsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                    endpoint:endpoint
+                                                                       queue:queue
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeInstalledOpenLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52561,13 +52672,13 @@ + (void)readAttributeInstalledOpenLimitLiftWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledOpenLimitLiftWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeInstalledOpenLimitLiftWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeInstalledClosedLimitLiftWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52606,13 +52717,13 @@ + (void)readAttributeInstalledClosedLimitLiftWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledClosedLimitLiftWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeInstalledClosedLimitLiftWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeInstalledOpenLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52651,13 +52762,13 @@ + (void)readAttributeInstalledOpenLimitTiltWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledOpenLimitTiltWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeInstalledOpenLimitTiltWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeInstalledClosedLimitTiltWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -52696,13 +52807,13 @@ + (void)readAttributeInstalledClosedLimitTiltWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstalledClosedLimitTiltWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeInstalledClosedLimitTiltWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -52747,13 +52858,13 @@ + (void)readAttributeModeWithAttributeCache:(MTRAttributeCacheContainer *)attrib
                                       queue:(dispatch_queue_t)queue
                           completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeModeWithAttributeCache:attributeCacheContainer
-                                     endpoint:endpoint
-                                        queue:queue
-                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                       // Cast is safe because subclass does not add any selectors.
-                                       completionHandler(static_cast(value), error);
-                                   }];
+    [self readAttributeModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                        endpoint:endpoint
+                                           queue:queue
+                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                          // Cast is safe because subclass does not add any selectors.
+                                          completionHandler(static_cast(value), error);
+                                      }];
 }
 
 - (void)readAttributeSafetyStatusWithCompletionHandler:(void (^)(
@@ -52790,13 +52901,13 @@ + (void)readAttributeSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSafetyStatusWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSafetyStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -52835,13 +52946,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -52880,13 +52991,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -52923,13 +53034,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -52965,13 +53076,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -53009,13 +53120,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -53120,22 +53231,22 @@ - (void)subscribeAttributeBarrierMovingStateWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierMovingStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierMovingState::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53164,22 +53275,22 @@ - (void)subscribeAttributeBarrierSafetyStatusWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierSafetyStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierSafetyStatus::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53208,22 +53319,22 @@ - (void)subscribeAttributeBarrierCapabilitiesWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierCapabilitiesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierCapabilities::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53288,21 +53399,22 @@ - (void)subscribeAttributeBarrierOpenEventsWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierOpenEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53368,22 +53480,22 @@ - (void)subscribeAttributeBarrierCloseEventsWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierCloseEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierCloseEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53450,22 +53562,22 @@ - (void)subscribeAttributeBarrierCommandOpenEventsWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierCommandOpenEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierCommandOpenEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53532,22 +53644,22 @@ - (void)subscribeAttributeBarrierCommandCloseEventsWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeBarrierCommandCloseEventsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierCommandCloseEvents::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53612,21 +53724,22 @@ - (void)subscribeAttributeBarrierOpenPeriodWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierOpenPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierOpenPeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53692,22 +53805,22 @@ - (void)subscribeAttributeBarrierClosePeriodWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierClosePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierClosePeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53735,21 +53848,22 @@ - (void)subscribeAttributeBarrierPositionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBarrierPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::BarrierPosition::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53778,23 +53892,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBarrierControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BarrierControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BarrierControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -53823,23 +53937,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBarrierControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BarrierControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BarrierControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -53867,22 +53981,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBarrierControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BarrierControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BarrierControl::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -53910,21 +54024,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -53952,21 +54066,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BarrierControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54031,13 +54146,13 @@ + (void)readAttributeBarrierMovingStateWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierMovingStateWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeBarrierMovingStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeBarrierSafetyStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54076,13 +54191,13 @@ + (void)readAttributeBarrierSafetyStatusWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierSafetyStatusWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeBarrierSafetyStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBarrierCapabilitiesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54121,13 +54236,13 @@ + (void)readAttributeBarrierCapabilitiesWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCapabilitiesWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeBarrierCapabilitiesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeBarrierOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54176,13 +54291,13 @@ + (void)readAttributeBarrierOpenEventsWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierOpenEventsWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeBarrierOpenEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBarrierCloseEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54232,13 +54347,13 @@ + (void)readAttributeBarrierCloseEventsWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCloseEventsWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeBarrierCloseEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeBarrierCommandOpenEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54288,13 +54403,13 @@ + (void)readAttributeBarrierCommandOpenEventsWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCommandOpenEventsWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeBarrierCommandOpenEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeBarrierCommandCloseEventsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54344,13 +54459,13 @@ + (void)readAttributeBarrierCommandCloseEventsWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierCommandCloseEventsWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeBarrierCommandCloseEventsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeBarrierOpenPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54399,13 +54514,13 @@ + (void)readAttributeBarrierOpenPeriodWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierOpenPeriodWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeBarrierOpenPeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeBarrierClosePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54455,13 +54570,13 @@ + (void)readAttributeBarrierClosePeriodWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierClosePeriodWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeBarrierClosePeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeBarrierPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54499,13 +54614,13 @@ + (void)readAttributeBarrierPositionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBarrierPositionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeBarrierPositionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -54544,13 +54659,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -54589,13 +54704,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -54632,13 +54747,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -54674,13 +54789,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -54718,13 +54833,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -54767,21 +54882,21 @@ - (void)subscribeAttributeMaxPressureWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxPressure::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54809,21 +54924,21 @@ - (void)subscribeAttributeMaxSpeedWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxSpeed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54851,21 +54966,21 @@ - (void)subscribeAttributeMaxFlowWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxFlow::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54893,21 +55008,22 @@ - (void)subscribeAttributeMinConstPressureWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstPressure::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54935,21 +55051,22 @@ - (void)subscribeAttributeMaxConstPressureWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstPressure::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -54977,21 +55094,22 @@ - (void)subscribeAttributeMinCompPressureWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinCompPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MinCompPressure::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55019,21 +55137,22 @@ - (void)subscribeAttributeMaxCompPressureWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxCompPressureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxCompPressure::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55061,21 +55180,21 @@ - (void)subscribeAttributeMinConstSpeedWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstSpeed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55103,21 +55222,21 @@ - (void)subscribeAttributeMaxConstSpeedWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstSpeed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55145,21 +55264,21 @@ - (void)subscribeAttributeMinConstFlowWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstFlow::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55187,21 +55306,21 @@ - (void)subscribeAttributeMaxConstFlowWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstFlowWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstFlow::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55229,21 +55348,21 @@ - (void)subscribeAttributeMinConstTempWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinConstTempWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MinConstTemp::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55271,21 +55390,21 @@ - (void)subscribeAttributeMaxConstTempWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxConstTempWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::MaxConstTemp::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55313,22 +55432,22 @@ - (void)subscribeAttributePumpStatusWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePumpStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlPumpStatusAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlPumpStatusAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::PumpStatus::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55359,23 +55478,23 @@ - (void)subscribeAttributeEffectiveOperationModeWithParams:(MTRSubscribeParams *
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEffectiveOperationModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveOperationMode::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55405,23 +55524,23 @@ - (void)subscribeAttributeEffectiveControlModeWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEffectiveControlModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::EffectiveControlMode::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55449,21 +55568,21 @@ - (void)subscribeAttributeCapacityWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::Capacity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55491,21 +55610,21 @@ - (void)subscribeAttributeSpeedWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::Speed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55576,22 +55695,22 @@ - (void)subscribeAttributeLifetimeRunningHoursWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLifetimeRunningHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeRunningHours::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55619,21 +55738,21 @@ - (void)subscribeAttributePowerWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::Power::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55705,22 +55824,22 @@ - (void)subscribeAttributeLifetimeEnergyConsumedWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLifetimeEnergyConsumedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::LifetimeEnergyConsumed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -55786,22 +55905,22 @@ - (void)subscribeAttributeOperationModeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOperationModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlClusterPumpOperationModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlClusterPumpOperationModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::OperationMode::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55867,22 +55986,22 @@ - (void)subscribeAttributeControlModeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeControlModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlClusterPumpControlModeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlClusterPumpControlModeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::ControlMode::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55912,23 +56031,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -55958,23 +56077,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -56003,22 +56122,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPumpConfigurationAndControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PumpConfigurationAndControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PumpConfigurationAndControl::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -56046,21 +56165,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -56088,21 +56207,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PumpConfigurationAndControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -56150,13 +56270,13 @@ + (void)readAttributeMaxPressureWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxPressureWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeMaxPressureWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeMaxSpeedWithCompletionHandler:(void (^)(
@@ -56192,13 +56312,13 @@ + (void)readAttributeMaxSpeedWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxSpeedWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeMaxSpeedWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeMaxFlowWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -56233,13 +56353,13 @@ + (void)readAttributeMaxFlowWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxFlowWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeMaxFlowWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeMinConstPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56277,13 +56397,13 @@ + (void)readAttributeMinConstPressureWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstPressureWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinConstPressureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxConstPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56321,13 +56441,13 @@ + (void)readAttributeMaxConstPressureWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstPressureWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxConstPressureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMinCompPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56365,13 +56485,13 @@ + (void)readAttributeMinCompPressureWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinCompPressureWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeMinCompPressureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeMaxCompPressureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56409,13 +56529,13 @@ + (void)readAttributeMaxCompPressureWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxCompPressureWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeMaxCompPressureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeMinConstSpeedWithCompletionHandler:(void (^)(
@@ -56453,13 +56573,13 @@ + (void)readAttributeMinConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstSpeedWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMinConstSpeedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMaxConstSpeedWithCompletionHandler:(void (^)(
@@ -56497,13 +56617,13 @@ + (void)readAttributeMaxConstSpeedWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstSpeedWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMaxConstSpeedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinConstFlowWithCompletionHandler:(void (^)(
@@ -56540,13 +56660,13 @@ + (void)readAttributeMinConstFlowWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstFlowWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMinConstFlowWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMaxConstFlowWithCompletionHandler:(void (^)(
@@ -56583,13 +56703,13 @@ + (void)readAttributeMaxConstFlowWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstFlowWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMaxConstFlowWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMinConstTempWithCompletionHandler:(void (^)(
@@ -56626,13 +56746,13 @@ + (void)readAttributeMinConstTempWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinConstTempWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMinConstTempWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeMaxConstTempWithCompletionHandler:(void (^)(
@@ -56669,13 +56789,13 @@ + (void)readAttributeMaxConstTempWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxConstTempWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeMaxConstTempWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributePumpStatusWithCompletionHandler:(void (^)(
@@ -56711,13 +56831,13 @@ + (void)readAttributePumpStatusWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePumpStatusWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributePumpStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeEffectiveOperationModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56756,13 +56876,13 @@ + (void)readAttributeEffectiveOperationModeWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEffectiveOperationModeWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeEffectiveOperationModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeEffectiveControlModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56801,13 +56921,13 @@ + (void)readAttributeEffectiveControlModeWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEffectiveControlModeWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeEffectiveControlModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeCapacityWithCompletionHandler:(void (^)(
@@ -56843,13 +56963,13 @@ + (void)readAttributeCapacityWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCapacityWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeCapacityWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeSpeedWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -56884,13 +57004,13 @@ + (void)readAttributeSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeSpeedWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeLifetimeRunningHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -56940,13 +57060,13 @@ + (void)readAttributeLifetimeRunningHoursWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLifetimeRunningHoursWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeLifetimeRunningHoursWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -56981,13 +57101,13 @@ + (void)readAttributePowerWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributePowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeLifetimeEnergyConsumedWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -57037,13 +57157,13 @@ + (void)readAttributeLifetimeEnergyConsumedWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLifetimeEnergyConsumedWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeLifetimeEnergyConsumedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeOperationModeWithCompletionHandler:(void (^)(
@@ -57091,13 +57211,13 @@ + (void)readAttributeOperationModeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOperationModeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeOperationModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeControlModeWithCompletionHandler:(void (^)(
@@ -57144,13 +57264,13 @@ + (void)readAttributeControlModeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeControlModeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeControlModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -57189,13 +57309,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -57234,13 +57354,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -57277,13 +57397,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -57319,13 +57439,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -57363,13 +57483,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -57570,21 +57690,22 @@ - (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLocalTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::LocalTemperature::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57613,22 +57734,22 @@ - (void)subscribeAttributeOutdoorTemperatureWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOutdoorTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OutdoorTemperature::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57656,21 +57777,21 @@ - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupancyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::Occupancy::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57700,22 +57821,22 @@ - (void)subscribeAttributeAbsMinHeatSetpointLimitWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAbsMinHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::AbsMinHeatSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57745,22 +57866,22 @@ - (void)subscribeAttributeAbsMaxHeatSetpointLimitWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAbsMaxHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::AbsMaxHeatSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57790,22 +57911,22 @@ - (void)subscribeAttributeAbsMinCoolSetpointLimitWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAbsMinCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::AbsMinCoolSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57835,22 +57956,22 @@ - (void)subscribeAttributeAbsMaxCoolSetpointLimitWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAbsMaxCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::AbsMaxCoolSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57878,21 +57999,22 @@ - (void)subscribeAttributePICoolingDemandWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePICoolingDemandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::PICoolingDemand::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -57920,21 +58042,22 @@ - (void)subscribeAttributePIHeatingDemandWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePIHeatingDemandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::PIHeatingDemand::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58001,22 +58124,22 @@ - (void)subscribeAttributeHVACSystemTypeConfigurationWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeHVACSystemTypeConfigurationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58083,22 +58206,22 @@ - (void)subscribeAttributeLocalTemperatureCalibrationWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeLocalTemperatureCalibrationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::LocalTemperatureCalibration::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58165,22 +58288,22 @@ - (void)subscribeAttributeOccupiedCoolingSetpointWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupiedCoolingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OccupiedCoolingSetpoint::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58247,22 +58370,22 @@ - (void)subscribeAttributeOccupiedHeatingSetpointWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupiedHeatingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OccupiedHeatingSetpoint::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58329,22 +58452,22 @@ - (void)subscribeAttributeUnoccupiedCoolingSetpointWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeUnoccupiedCoolingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::UnoccupiedCoolingSetpoint::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58411,22 +58534,22 @@ - (void)subscribeAttributeUnoccupiedHeatingSetpointWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeUnoccupiedHeatingSetpointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::UnoccupiedHeatingSetpoint::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58492,22 +58615,22 @@ - (void)subscribeAttributeMinHeatSetpointLimitWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::MinHeatSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58573,22 +58696,22 @@ - (void)subscribeAttributeMaxHeatSetpointLimitWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxHeatSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::MaxHeatSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58654,22 +58777,22 @@ - (void)subscribeAttributeMinCoolSetpointLimitWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::MinCoolSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58735,22 +58858,22 @@ - (void)subscribeAttributeMaxCoolSetpointLimitWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxCoolSetpointLimitWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::MaxCoolSetpointLimit::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58816,22 +58939,22 @@ - (void)subscribeAttributeMinSetpointDeadBandWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinSetpointDeadBandWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::MinSetpointDeadBand::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58896,21 +59019,21 @@ - (void)subscribeAttributeRemoteSensingWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemoteSensingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::RemoteSensing::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -58978,23 +59101,23 @@ - (void)subscribeAttributeControlSequenceOfOperationWithParams:(MTRSubscribePara
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeControlSequenceOfOperationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatClusterThermostatControlSequenceAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatClusterThermostatControlSequenceAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Thermostat::Attributes::ControlSequenceOfOperation::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -59059,21 +59182,21 @@ - (void)subscribeAttributeSystemModeWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSystemModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::SystemMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59102,22 +59225,22 @@ - (void)subscribeAttributeThermostatRunningModeWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeThermostatRunningModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ThermostatRunningMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59145,21 +59268,21 @@ - (void)subscribeAttributeStartOfWeekWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartOfWeekWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::StartOfWeek::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59189,22 +59312,22 @@ - (void)subscribeAttributeNumberOfWeeklyTransitionsWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeNumberOfWeeklyTransitionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::NumberOfWeeklyTransitions::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59234,22 +59357,22 @@ - (void)subscribeAttributeNumberOfDailyTransitionsWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNumberOfDailyTransitionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::NumberOfDailyTransitions::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59316,22 +59439,22 @@ - (void)subscribeAttributeTemperatureSetpointHoldWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTemperatureSetpointHoldWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::TemperatureSetpointHold::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59405,22 +59528,23 @@ - (void)subscribeAttributeTemperatureSetpointHoldDurationWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeTemperatureSetpointHoldDurationWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldDuration::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59489,22 +59613,23 @@ - (void)subscribeAttributeThermostatProgrammingOperationModeWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeThermostatProgrammingOperationModeWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ThermostatProgrammingOperationMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59534,22 +59659,22 @@ - (void)subscribeAttributeThermostatRunningStateWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeThermostatRunningStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ThermostatRunningState::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59578,22 +59703,22 @@ - (void)subscribeAttributeSetpointChangeSourceWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSetpointChangeSourceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::SetpointChangeSource::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59622,22 +59747,22 @@ - (void)subscribeAttributeSetpointChangeAmountWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSetpointChangeAmountWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::SetpointChangeAmount::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59668,22 +59793,22 @@ - (void)subscribeAttributeSetpointChangeSourceTimestampWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeSetpointChangeSourceTimestampWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::SetpointChangeSourceTimestamp::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59753,21 +59878,22 @@ - (void)subscribeAttributeOccupiedSetbackWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupiedSetbackWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OccupiedSetback::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59796,22 +59922,22 @@ - (void)subscribeAttributeOccupiedSetbackMinWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupiedSetbackMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OccupiedSetbackMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59840,22 +59966,22 @@ - (void)subscribeAttributeOccupiedSetbackMaxWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupiedSetbackMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::OccupiedSetbackMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59925,21 +60051,22 @@ - (void)subscribeAttributeUnoccupiedSetbackWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUnoccupiedSetbackWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::UnoccupiedSetback::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -59968,22 +60095,22 @@ - (void)subscribeAttributeUnoccupiedSetbackMinWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUnoccupiedSetbackMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60012,22 +60139,22 @@ - (void)subscribeAttributeUnoccupiedSetbackMaxWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUnoccupiedSetbackMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::UnoccupiedSetbackMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60093,22 +60220,22 @@ - (void)subscribeAttributeEmergencyHeatDeltaWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEmergencyHeatDeltaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::EmergencyHeatDelta::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60173,21 +60300,21 @@ - (void)subscribeAttributeACTypeWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60252,21 +60379,21 @@ - (void)subscribeAttributeACCapacityWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACCapacityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACCapacity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60331,21 +60458,22 @@ - (void)subscribeAttributeACRefrigerantTypeWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACRefrigerantTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACRefrigerantType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60410,21 +60538,22 @@ - (void)subscribeAttributeACCompressorTypeWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACCompressorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACCompressorType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60489,21 +60618,21 @@ - (void)subscribeAttributeACErrorCodeWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACErrorCodeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACErrorCode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60568,21 +60697,22 @@ - (void)subscribeAttributeACLouverPositionWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACLouverPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACLouverPosition::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60610,21 +60740,22 @@ - (void)subscribeAttributeACCoilTemperatureWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACCoilTemperatureWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACCoilTemperature::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60689,21 +60820,22 @@ - (void)subscribeAttributeACCapacityformatWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeACCapacityformatWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ACCapacityformat::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60732,23 +60864,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Thermostat::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -60777,23 +60909,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Thermostat::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -60821,21 +60953,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ThermostatAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60863,21 +60995,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60905,21 +61037,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Thermostat::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -60999,13 +61132,13 @@ + (void)readAttributeLocalTemperatureWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalTemperatureWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeLocalTemperatureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeOutdoorTemperatureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61044,13 +61177,13 @@ + (void)readAttributeOutdoorTemperatureWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutdoorTemperatureWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeOutdoorTemperatureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeOccupancyWithCompletionHandler:(void (^)(
@@ -61086,13 +61219,13 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancyWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeOccupancyWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeAbsMinHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61131,13 +61264,13 @@ + (void)readAttributeAbsMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMinHeatSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeAbsMinHeatSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeAbsMaxHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61176,13 +61309,13 @@ + (void)readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMaxHeatSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeAbsMaxHeatSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeAbsMinCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61221,13 +61354,13 @@ + (void)readAttributeAbsMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMinCoolSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeAbsMinCoolSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeAbsMaxCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61266,13 +61399,13 @@ + (void)readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAbsMaxCoolSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeAbsMaxCoolSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributePICoolingDemandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61310,13 +61443,13 @@ + (void)readAttributePICoolingDemandWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePICoolingDemandWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributePICoolingDemandWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePIHeatingDemandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61354,13 +61487,13 @@ + (void)readAttributePIHeatingDemandWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePIHeatingDemandWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributePIHeatingDemandWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeHVACSystemTypeConfigurationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61410,13 +61543,13 @@ + (void)readAttributeHVACSystemTypeConfigurationWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHVACSystemTypeConfigurationWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeHVACSystemTypeConfigurationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeLocalTemperatureCalibrationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61466,13 +61599,13 @@ + (void)readAttributeLocalTemperatureCalibrationWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLocalTemperatureCalibrationWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeLocalTemperatureCalibrationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeOccupiedCoolingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61522,13 +61655,13 @@ + (void)readAttributeOccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedCoolingSetpointWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeOccupiedCoolingSetpointWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeOccupiedHeatingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61578,13 +61711,13 @@ + (void)readAttributeOccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedHeatingSetpointWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeOccupiedHeatingSetpointWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeUnoccupiedCoolingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61634,13 +61767,13 @@ + (void)readAttributeUnoccupiedCoolingSetpointWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedCoolingSetpointWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeUnoccupiedCoolingSetpointWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeUnoccupiedHeatingSetpointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61690,13 +61823,13 @@ + (void)readAttributeUnoccupiedHeatingSetpointWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedHeatingSetpointWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeUnoccupiedHeatingSetpointWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeMinHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61746,13 +61879,13 @@ + (void)readAttributeMinHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinHeatSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeMinHeatSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeMaxHeatSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61802,13 +61935,13 @@ + (void)readAttributeMaxHeatSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxHeatSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeMaxHeatSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeMinCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61858,13 +61991,13 @@ + (void)readAttributeMinCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinCoolSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeMinCoolSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeMaxCoolSetpointLimitWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61914,13 +62047,13 @@ + (void)readAttributeMaxCoolSetpointLimitWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxCoolSetpointLimitWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeMaxCoolSetpointLimitWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeMinSetpointDeadBandWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -61970,13 +62103,13 @@ + (void)readAttributeMinSetpointDeadBandWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinSetpointDeadBandWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeMinSetpointDeadBandWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRemoteSensingWithCompletionHandler:(void (^)(
@@ -62024,13 +62157,13 @@ + (void)readAttributeRemoteSensingWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemoteSensingWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRemoteSensingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeControlSequenceOfOperationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62080,13 +62213,13 @@ + (void)readAttributeControlSequenceOfOperationWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeControlSequenceOfOperationWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeControlSequenceOfOperationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeSystemModeWithCompletionHandler:(void (^)(
@@ -62132,13 +62265,13 @@ + (void)readAttributeSystemModeWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSystemModeWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeSystemModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeThermostatRunningModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62177,13 +62310,13 @@ + (void)readAttributeThermostatRunningModeWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatRunningModeWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeThermostatRunningModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeStartOfWeekWithCompletionHandler:(void (^)(
@@ -62220,13 +62353,13 @@ + (void)readAttributeStartOfWeekWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartOfWeekWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeStartOfWeekWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNumberOfWeeklyTransitionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62265,13 +62398,13 @@ + (void)readAttributeNumberOfWeeklyTransitionsWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfWeeklyTransitionsWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeNumberOfWeeklyTransitionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeNumberOfDailyTransitionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62310,13 +62443,13 @@ + (void)readAttributeNumberOfDailyTransitionsWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfDailyTransitionsWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeNumberOfDailyTransitionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeTemperatureSetpointHoldWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62366,13 +62499,13 @@ + (void)readAttributeTemperatureSetpointHoldWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureSetpointHoldWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeTemperatureSetpointHoldWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeTemperatureSetpointHoldDurationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62422,13 +62555,14 @@ + (void)readAttributeTemperatureSetpointHoldDurationWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureSetpointHoldDurationWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeTemperatureSetpointHoldDurationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeThermostatProgrammingOperationModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62478,14 +62612,14 @@ + (void)readAttributeThermostatProgrammingOperationModeWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeThermostatProgrammingOperationModeWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeThermostatProgrammingOperationModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeThermostatRunningStateWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62524,13 +62658,13 @@ + (void)readAttributeThermostatRunningStateWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeThermostatRunningStateWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeThermostatRunningStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeSetpointChangeSourceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62569,13 +62703,13 @@ + (void)readAttributeSetpointChangeSourceWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeSourceWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeSetpointChangeSourceWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeSetpointChangeAmountWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62614,13 +62748,13 @@ + (void)readAttributeSetpointChangeAmountWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeAmountWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeSetpointChangeAmountWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeSetpointChangeSourceTimestampWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62659,13 +62793,13 @@ + (void)readAttributeSetpointChangeSourceTimestampWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSetpointChangeSourceTimestampWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeSetpointChangeSourceTimestampWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeOccupiedSetbackWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62713,13 +62847,13 @@ + (void)readAttributeOccupiedSetbackWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeOccupiedSetbackWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeOccupiedSetbackMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62758,13 +62892,13 @@ + (void)readAttributeOccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackMinWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeOccupiedSetbackMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeOccupiedSetbackMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62803,13 +62937,13 @@ + (void)readAttributeOccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupiedSetbackMaxWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeOccupiedSetbackMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeUnoccupiedSetbackWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62859,13 +62993,13 @@ + (void)readAttributeUnoccupiedSetbackWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeUnoccupiedSetbackWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeUnoccupiedSetbackMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62904,13 +63038,13 @@ + (void)readAttributeUnoccupiedSetbackMinWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackMinWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeUnoccupiedSetbackMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeUnoccupiedSetbackMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -62949,13 +63083,13 @@ + (void)readAttributeUnoccupiedSetbackMaxWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnoccupiedSetbackMaxWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeUnoccupiedSetbackMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeEmergencyHeatDeltaWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63005,13 +63139,13 @@ + (void)readAttributeEmergencyHeatDeltaWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEmergencyHeatDeltaWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeEmergencyHeatDeltaWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeACTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -63056,13 +63190,13 @@ + (void)readAttributeACTypeWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACTypeWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeACTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeACCapacityWithCompletionHandler:(void (^)(
@@ -63108,13 +63242,13 @@ + (void)readAttributeACCapacityWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCapacityWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeACCapacityWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeACRefrigerantTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63163,13 +63297,13 @@ + (void)readAttributeACRefrigerantTypeWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACRefrigerantTypeWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeACRefrigerantTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeACCompressorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63217,13 +63351,13 @@ + (void)readAttributeACCompressorTypeWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCompressorTypeWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeACCompressorTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeACErrorCodeWithCompletionHandler:(void (^)(
@@ -63270,13 +63404,13 @@ + (void)readAttributeACErrorCodeWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACErrorCodeWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeACErrorCodeWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeACLouverPositionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63324,13 +63458,13 @@ + (void)readAttributeACLouverPositionWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACLouverPositionWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeACLouverPositionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeACCoilTemperatureWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63369,13 +63503,13 @@ + (void)readAttributeACCoilTemperatureWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCoilTemperatureWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeACCoilTemperatureWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeACCapacityformatWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63423,13 +63557,13 @@ + (void)readAttributeACCapacityformatWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeACCapacityformatWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeACCapacityformatWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -63468,13 +63602,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -63513,13 +63647,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -63556,13 +63690,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -63598,13 +63732,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -63642,13 +63776,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -63728,21 +63862,21 @@ - (void)subscribeAttributeFanModeWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFanModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFanControlClusterFanModeTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FanControlClusterFanModeTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::FanMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -63807,22 +63941,23 @@ - (void)subscribeAttributeFanModeSequenceWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFanModeSequenceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFanControlClusterFanModeSequenceTypeAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FanControlClusterFanModeSequenceTypeAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FanControl::Attributes::FanModeSequence::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -63892,21 +64027,21 @@ - (void)subscribeAttributePercentSettingWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePercentSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::PercentSetting::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -63934,21 +64069,21 @@ - (void)subscribeAttributePercentCurrentWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePercentCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::PercentCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -63976,21 +64111,21 @@ - (void)subscribeAttributeSpeedMaxWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::SpeedMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64060,21 +64195,21 @@ - (void)subscribeAttributeSpeedSettingWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::SpeedSetting::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64102,21 +64237,21 @@ - (void)subscribeAttributeSpeedCurrentWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSpeedCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::SpeedCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64144,21 +64279,21 @@ - (void)subscribeAttributeRockSupportWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRockSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::RockSupport::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64223,21 +64358,21 @@ - (void)subscribeAttributeRockSettingWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRockSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::RockSetting::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64265,21 +64400,21 @@ - (void)subscribeAttributeWindSupportWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindSupportWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::WindSupport::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64344,21 +64479,21 @@ - (void)subscribeAttributeWindSettingWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWindSettingWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::WindSetting::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64387,23 +64522,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFanControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FanControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FanControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -64432,23 +64567,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFanControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FanControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FanControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -64476,21 +64611,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFanControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FanControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64518,21 +64653,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64560,21 +64695,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FanControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -64630,13 +64766,13 @@ + (void)readAttributeFanModeWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFanModeWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeFanModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeFanModeSequenceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -64684,13 +64820,13 @@ + (void)readAttributeFanModeSequenceWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFanModeSequenceWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeFanModeSequenceWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePercentSettingWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -64738,13 +64874,13 @@ + (void)readAttributePercentSettingWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePercentSettingWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributePercentSettingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributePercentCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -64782,13 +64918,13 @@ + (void)readAttributePercentCurrentWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePercentCurrentWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributePercentCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeSpeedMaxWithCompletionHandler:(void (^)(
@@ -64824,13 +64960,13 @@ + (void)readAttributeSpeedMaxWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedMaxWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeSpeedMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeSpeedSettingWithCompletionHandler:(void (^)(
@@ -64877,13 +65013,13 @@ + (void)readAttributeSpeedSettingWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedSettingWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSpeedSettingWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSpeedCurrentWithCompletionHandler:(void (^)(
@@ -64920,13 +65056,13 @@ + (void)readAttributeSpeedCurrentWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSpeedCurrentWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSpeedCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeRockSupportWithCompletionHandler:(void (^)(
@@ -64963,13 +65099,13 @@ + (void)readAttributeRockSupportWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRockSupportWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeRockSupportWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeRockSettingWithCompletionHandler:(void (^)(
@@ -65016,13 +65152,13 @@ + (void)readAttributeRockSettingWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRockSettingWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeRockSettingWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeWindSupportWithCompletionHandler:(void (^)(
@@ -65059,13 +65195,13 @@ + (void)readAttributeWindSupportWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindSupportWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeWindSupportWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeWindSettingWithCompletionHandler:(void (^)(
@@ -65112,13 +65248,13 @@ + (void)readAttributeWindSettingWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWindSettingWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeWindSettingWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -65157,13 +65293,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -65202,13 +65338,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -65245,13 +65381,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -65287,13 +65423,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -65331,13 +65467,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -65419,22 +65555,22 @@ - (void)subscribeAttributeTemperatureDisplayModeWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTemperatureDisplayModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::TemperatureDisplayMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -65499,21 +65635,21 @@ - (void)subscribeAttributeKeypadLockoutWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeKeypadLockoutWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::KeypadLockout::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -65581,22 +65717,22 @@ - (void)subscribeAttributeScheduleProgrammingVisibilityWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeScheduleProgrammingVisibilityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ScheduleProgrammingVisibility::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -65626,23 +65762,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatUserInterfaceConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -65672,23 +65808,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatUserInterfaceConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -65717,22 +65853,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRThermostatUserInterfaceConfigurationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ThermostatUserInterfaceConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -65760,21 +65896,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -65802,21 +65938,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ThermostatUserInterfaceConfiguration::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -65877,13 +66014,13 @@ + (void)readAttributeTemperatureDisplayModeWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTemperatureDisplayModeWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeTemperatureDisplayModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeKeypadLockoutWithCompletionHandler:(void (^)(
@@ -65931,13 +66068,13 @@ + (void)readAttributeKeypadLockoutWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeKeypadLockoutWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeKeypadLockoutWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeScheduleProgrammingVisibilityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -65987,13 +66124,13 @@ + (void)readAttributeScheduleProgrammingVisibilityWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScheduleProgrammingVisibilityWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeScheduleProgrammingVisibilityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -66032,13 +66169,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -66077,13 +66214,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -66120,13 +66257,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -66162,13 +66299,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -66206,13 +66343,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -66869,21 +67006,21 @@ - (void)subscribeAttributeCurrentHueWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CurrentHue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -66911,21 +67048,22 @@ - (void)subscribeAttributeCurrentSaturationWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentSaturationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CurrentSaturation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -66953,21 +67091,21 @@ - (void)subscribeAttributeRemainingTimeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRemainingTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::RemainingTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -66995,21 +67133,21 @@ - (void)subscribeAttributeCurrentXWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CurrentX::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67037,21 +67175,21 @@ - (void)subscribeAttributeCurrentYWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CurrentY::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67079,21 +67217,22 @@ - (void)subscribeAttributeDriftCompensationWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDriftCompensationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::DriftCompensation::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67121,21 +67260,22 @@ - (void)subscribeAttributeCompensationTextWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCompensationTextWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CompensationText::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67165,22 +67305,22 @@ - (void)subscribeAttributeColorTemperatureMiredsWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorTemperatureMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorTemperatureMireds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67208,21 +67348,21 @@ - (void)subscribeAttributeColorModeWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67287,21 +67427,21 @@ - (void)subscribeAttributeOptionsWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOptionsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67329,21 +67469,22 @@ - (void)subscribeAttributeNumberOfPrimariesWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNumberOfPrimariesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::NumberOfPrimaries::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67371,21 +67512,21 @@ - (void)subscribeAttributePrimary1XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary1XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary1X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67413,21 +67554,21 @@ - (void)subscribeAttributePrimary1YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary1YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary1Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67455,21 +67596,22 @@ - (void)subscribeAttributePrimary1IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary1IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary1Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67497,21 +67639,21 @@ - (void)subscribeAttributePrimary2XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary2XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary2X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67539,21 +67681,21 @@ - (void)subscribeAttributePrimary2YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary2YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary2Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67581,21 +67723,22 @@ - (void)subscribeAttributePrimary2IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary2IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary2Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67623,21 +67766,21 @@ - (void)subscribeAttributePrimary3XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary3XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary3X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67665,21 +67808,21 @@ - (void)subscribeAttributePrimary3YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary3YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary3Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67707,21 +67850,22 @@ - (void)subscribeAttributePrimary3IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary3IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary3Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67749,21 +67893,21 @@ - (void)subscribeAttributePrimary4XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary4XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary4X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67791,21 +67935,21 @@ - (void)subscribeAttributePrimary4YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary4YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary4Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67833,21 +67977,22 @@ - (void)subscribeAttributePrimary4IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary4IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary4Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67875,21 +68020,21 @@ - (void)subscribeAttributePrimary5XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary5XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary5X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67917,21 +68062,21 @@ - (void)subscribeAttributePrimary5YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary5YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary5Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -67959,21 +68104,22 @@ - (void)subscribeAttributePrimary5IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary5IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary5Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68001,21 +68147,21 @@ - (void)subscribeAttributePrimary6XWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary6XWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary6X::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68043,21 +68189,21 @@ - (void)subscribeAttributePrimary6YWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary6YWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary6Y::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68085,21 +68231,22 @@ - (void)subscribeAttributePrimary6IntensityWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePrimary6IntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::Primary6Intensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68164,21 +68311,21 @@ - (void)subscribeAttributeWhitePointXWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWhitePointXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::WhitePointX::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68243,21 +68390,21 @@ - (void)subscribeAttributeWhitePointYWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWhitePointYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::WhitePointY::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68322,21 +68469,21 @@ - (void)subscribeAttributeColorPointRXWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointRXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointRX::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68401,21 +68548,21 @@ - (void)subscribeAttributeColorPointRYWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointRYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointRY::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68486,22 +68633,22 @@ - (void)subscribeAttributeColorPointRIntensityWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointRIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointRIntensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68566,21 +68713,21 @@ - (void)subscribeAttributeColorPointGXWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointGXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointGX::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68645,21 +68792,21 @@ - (void)subscribeAttributeColorPointGYWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointGYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointGY::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68730,22 +68877,22 @@ - (void)subscribeAttributeColorPointGIntensityWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointGIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointGIntensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68810,21 +68957,21 @@ - (void)subscribeAttributeColorPointBXWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointBXWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointBX::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68889,21 +69036,21 @@ - (void)subscribeAttributeColorPointBYWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointBYWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointBY::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -68974,22 +69121,22 @@ - (void)subscribeAttributeColorPointBIntensityWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorPointBIntensityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorPointBIntensity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69018,22 +69165,22 @@ - (void)subscribeAttributeEnhancedCurrentHueWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnhancedCurrentHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::EnhancedCurrentHue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69061,21 +69208,22 @@ - (void)subscribeAttributeEnhancedColorModeWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnhancedColorModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::EnhancedColorMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69103,21 +69251,22 @@ - (void)subscribeAttributeColorLoopActiveWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorLoopActiveWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorLoopActive::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69146,22 +69295,22 @@ - (void)subscribeAttributeColorLoopDirectionWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorLoopDirectionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorLoopDirection::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69189,21 +69338,21 @@ - (void)subscribeAttributeColorLoopTimeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorLoopTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorLoopTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69233,22 +69382,22 @@ - (void)subscribeAttributeColorLoopStartEnhancedHueWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeColorLoopStartEnhancedHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorLoopStartEnhancedHue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69278,22 +69427,22 @@ - (void)subscribeAttributeColorLoopStoredEnhancedHueWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeColorLoopStoredEnhancedHueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorLoopStoredEnhancedHue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69321,21 +69470,22 @@ - (void)subscribeAttributeColorCapabilitiesWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeColorCapabilitiesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorCapabilities::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69365,22 +69515,22 @@ - (void)subscribeAttributeColorTempPhysicalMinMiredsWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeColorTempPhysicalMinMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMinMireds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69410,22 +69560,22 @@ - (void)subscribeAttributeColorTempPhysicalMaxMiredsWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeColorTempPhysicalMaxMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ColorTempPhysicalMaxMireds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69456,22 +69606,23 @@ - (void)subscribeAttributeCoupleColorTempToLevelMinMiredsWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeCoupleColorTempToLevelMinMiredsWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::CoupleColorTempToLevelMinMireds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69544,22 +69695,22 @@ - (void)subscribeAttributeStartUpColorTemperatureMiredsWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeStartUpColorTemperatureMiredsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69588,23 +69739,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRColorControlGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ColorControlGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ColorControl::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -69633,23 +69784,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRColorControlAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ColorControlAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ColorControl::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -69677,21 +69828,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRColorControlAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ColorControlAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69719,21 +69870,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69761,21 +69912,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ColorControl::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -69913,13 +70065,13 @@ + (void)readAttributeCurrentHueWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentHueWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeCurrentHueWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentSaturationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -69958,13 +70110,13 @@ + (void)readAttributeCurrentSaturationWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentSaturationWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeCurrentSaturationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeRemainingTimeWithCompletionHandler:(void (^)(
@@ -70002,13 +70154,13 @@ + (void)readAttributeRemainingTimeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRemainingTimeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRemainingTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeCurrentXWithCompletionHandler:(void (^)(
@@ -70044,13 +70196,13 @@ + (void)readAttributeCurrentXWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentXWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeCurrentXWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeCurrentYWithCompletionHandler:(void (^)(
@@ -70086,13 +70238,13 @@ + (void)readAttributeCurrentYWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentYWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeCurrentYWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeDriftCompensationWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70131,13 +70283,13 @@ + (void)readAttributeDriftCompensationWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDriftCompensationWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeDriftCompensationWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeCompensationTextWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -70175,13 +70327,13 @@ + (void)readAttributeCompensationTextWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCompensationTextWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeCompensationTextWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70220,13 +70372,13 @@ + (void)readAttributeColorTemperatureMiredsWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTemperatureMiredsWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeColorTemperatureMiredsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeColorModeWithCompletionHandler:(void (^)(
@@ -70262,13 +70414,13 @@ + (void)readAttributeColorModeWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorModeWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeColorModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeOptionsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -70313,13 +70465,13 @@ + (void)readAttributeOptionsWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOptionsWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeOptionsWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeNumberOfPrimariesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70358,13 +70510,13 @@ + (void)readAttributeNumberOfPrimariesWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNumberOfPrimariesWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeNumberOfPrimariesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary1XWithCompletionHandler:(void (^)(
@@ -70400,13 +70552,13 @@ + (void)readAttributePrimary1XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary1XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary1YWithCompletionHandler:(void (^)(
@@ -70442,13 +70594,13 @@ + (void)readAttributePrimary1YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary1YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary1IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70487,13 +70639,13 @@ + (void)readAttributePrimary1IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary1IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary1IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary2XWithCompletionHandler:(void (^)(
@@ -70529,13 +70681,13 @@ + (void)readAttributePrimary2XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary2XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary2YWithCompletionHandler:(void (^)(
@@ -70571,13 +70723,13 @@ + (void)readAttributePrimary2YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary2YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary2IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70616,13 +70768,13 @@ + (void)readAttributePrimary2IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary2IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary2IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary3XWithCompletionHandler:(void (^)(
@@ -70658,13 +70810,13 @@ + (void)readAttributePrimary3XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary3XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary3YWithCompletionHandler:(void (^)(
@@ -70700,13 +70852,13 @@ + (void)readAttributePrimary3YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary3YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary3IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70745,13 +70897,13 @@ + (void)readAttributePrimary3IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary3IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary3IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary4XWithCompletionHandler:(void (^)(
@@ -70787,13 +70939,13 @@ + (void)readAttributePrimary4XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary4XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary4YWithCompletionHandler:(void (^)(
@@ -70829,13 +70981,13 @@ + (void)readAttributePrimary4YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary4YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary4IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -70874,13 +71026,13 @@ + (void)readAttributePrimary4IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary4IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary4IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary5XWithCompletionHandler:(void (^)(
@@ -70916,13 +71068,13 @@ + (void)readAttributePrimary5XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary5XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary5YWithCompletionHandler:(void (^)(
@@ -70958,13 +71110,13 @@ + (void)readAttributePrimary5YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary5YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary5IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71003,13 +71155,13 @@ + (void)readAttributePrimary5IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary5IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary5IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributePrimary6XWithCompletionHandler:(void (^)(
@@ -71045,13 +71197,13 @@ + (void)readAttributePrimary6XWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6XWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary6XWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary6YWithCompletionHandler:(void (^)(
@@ -71087,13 +71239,13 @@ + (void)readAttributePrimary6YWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6YWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributePrimary6YWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributePrimary6IntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71132,13 +71284,13 @@ + (void)readAttributePrimary6IntensityWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePrimary6IntensityWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePrimary6IntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeWhitePointXWithCompletionHandler:(void (^)(
@@ -71185,13 +71337,13 @@ + (void)readAttributeWhitePointXWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWhitePointXWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeWhitePointXWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeWhitePointYWithCompletionHandler:(void (^)(
@@ -71238,13 +71390,13 @@ + (void)readAttributeWhitePointYWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWhitePointYWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeWhitePointYWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeColorPointRXWithCompletionHandler:(void (^)(
@@ -71291,13 +71443,13 @@ + (void)readAttributeColorPointRXWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRXWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointRXWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointRYWithCompletionHandler:(void (^)(
@@ -71344,13 +71496,13 @@ + (void)readAttributeColorPointRYWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRYWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointRYWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointRIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71400,13 +71552,13 @@ + (void)readAttributeColorPointRIntensityWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointRIntensityWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeColorPointRIntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeColorPointGXWithCompletionHandler:(void (^)(
@@ -71453,13 +71605,13 @@ + (void)readAttributeColorPointGXWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGXWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointGXWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointGYWithCompletionHandler:(void (^)(
@@ -71506,13 +71658,13 @@ + (void)readAttributeColorPointGYWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGYWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointGYWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointGIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71562,13 +71714,13 @@ + (void)readAttributeColorPointGIntensityWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointGIntensityWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeColorPointGIntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeColorPointBXWithCompletionHandler:(void (^)(
@@ -71615,13 +71767,13 @@ + (void)readAttributeColorPointBXWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBXWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointBXWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointBYWithCompletionHandler:(void (^)(
@@ -71668,13 +71820,13 @@ + (void)readAttributeColorPointBYWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBYWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeColorPointBYWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeColorPointBIntensityWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71724,13 +71876,13 @@ + (void)readAttributeColorPointBIntensityWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorPointBIntensityWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeColorPointBIntensityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeEnhancedCurrentHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71769,13 +71921,13 @@ + (void)readAttributeEnhancedCurrentHueWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnhancedCurrentHueWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeEnhancedCurrentHueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeEnhancedColorModeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71814,13 +71966,13 @@ + (void)readAttributeEnhancedColorModeWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnhancedColorModeWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeEnhancedColorModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeColorLoopActiveWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71858,13 +72010,13 @@ + (void)readAttributeColorLoopActiveWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopActiveWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeColorLoopActiveWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeColorLoopDirectionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71903,13 +72055,13 @@ + (void)readAttributeColorLoopDirectionWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopDirectionWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeColorLoopDirectionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeColorLoopTimeWithCompletionHandler:(void (^)(
@@ -71947,13 +72099,13 @@ + (void)readAttributeColorLoopTimeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopTimeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeColorLoopTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeColorLoopStartEnhancedHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -71992,13 +72144,13 @@ + (void)readAttributeColorLoopStartEnhancedHueWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopStartEnhancedHueWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeColorLoopStartEnhancedHueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeColorLoopStoredEnhancedHueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72037,13 +72189,13 @@ + (void)readAttributeColorLoopStoredEnhancedHueWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorLoopStoredEnhancedHueWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeColorLoopStoredEnhancedHueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeColorCapabilitiesWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72082,13 +72234,13 @@ + (void)readAttributeColorCapabilitiesWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorCapabilitiesWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeColorCapabilitiesWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeColorTempPhysicalMinMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72127,13 +72279,13 @@ + (void)readAttributeColorTempPhysicalMinMiredsWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTempPhysicalMinMiredsWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeColorTempPhysicalMinMiredsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeColorTempPhysicalMaxMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72172,13 +72324,13 @@ + (void)readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeColorTempPhysicalMaxMiredsWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeColorTempPhysicalMaxMiredsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeCoupleColorTempToLevelMinMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72217,13 +72369,14 @@ + (void)readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCoupleColorTempToLevelMinMiredsWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeCoupleColorTempToLevelMinMiredsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeStartUpColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72273,13 +72426,13 @@ + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartUpColorTemperatureMiredsWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeStartUpColorTemperatureMiredsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -72318,13 +72471,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -72363,13 +72516,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -72406,13 +72559,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -72448,13 +72601,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -72492,13 +72645,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -72541,21 +72694,22 @@ - (void)subscribeAttributePhysicalMinLevelWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePhysicalMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::PhysicalMinLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72583,21 +72737,22 @@ - (void)subscribeAttributePhysicalMaxLevelWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePhysicalMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::PhysicalMaxLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72625,21 +72780,21 @@ - (void)subscribeAttributeBallastStatusWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBallastStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::BallastStatus::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72704,21 +72859,21 @@ - (void)subscribeAttributeMinLevelWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::MinLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72783,21 +72938,21 @@ - (void)subscribeAttributeMaxLevelWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::MaxLevel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72869,22 +73024,22 @@ - (void)subscribeAttributeIntrinsicBalanceFactorWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeIntrinsicBalanceFactorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::IntrinsicBalanceFactor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72956,22 +73111,22 @@ - (void)subscribeAttributeBallastFactorAdjustmentWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBallastFactorAdjustmentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::BallastFactorAdjustment::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -72999,21 +73154,21 @@ - (void)subscribeAttributeLampQuantityWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampQuantityWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampQuantity::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73078,21 +73233,21 @@ - (void)subscribeAttributeLampTypeWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73157,21 +73312,22 @@ - (void)subscribeAttributeLampManufacturerWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampManufacturerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampManufacturer::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73241,21 +73397,21 @@ - (void)subscribeAttributeLampRatedHoursWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampRatedHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampRatedHours::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73325,21 +73481,21 @@ - (void)subscribeAttributeLampBurnHoursWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampBurnHoursWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampBurnHours::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73404,21 +73560,21 @@ - (void)subscribeAttributeLampAlarmModeWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampAlarmModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampAlarmMode::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73490,22 +73646,22 @@ - (void)subscribeAttributeLampBurnHoursTripPointWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLampBurnHoursTripPointWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::LampBurnHoursTripPoint::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73535,23 +73691,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBallastConfigurationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BallastConfigurationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BallastConfiguration::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -73581,23 +73737,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBallastConfigurationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BallastConfigurationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BallastConfiguration::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -73625,22 +73781,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBallastConfigurationAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(BallastConfigurationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = BallastConfiguration::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -73668,21 +73824,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73710,21 +73866,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = BallastConfiguration::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -73773,13 +73930,13 @@ + (void)readAttributePhysicalMinLevelWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalMinLevelWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributePhysicalMinLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributePhysicalMaxLevelWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -73817,13 +73974,13 @@ + (void)readAttributePhysicalMaxLevelWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalMaxLevelWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributePhysicalMaxLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeBallastStatusWithCompletionHandler:(void (^)(
@@ -73861,13 +74018,13 @@ + (void)readAttributeBallastStatusWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBallastStatusWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeBallastStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinLevelWithCompletionHandler:(void (^)(
@@ -73913,13 +74070,13 @@ + (void)readAttributeMinLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinLevelWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeMinLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeMaxLevelWithCompletionHandler:(void (^)(
@@ -73965,13 +74122,13 @@ + (void)readAttributeMaxLevelWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxLevelWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeMaxLevelWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeIntrinsicBalanceFactorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -74021,13 +74178,13 @@ + (void)readAttributeIntrinsicBalanceFactorWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeIntrinsicBalanceFactorWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeIntrinsicBalanceFactorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeBallastFactorAdjustmentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -74077,13 +74234,13 @@ + (void)readAttributeBallastFactorAdjustmentWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBallastFactorAdjustmentWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeBallastFactorAdjustmentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeLampQuantityWithCompletionHandler:(void (^)(
@@ -74120,13 +74277,13 @@ + (void)readAttributeLampQuantityWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampQuantityWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeLampQuantityWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeLampTypeWithCompletionHandler:(void (^)(
@@ -74172,13 +74329,13 @@ + (void)readAttributeLampTypeWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampTypeWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeLampTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeLampManufacturerWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -74226,13 +74383,13 @@ + (void)readAttributeLampManufacturerWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampManufacturerWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeLampManufacturerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeLampRatedHoursWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -74280,13 +74437,13 @@ + (void)readAttributeLampRatedHoursWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampRatedHoursWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeLampRatedHoursWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeLampBurnHoursWithCompletionHandler:(void (^)(
@@ -74334,13 +74491,13 @@ + (void)readAttributeLampBurnHoursWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampBurnHoursWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeLampBurnHoursWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLampAlarmModeWithCompletionHandler:(void (^)(
@@ -74388,13 +74545,13 @@ + (void)readAttributeLampAlarmModeWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampAlarmModeWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeLampAlarmModeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeLampBurnHoursTripPointWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -74444,13 +74601,13 @@ + (void)readAttributeLampBurnHoursTripPointWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLampBurnHoursTripPointWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeLampBurnHoursTripPointWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -74489,13 +74646,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -74534,13 +74691,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -74577,13 +74734,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -74619,13 +74776,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -74663,13 +74820,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -74712,21 +74869,21 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::MeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -74754,21 +74911,22 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::MinMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -74796,21 +74954,22 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -74838,21 +74997,21 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::Tolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -74880,21 +75039,22 @@ - (void)subscribeAttributeLightSensorTypeWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLightSensorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::LightSensorType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -74924,23 +75084,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIlluminanceMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(IlluminanceMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = IlluminanceMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -74970,23 +75130,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIlluminanceMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(IlluminanceMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = IlluminanceMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -75014,22 +75174,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRIlluminanceMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(IlluminanceMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = IlluminanceMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -75057,21 +75217,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75099,21 +75259,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = IlluminanceMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75162,13 +75323,13 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -75206,13 +75367,13 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -75250,13 +75411,13 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
@@ -75292,13 +75453,13 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeLightSensorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -75336,13 +75497,13 @@ + (void)readAttributeLightSensorTypeWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLightSensorTypeWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeLightSensorTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -75381,13 +75542,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -75426,13 +75587,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -75469,13 +75630,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -75511,13 +75672,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -75555,13 +75716,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -75604,21 +75765,21 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::MeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75646,21 +75807,22 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75688,21 +75850,22 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75730,21 +75893,21 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::Tolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75774,23 +75937,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTemperatureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TemperatureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TemperatureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -75820,23 +75983,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTemperatureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TemperatureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TemperatureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -75864,22 +76027,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTemperatureMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TemperatureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TemperatureMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -75907,21 +76070,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -75949,21 +76112,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TemperatureMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76012,13 +76176,13 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -76056,13 +76220,13 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -76100,13 +76264,13 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
@@ -76142,13 +76306,13 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -76187,13 +76351,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -76232,13 +76396,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -76275,13 +76439,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -76317,13 +76481,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -76361,13 +76525,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -76410,21 +76574,21 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::MeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76452,21 +76616,22 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::MinMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76494,21 +76659,22 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76536,21 +76702,21 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::Tolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76578,21 +76744,21 @@ - (void)subscribeAttributeScaledValueWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::ScaledValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76620,21 +76786,21 @@ - (void)subscribeAttributeMinScaledValueWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::MinScaledValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76662,21 +76828,21 @@ - (void)subscribeAttributeMaxScaledValueWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxScaledValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::MaxScaledValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76704,21 +76870,22 @@ - (void)subscribeAttributeScaledToleranceWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScaledToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::ScaledTolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76746,21 +76913,21 @@ - (void)subscribeAttributeScaleWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeScaleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::Scale::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76790,23 +76957,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPressureMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PressureMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PressureMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -76835,23 +77002,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPressureMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PressureMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PressureMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -76879,22 +77046,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRPressureMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(PressureMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = PressureMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -76922,21 +77089,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -76964,21 +77131,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = PressureMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77027,13 +77195,13 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77071,13 +77239,13 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77115,13 +77283,13 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
@@ -77157,13 +77325,13 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeScaledValueWithCompletionHandler:(void (^)(
@@ -77200,13 +77368,13 @@ + (void)readAttributeScaledValueWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaledValueWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeScaledValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeMinScaledValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77244,13 +77412,13 @@ + (void)readAttributeMinScaledValueWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinScaledValueWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeMinScaledValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeMaxScaledValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77288,13 +77456,13 @@ + (void)readAttributeMaxScaledValueWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxScaledValueWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeMaxScaledValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeScaledToleranceWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77332,13 +77500,13 @@ + (void)readAttributeScaledToleranceWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaledToleranceWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeScaledToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeScaleWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -77373,13 +77541,13 @@ + (void)readAttributeScaleWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeScaleWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeScaleWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -77418,13 +77586,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -77463,13 +77631,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -77506,13 +77674,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -77548,13 +77716,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -77592,13 +77760,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -77641,21 +77809,21 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::MeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77683,21 +77851,22 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::MinMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77725,21 +77894,22 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77767,21 +77937,21 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::Tolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77810,23 +77980,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFlowMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FlowMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FlowMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -77855,23 +78025,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFlowMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FlowMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FlowMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -77899,22 +78069,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFlowMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(FlowMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = FlowMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -77942,21 +78112,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -77984,21 +78154,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = FlowMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78047,13 +78218,13 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -78091,13 +78262,13 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -78135,13 +78306,13 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
@@ -78177,13 +78348,13 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -78222,13 +78393,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -78267,13 +78438,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -78310,13 +78481,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -78352,13 +78523,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -78396,13 +78567,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -78445,21 +78616,21 @@ - (void)subscribeAttributeMeasuredValueWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::MeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78487,21 +78658,22 @@ - (void)subscribeAttributeMinMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMinMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::MinMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78529,21 +78701,22 @@ - (void)subscribeAttributeMaxMeasuredValueWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMaxMeasuredValueWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::MaxMeasuredValue::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78571,21 +78744,21 @@ - (void)subscribeAttributeToleranceWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeToleranceWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::Tolerance::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78615,23 +78788,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRRelativeHumidityMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(RelativeHumidityMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = RelativeHumidityMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -78661,23 +78834,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRRelativeHumidityMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(RelativeHumidityMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = RelativeHumidityMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -78706,22 +78879,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRRelativeHumidityMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(RelativeHumidityMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = RelativeHumidityMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -78749,21 +78922,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78791,21 +78964,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = RelativeHumidityMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -78854,13 +79028,13 @@ + (void)readAttributeMeasuredValueWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredValueWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeMinMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -78898,13 +79072,13 @@ + (void)readAttributeMinMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMinMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMinMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeMaxMeasuredValueWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -78942,13 +79116,13 @@ + (void)readAttributeMaxMeasuredValueWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMaxMeasuredValueWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeMaxMeasuredValueWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeToleranceWithCompletionHandler:(void (^)(
@@ -78984,13 +79158,13 @@ + (void)readAttributeToleranceWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeToleranceWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeToleranceWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -79029,13 +79203,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -79074,13 +79248,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -79117,13 +79291,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -79159,13 +79333,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -79203,13 +79377,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -79252,21 +79426,21 @@ - (void)subscribeAttributeOccupancyWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupancyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::Occupancy::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79295,22 +79469,22 @@ - (void)subscribeAttributeOccupancySensorTypeWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOccupancySensorTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::OccupancySensorType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79340,22 +79514,22 @@ - (void)subscribeAttributeOccupancySensorTypeBitmapWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeOccupancySensorTypeBitmapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::OccupancySensorTypeBitmap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79423,22 +79597,22 @@ - (void)subscribeAttributePirOccupiedToUnoccupiedDelayWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributePirOccupiedToUnoccupiedDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PirOccupiedToUnoccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79506,22 +79680,22 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedDelayWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributePirUnoccupiedToOccupiedDelayWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79590,22 +79764,23 @@ - (void)subscribeAttributePirUnoccupiedToOccupiedThresholdWithParams:(MTRSubscri
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributePirUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PirUnoccupiedToOccupiedThreshold::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79674,22 +79849,23 @@ - (void)subscribeAttributeUltrasonicOccupiedToUnoccupiedDelayWithParams:(MTRSubs
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::UltrasonicOccupiedToUnoccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79758,22 +79934,23 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedDelayWithParams:(MTRSubs
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79844,22 +80021,23 @@ - (void)subscribeAttributeUltrasonicUnoccupiedToOccupiedThresholdWithParams:(MTR
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                      endpoint:(NSNumber *)endpoint
-                                                                         queue:(dispatch_queue_t)queue
-                                                                    completion:(void (^)(NSNumber * _Nullable value,
-                                                                                   NSError * _Nullable error))completion
++ (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                         endpoint:(NSNumber *)endpoint
+                                                                            queue:(dispatch_queue_t)queue
+                                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::UltrasonicUnoccupiedToOccupiedThreshold::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -79930,23 +80108,23 @@ - (void)subscribeAttributePhysicalContactOccupiedToUnoccupiedDelayWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PhysicalContactOccupiedToUnoccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -80017,23 +80195,23 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedDelayWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedDelay::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -80104,23 +80282,23 @@ - (void)subscribeAttributePhysicalContactUnoccupiedToOccupiedThresholdWithParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                           endpoint:(NSNumber *)endpoint
-                                                                              queue:(dispatch_queue_t)queue
-                                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                                        NSError * _Nullable error))completion
++ (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                              endpoint:(NSNumber *)endpoint
+                                                                                 queue:(dispatch_queue_t)queue
+                                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::PhysicalContactUnoccupiedToOccupiedThreshold::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -80149,23 +80327,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROccupancySensingGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OccupancySensingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OccupancySensing::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -80194,23 +80372,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROccupancySensingAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OccupancySensingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OccupancySensing::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -80238,22 +80416,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROccupancySensingAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(OccupancySensingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = OccupancySensing::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -80281,21 +80459,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -80323,21 +80501,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = OccupancySensing::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -80384,13 +80563,13 @@ + (void)readAttributeOccupancyWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancyWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeOccupancyWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeOccupancySensorTypeWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80429,13 +80608,13 @@ + (void)readAttributeOccupancySensorTypeWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancySensorTypeWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeOccupancySensorTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeOccupancySensorTypeBitmapWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80474,13 +80653,13 @@ + (void)readAttributeOccupancySensorTypeBitmapWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOccupancySensorTypeBitmapWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeOccupancySensorTypeBitmapWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributePirOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80530,13 +80709,13 @@ + (void)readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributePirOccupiedToUnoccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributePirUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80586,13 +80765,13 @@ + (void)readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributePirUnoccupiedToOccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributePirUnoccupiedToOccupiedThresholdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80642,13 +80821,14 @@ + (void)readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:(MTRAttr
                                                       completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributePirUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributePirUnoccupiedToOccupiedThresholdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                    endpoint:endpoint
+                                                                       queue:queue
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80698,14 +80878,15 @@ + (void)readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:(MTRA
                                                          completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                                    endpoint:endpoint
-                                                                       queue:queue
-                                                                  completion:^(
-                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                      // Cast is safe because subclass does not add any selectors.
-                                                                      completionHandler(static_cast(value), error);
-                                                                  }];
+    [self readAttributeUltrasonicOccupiedToUnoccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                       endpoint:endpoint
+                                                                          queue:queue
+                                                                     completion:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         completionHandler(static_cast(value), error);
+                                                                     }];
 }
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80755,14 +80936,15 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:(MTRA
                                                          completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                                    endpoint:endpoint
-                                                                       queue:queue
-                                                                  completion:^(
-                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                      // Cast is safe because subclass does not add any selectors.
-                                                                      completionHandler(static_cast(value), error);
-                                                                  }];
+    [self readAttributeUltrasonicUnoccupiedToOccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                       endpoint:endpoint
+                                                                          queue:queue
+                                                                     completion:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         completionHandler(static_cast(value), error);
+                                                                     }];
 }
 
 - (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80814,15 +80996,16 @@ + (void)readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:(
                                                              completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                    NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
-                                                                        endpoint:endpoint
-                                                                           queue:queue
-                                                                      completion:^(
-                                                                          NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                          // Cast is safe because subclass does not add any
-                                                                          // selectors.
-                                                                          completionHandler(static_cast(value), error);
-                                                                      }];
+    [self
+        readAttributeUltrasonicUnoccupiedToOccupiedThresholdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                         endpoint:endpoint
+                                                                            queue:queue
+                                                                       completion:^(
+                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                           // Cast is safe because subclass does not add any
+                                                                           // selectors.
+                                                                           completionHandler(static_cast(value), error);
+                                                                       }];
 }
 
 - (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80875,15 +81058,16 @@ + (void)readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactOccupiedToUnoccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributePhysicalContactOccupiedToUnoccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -80936,15 +81120,16 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactUnoccupiedToOccupiedDelayWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributePhysicalContactUnoccupiedToOccupiedDelayWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithCompletionHandler:
@@ -80998,16 +81183,16 @@ + (void)readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCa
                                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithAttributeCache:attributeCacheContainer
-                                                                             endpoint:endpoint
-                                                                                queue:queue
-                                                                           completion:^(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error) {
-                                                                               // Cast is safe because subclass does not add any
-                                                                               // selectors.
-                                                                               completionHandler(
-                                                                                   static_cast(value), error);
-                                                                           }];
+    [self readAttributePhysicalContactUnoccupiedToOccupiedThresholdWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                                endpoint:endpoint
+                                                                                   queue:queue
+                                                                              completion:^(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error) {
+                                                                                  // Cast is safe because subclass does not add any
+                                                                                  // selectors.
+                                                                                  completionHandler(
+                                                                                      static_cast(value), error);
+                                                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -81046,13 +81231,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -81091,13 +81276,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -81134,13 +81319,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -81176,13 +81361,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -81220,13 +81405,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -81269,21 +81454,21 @@ - (void)subscribeAttributeMACAddressWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMACAddressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WakeOnLan::Attributes::MACAddress::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81312,23 +81497,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWakeOnLanGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WakeOnLanGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WakeOnLan::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -81357,23 +81542,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWakeOnLanAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(WakeOnLanAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = WakeOnLan::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -81401,21 +81586,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRWakeOnLanAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(WakeOnLanAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WakeOnLan::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81443,21 +81628,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WakeOnLan::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81485,21 +81670,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = WakeOnLan::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81546,13 +81732,13 @@ + (void)readAttributeMACAddressWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMACAddressWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeMACAddressWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -81591,13 +81777,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -81636,13 +81822,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -81679,13 +81865,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -81721,13 +81907,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -81765,13 +81951,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -81898,21 +82084,21 @@ - (void)subscribeAttributeChannelListWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeChannelListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelChannelListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ChannelChannelListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::ChannelList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81942,22 +82128,22 @@ - (void)subscribeAttributeLineupWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
-                                                  NSError * _Nullable error))completion
++ (void)readAttributeLineupWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
+                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelLineupStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ChannelLineupStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::Lineup::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -81988,22 +82174,22 @@ - (void)subscribeAttributeCurrentChannelWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
-                                                          NSError * _Nullable error))completion
++ (void)readAttributeCurrentChannelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
+                                                             NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelCurrentChannelStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ChannelCurrentChannelStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::CurrentChannel::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82032,23 +82218,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ChannelGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Channel::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -82077,23 +82263,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ChannelAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = Channel::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -82121,21 +82307,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRChannelAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(ChannelAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82163,21 +82349,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82205,21 +82391,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = Channel::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82286,13 +82473,13 @@ + (void)readAttributeChannelListWithAttributeCache:(MTRAttributeCacheContainer *
                                              queue:(dispatch_queue_t)queue
                                  completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeChannelListWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeChannelListWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeLineupWithCompletionHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
@@ -82330,13 +82517,13 @@ + (void)readAttributeLineupWithAttributeCache:(MTRAttributeCacheContainer *)attr
                             completionHandler:(void (^)(MTRChannelClusterLineupInfo * _Nullable value,
                                                   NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineupWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeLineupWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(MTRChannelClusterLineupInfo * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeCurrentChannelWithCompletionHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
@@ -82374,14 +82561,14 @@ + (void)readAttributeCurrentChannelWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:(void (^)(MTRChannelClusterChannelInfo * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeCurrentChannelWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentChannelWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(
+                                                    MTRChannelClusterChannelInfo * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -82420,13 +82607,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -82465,13 +82652,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -82508,13 +82695,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -82550,13 +82737,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -82594,13 +82781,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -82674,21 +82861,21 @@ - (void)subscribeAttributeTargetListWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTargetListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTargetNavigatorTargetListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(TargetNavigatorTargetListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TargetNavigator::Attributes::TargetList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82716,21 +82903,21 @@ - (void)subscribeAttributeCurrentTargetWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentTargetWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TargetNavigator::Attributes::CurrentTarget::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82759,23 +82946,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTargetNavigatorGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TargetNavigatorGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TargetNavigator::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -82804,23 +82991,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTargetNavigatorAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TargetNavigatorAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TargetNavigator::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -82848,22 +83035,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRTargetNavigatorAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(TargetNavigatorAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = TargetNavigator::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -82891,21 +83078,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TargetNavigator::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -82933,21 +83120,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = TargetNavigator::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83006,13 +83194,13 @@ + (void)readAttributeTargetListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTargetListWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeTargetListWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentTargetWithCompletionHandler:(void (^)(
@@ -83050,13 +83238,13 @@ + (void)readAttributeCurrentTargetWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentTargetWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeCurrentTargetWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -83095,13 +83283,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -83140,13 +83328,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -83183,13 +83371,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -83225,13 +83413,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -83269,13 +83457,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -83647,22 +83835,22 @@ - (void)subscribeAttributeCurrentStateWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaPlaybackClusterPlaybackStateEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaPlaybackClusterPlaybackStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaPlayback::Attributes::CurrentState::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -83690,21 +83878,21 @@ - (void)subscribeAttributeStartTimeWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStartTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::StartTime::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83732,21 +83920,21 @@ - (void)subscribeAttributeDurationWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDurationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::Duration::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83777,23 +83965,23 @@ - (void)subscribeAttributeSampledPositionWithParams:(MTRSubscribeParams * _Nonnu
         self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
-                                                           NSError * _Nullable error))completion
++ (void)readAttributeSampledPositionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
+                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaPlaybackSampledPositionStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaPlaybackSampledPositionStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaPlayback::Attributes::SampledPosition::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -83821,21 +84009,21 @@ - (void)subscribeAttributePlaybackSpeedWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePlaybackSpeedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFloatAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FloatAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::PlaybackSpeed::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83863,21 +84051,21 @@ - (void)subscribeAttributeSeekRangeEndWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSeekRangeEndWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::SeekRangeEnd::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83905,21 +84093,21 @@ - (void)subscribeAttributeSeekRangeStartWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeSeekRangeStartWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::SeekRangeStart::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -83948,23 +84136,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaPlaybackGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaPlaybackGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaPlayback::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -83993,23 +84181,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaPlaybackAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaPlaybackAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaPlayback::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -84037,22 +84225,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaPlaybackAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaPlaybackAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaPlayback::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -84080,21 +84268,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -84122,21 +84310,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaPlayback::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -84335,13 +84524,13 @@ + (void)readAttributeCurrentStateWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentStateWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentStateWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeStartTimeWithCompletionHandler:(void (^)(
@@ -84377,13 +84566,13 @@ + (void)readAttributeStartTimeWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStartTimeWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeStartTimeWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDurationWithCompletionHandler:(void (^)(
@@ -84419,13 +84608,13 @@ + (void)readAttributeDurationWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDurationWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeDurationWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeSampledPositionWithCompletionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
@@ -84465,15 +84654,15 @@ + (void)readAttributeSampledPositionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:(void (^)(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSampledPositionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
-                                                  NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(
-                                                      static_cast(value), error);
-                                              }];
+    [self readAttributeSampledPositionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(MTRMediaPlaybackClusterPlaybackPosition * _Nullable value,
+                                                     NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(
+                                                         static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePlaybackSpeedWithCompletionHandler:(void (^)(
@@ -84511,13 +84700,13 @@ + (void)readAttributePlaybackSpeedWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePlaybackSpeedWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributePlaybackSpeedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeSeekRangeEndWithCompletionHandler:(void (^)(
@@ -84554,13 +84743,13 @@ + (void)readAttributeSeekRangeEndWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSeekRangeEndWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeSeekRangeEndWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSeekRangeStartWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -84598,13 +84787,13 @@ + (void)readAttributeSeekRangeStartWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSeekRangeStartWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeSeekRangeStartWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -84643,13 +84832,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -84688,13 +84877,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -84731,13 +84920,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -84773,13 +84962,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -84817,13 +85006,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -84987,21 +85176,21 @@ - (void)subscribeAttributeInputListWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInputListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaInputInputListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(MediaInputInputListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaInput::Attributes::InputList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85029,21 +85218,21 @@ - (void)subscribeAttributeCurrentInputWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentInputWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaInput::Attributes::CurrentInput::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85072,23 +85261,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaInputGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaInput::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -85117,23 +85306,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaInputAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(MediaInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = MediaInput::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -85161,21 +85350,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRMediaInputAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(MediaInputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaInput::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85203,21 +85392,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaInput::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85245,21 +85434,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = MediaInput::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85335,13 +85525,13 @@ + (void)readAttributeInputListWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInputListWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeInputListWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeCurrentInputWithCompletionHandler:(void (^)(
@@ -85378,13 +85568,13 @@ + (void)readAttributeCurrentInputWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentInputWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeCurrentInputWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -85423,13 +85613,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -85468,13 +85658,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -85511,13 +85701,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -85553,13 +85743,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -85597,13 +85787,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -85678,23 +85868,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLowPowerGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LowPowerGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LowPower::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -85723,23 +85913,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLowPowerAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(LowPowerAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = LowPower::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -85767,21 +85957,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRLowPowerAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(LowPowerAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LowPower::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85809,21 +85999,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LowPower::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85851,21 +86041,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = LowPower::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -85924,13 +86115,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -85969,13 +86160,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -86012,13 +86203,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -86054,13 +86245,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -86098,13 +86289,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -86174,23 +86365,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRKeypadInputGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(KeypadInputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = KeypadInput::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -86219,23 +86410,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRKeypadInputAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(KeypadInputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = KeypadInput::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -86263,21 +86454,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRKeypadInputAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(KeypadInputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = KeypadInput::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -86305,21 +86496,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = KeypadInput::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -86347,21 +86538,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = KeypadInput::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -86422,13 +86614,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -86467,13 +86659,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -86510,13 +86702,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -86552,13 +86744,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -86596,13 +86788,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -86853,22 +87045,22 @@ - (void)subscribeAttributeAcceptHeaderWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptHeaderWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRContentLauncherAcceptHeaderListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ContentLauncherAcceptHeaderListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ContentLauncher::Attributes::AcceptHeader::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -86935,22 +87127,22 @@ - (void)subscribeAttributeSupportedStreamingProtocolsWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeSupportedStreamingProtocolsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -86979,23 +87171,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRContentLauncherGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ContentLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ContentLauncher::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -87024,23 +87216,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRContentLauncherAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ContentLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ContentLauncher::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -87068,22 +87260,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRContentLauncherAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ContentLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ContentLauncher::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -87111,21 +87303,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ContentLauncher::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87153,21 +87345,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ContentLauncher::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87236,13 +87429,13 @@ + (void)readAttributeAcceptHeaderWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptHeaderWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeAcceptHeaderWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeSupportedStreamingProtocolsWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -87292,13 +87485,13 @@ + (void)readAttributeSupportedStreamingProtocolsWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeSupportedStreamingProtocolsWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeSupportedStreamingProtocolsWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -87337,13 +87530,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -87382,13 +87575,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -87425,13 +87618,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -87467,13 +87660,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -87511,13 +87704,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -87617,21 +87810,21 @@ - (void)subscribeAttributeOutputListWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOutputListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAudioOutputOutputListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(AudioOutputOutputListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AudioOutput::Attributes::OutputList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87659,21 +87852,21 @@ - (void)subscribeAttributeCurrentOutputWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentOutputWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AudioOutput::Attributes::CurrentOutput::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87702,23 +87895,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAudioOutputGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AudioOutputGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AudioOutput::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -87747,23 +87940,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAudioOutputAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AudioOutputAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AudioOutput::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -87791,21 +87984,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAudioOutputAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(AudioOutputAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AudioOutput::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87833,21 +88026,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AudioOutput::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87875,21 +88068,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AudioOutput::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -87947,13 +88141,13 @@ + (void)readAttributeOutputListWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOutputListWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeOutputListWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeCurrentOutputWithCompletionHandler:(void (^)(
@@ -87991,13 +88185,13 @@ + (void)readAttributeCurrentOutputWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentOutputWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeCurrentOutputWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -88036,13 +88230,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -88081,13 +88275,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -88124,13 +88318,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -88166,13 +88360,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -88210,13 +88404,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -88347,22 +88541,22 @@ - (void)subscribeAttributeCatalogListWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCatalogListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationLauncherCatalogListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationLauncherCatalogListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationLauncher::Attributes::CatalogList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -88443,23 +88637,23 @@ - (void)subscribeAttributeCurrentAppWithParams:(MTRSubscribeParams * _Nonnull)pa
         self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
-                                                      NSError * _Nullable error))completion
++ (void)readAttributeCurrentAppWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
+                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationLauncherCurrentAppStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationLauncherCurrentAppStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationLauncher::Attributes::CurrentApp::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -88489,23 +88683,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationLauncherGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationLauncherGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationLauncher::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -88534,23 +88728,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationLauncherAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationLauncherAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationLauncher::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -88578,22 +88772,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationLauncherAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationLauncherAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationLauncher::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -88621,21 +88815,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationLauncher::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -88663,21 +88857,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationLauncher::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -88755,13 +88950,13 @@ + (void)readAttributeCatalogListWithAttributeCache:(MTRAttributeCacheContainer *
                                              queue:(dispatch_queue_t)queue
                                  completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCatalogListWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeCatalogListWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeCurrentAppWithCompletionHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
@@ -88812,15 +89007,15 @@ + (void)readAttributeCurrentAppWithAttributeCache:(MTRAttributeCacheContainer *)
                                 completionHandler:(void (^)(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentAppWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
-                                             NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(
-                                                 static_cast(value), error);
-                                         }];
+    [self readAttributeCurrentAppWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(MTRApplicationLauncherClusterApplicationEP * _Nullable value,
+                                                NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(
+                                                    static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -88859,13 +89054,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -88904,13 +89099,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -88947,13 +89142,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -88989,13 +89184,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -89033,13 +89228,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -89082,21 +89277,21 @@ - (void)subscribeAttributeVendorNameWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::VendorName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89124,21 +89319,21 @@ - (void)subscribeAttributeVendorIDWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::VendorID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89166,21 +89361,22 @@ - (void)subscribeAttributeApplicationNameWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApplicationNameWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::ApplicationName::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89208,21 +89404,21 @@ - (void)subscribeAttributeProductIDWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeProductIDWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::ProductID::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89253,24 +89449,24 @@ - (void)subscribeAttributeApplicationWithParams:(MTRSubscribeParams * _Nonnull)p
         reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:
-                                            (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
-                                                NSError * _Nullable error))completion
++ (void)readAttributeApplicationWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:
+                                               (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
+                                                   NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicApplicationStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicApplicationStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::Application::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89299,22 +89495,22 @@ - (void)subscribeAttributeStatusWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeStatusWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicClusterApplicationStatusEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicClusterApplicationStatusEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::Status::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89343,22 +89539,22 @@ - (void)subscribeAttributeApplicationVersionWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApplicationVersionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::ApplicationVersion::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89386,22 +89582,23 @@ - (void)subscribeAttributeAllowedVendorListWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAllowedVendorListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicAllowedVendorListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicAllowedVendorListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::AllowedVendorList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89430,23 +89627,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89475,23 +89672,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89519,22 +89716,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRApplicationBasicAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ApplicationBasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ApplicationBasic::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -89562,21 +89759,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89604,21 +89801,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ApplicationBasic::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -89665,13 +89863,13 @@ + (void)readAttributeVendorNameWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorNameWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeVendorNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeVendorIDWithCompletionHandler:(void (^)(
@@ -89707,13 +89905,13 @@ + (void)readAttributeVendorIDWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIDWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeVendorIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeApplicationNameWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -89751,13 +89949,13 @@ + (void)readAttributeApplicationNameWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationNameWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeApplicationNameWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeProductIDWithCompletionHandler:(void (^)(
@@ -89793,13 +89991,13 @@ + (void)readAttributeProductIDWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeProductIDWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeProductIDWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeApplicationWithCompletionHandler:
@@ -89842,16 +90040,16 @@ + (void)readAttributeApplicationWithAttributeCache:(MTRAttributeCacheContainer *
                                      (void (^)(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
                                          NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeApplicationWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
-                                            NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(
-                                                static_cast(value), error);
-                                        }];
+    [self readAttributeApplicationWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(MTRApplicationBasicClusterApplicationBasicApplication * _Nullable value,
+                                                 NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(
+                                                     static_cast(value),
+                                                     error);
+                                             }];
 }
 
 - (void)readAttributeStatusWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -89886,13 +90084,13 @@ + (void)readAttributeStatusWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStatusWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeStatusWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeApplicationVersionWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -89931,13 +90129,13 @@ + (void)readAttributeApplicationVersionWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApplicationVersionWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeApplicationVersionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeAllowedVendorListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -89975,13 +90173,13 @@ + (void)readAttributeAllowedVendorListWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAllowedVendorListWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeAllowedVendorListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -90020,13 +90218,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -90065,13 +90263,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -90108,13 +90306,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -90150,13 +90348,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -90194,13 +90392,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -90340,23 +90538,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccountLoginGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AccountLoginGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AccountLogin::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -90385,23 +90583,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccountLoginAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(AccountLoginAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = AccountLogin::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -90429,21 +90627,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRAccountLoginAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(AccountLoginAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccountLogin::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -90471,21 +90669,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccountLogin::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -90513,21 +90711,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = AccountLogin::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -90601,13 +90800,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -90646,13 +90845,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -90689,13 +90888,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -90731,13 +90930,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -90775,13 +90974,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -90887,21 +91086,22 @@ - (void)subscribeAttributeMeasurementTypeWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeMeasurementTypeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasurementType::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -90929,21 +91129,21 @@ - (void)subscribeAttributeDcVoltageWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -90971,21 +91171,21 @@ - (void)subscribeAttributeDcVoltageMinWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91013,21 +91213,21 @@ - (void)subscribeAttributeDcVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91055,21 +91255,21 @@ - (void)subscribeAttributeDcCurrentWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91097,21 +91297,21 @@ - (void)subscribeAttributeDcCurrentMinWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91139,21 +91339,21 @@ - (void)subscribeAttributeDcCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91181,21 +91381,21 @@ - (void)subscribeAttributeDcPowerWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcPower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91223,21 +91423,21 @@ - (void)subscribeAttributeDcPowerMinWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91265,21 +91465,21 @@ - (void)subscribeAttributeDcPowerMaxWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91308,22 +91508,22 @@ - (void)subscribeAttributeDcVoltageMultiplierWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91351,21 +91551,22 @@ - (void)subscribeAttributeDcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcVoltageDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcVoltageDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91394,22 +91595,22 @@ - (void)subscribeAttributeDcCurrentMultiplierWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91437,21 +91638,22 @@ - (void)subscribeAttributeDcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcCurrentDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcCurrentDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91479,21 +91681,22 @@ - (void)subscribeAttributeDcPowerMultiplierWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcPowerMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91521,21 +91724,21 @@ - (void)subscribeAttributeDcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeDcPowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::DcPowerDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91563,21 +91766,21 @@ - (void)subscribeAttributeAcFrequencyWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcFrequency::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91605,21 +91808,21 @@ - (void)subscribeAttributeAcFrequencyMinWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91647,21 +91850,21 @@ - (void)subscribeAttributeAcFrequencyMaxWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91689,21 +91892,21 @@ - (void)subscribeAttributeNeutralCurrentWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNeutralCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::NeutralCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91731,21 +91934,22 @@ - (void)subscribeAttributeTotalActivePowerWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTotalActivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::TotalActivePower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91774,22 +91978,22 @@ - (void)subscribeAttributeTotalReactivePowerWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTotalReactivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::TotalReactivePower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91818,22 +92022,22 @@ - (void)subscribeAttributeTotalApparentPowerWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTotalApparentPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::TotalApparentPower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91863,22 +92067,22 @@ - (void)subscribeAttributeMeasured1stHarmonicCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeMeasured1stHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured1stHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91908,22 +92112,22 @@ - (void)subscribeAttributeMeasured3rdHarmonicCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeMeasured3rdHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured3rdHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91953,22 +92157,22 @@ - (void)subscribeAttributeMeasured5thHarmonicCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeMeasured5thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured5thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -91998,22 +92202,22 @@ - (void)subscribeAttributeMeasured7thHarmonicCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeMeasured7thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured7thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92043,22 +92247,22 @@ - (void)subscribeAttributeMeasured9thHarmonicCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeMeasured9thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured9thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92088,22 +92292,22 @@ - (void)subscribeAttributeMeasured11thHarmonicCurrentWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeMeasured11thHarmonicCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::Measured11thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92134,22 +92338,23 @@ - (void)subscribeAttributeMeasuredPhase1stHarmonicCurrentWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase1stHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase1stHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92180,22 +92385,23 @@ - (void)subscribeAttributeMeasuredPhase3rdHarmonicCurrentWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase3rdHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92226,22 +92432,23 @@ - (void)subscribeAttributeMeasuredPhase5thHarmonicCurrentWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase5thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase5thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92272,22 +92479,23 @@ - (void)subscribeAttributeMeasuredPhase7thHarmonicCurrentWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase7thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase7thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92318,22 +92526,23 @@ - (void)subscribeAttributeMeasuredPhase9thHarmonicCurrentWithParams:(MTRSubscrib
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSNumber * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase9thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase9thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92364,22 +92573,23 @@ - (void)subscribeAttributeMeasuredPhase11thHarmonicCurrentWithParams:(MTRSubscri
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                               endpoint:(NSNumber *)endpoint
-                                                                  queue:(dispatch_queue_t)queue
-                                                             completion:(void (^)(NSNumber * _Nullable value,
-                                                                            NSError * _Nullable error))completion
++ (void)readAttributeMeasuredPhase11thHarmonicCurrentWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                  endpoint:(NSNumber *)endpoint
+                                                                     queue:(dispatch_queue_t)queue
+                                                                completion:(void (^)(NSNumber * _Nullable value,
+                                                                               NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::MeasuredPhase11thHarmonicCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92408,22 +92618,22 @@ - (void)subscribeAttributeAcFrequencyMultiplierWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92452,22 +92662,22 @@ - (void)subscribeAttributeAcFrequencyDivisorWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcFrequencyDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcFrequencyDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92495,21 +92705,22 @@ - (void)subscribeAttributePowerMultiplierWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PowerMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92537,21 +92748,21 @@ - (void)subscribeAttributePowerDivisorWithParams:(MTRSubscribeParams * _Nonnull)
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                           endpoint:(NSNumber *)endpoint
-                                              queue:(dispatch_queue_t)queue
-                                         completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                              endpoint:(NSNumber *)endpoint
+                                                 queue:(dispatch_queue_t)queue
+                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PowerDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92581,22 +92792,22 @@ - (void)subscribeAttributeHarmonicCurrentMultiplierWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeHarmonicCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::HarmonicCurrentMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92627,22 +92838,22 @@ - (void)subscribeAttributePhaseHarmonicCurrentMultiplierWithParams:(MTRSubscribe
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                             endpoint:(NSNumber *)endpoint
-                                                                queue:(dispatch_queue_t)queue
-                                                           completion:(void (^)(NSNumber * _Nullable value,
-                                                                          NSError * _Nullable error))completion
++ (void)readAttributePhaseHarmonicCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                endpoint:(NSNumber *)endpoint
+                                                                   queue:(dispatch_queue_t)queue
+                                                              completion:(void (^)(NSNumber * _Nullable value,
+                                                                             NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PhaseHarmonicCurrentMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92671,22 +92882,22 @@ - (void)subscribeAttributeInstantaneousVoltageWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstantaneousVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92716,22 +92927,22 @@ - (void)subscribeAttributeInstantaneousLineCurrentWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                       endpoint:(NSNumber *)endpoint
-                                                          queue:(dispatch_queue_t)queue
-                                                     completion:
-                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstantaneousLineCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                          endpoint:(NSNumber *)endpoint
+                                                             queue:(dispatch_queue_t)queue
+                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousLineCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92761,22 +92972,22 @@ - (void)subscribeAttributeInstantaneousActiveCurrentWithParams:(MTRSubscribePara
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                         endpoint:(NSNumber *)endpoint
-                                                            queue:(dispatch_queue_t)queue
-                                                       completion:(void (^)(NSNumber * _Nullable value,
-                                                                      NSError * _Nullable error))completion
++ (void)readAttributeInstantaneousActiveCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                            endpoint:(NSNumber *)endpoint
+                                                               queue:(dispatch_queue_t)queue
+                                                          completion:(void (^)(NSNumber * _Nullable value,
+                                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousActiveCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92807,22 +93018,22 @@ - (void)subscribeAttributeInstantaneousReactiveCurrentWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeInstantaneousReactiveCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousReactiveCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92851,22 +93062,22 @@ - (void)subscribeAttributeInstantaneousPowerWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInstantaneousPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::InstantaneousPower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92894,21 +93105,21 @@ - (void)subscribeAttributeRmsVoltageWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92936,21 +93147,21 @@ - (void)subscribeAttributeRmsVoltageMinWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -92978,21 +93189,21 @@ - (void)subscribeAttributeRmsVoltageMaxWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93020,21 +93231,21 @@ - (void)subscribeAttributeRmsCurrentWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrent::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93062,21 +93273,21 @@ - (void)subscribeAttributeRmsCurrentMinWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93104,21 +93315,21 @@ - (void)subscribeAttributeRmsCurrentMaxWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93146,21 +93357,21 @@ - (void)subscribeAttributeActivePowerWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93188,21 +93399,21 @@ - (void)subscribeAttributeActivePowerMinWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMinWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMin::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93230,21 +93441,21 @@ - (void)subscribeAttributeActivePowerMaxWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMaxWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMax::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93272,21 +93483,21 @@ - (void)subscribeAttributeReactivePowerWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactivePowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ReactivePower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93314,21 +93525,21 @@ - (void)subscribeAttributeApparentPowerWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApparentPowerWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ApparentPower::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93356,21 +93567,21 @@ - (void)subscribeAttributePowerFactorWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerFactorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PowerFactor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93439,22 +93650,23 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93522,22 +93734,22 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageCounterWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounter::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93604,22 +93816,22 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltagePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93687,22 +93899,22 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltagePeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93768,22 +93980,22 @@ - (void)subscribeAttributeRmsVoltageSagPeriodWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSagPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93849,22 +94061,22 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSwellPeriodWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriod::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93893,22 +94105,22 @@ - (void)subscribeAttributeAcVoltageMultiplierWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcVoltageMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93936,21 +94148,22 @@ - (void)subscribeAttributeAcVoltageDivisorWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcVoltageDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -93979,22 +94192,22 @@ - (void)subscribeAttributeAcCurrentMultiplierWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcCurrentMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94022,21 +94235,22 @@ - (void)subscribeAttributeAcCurrentDivisorWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcCurrentDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94064,21 +94278,22 @@ - (void)subscribeAttributeAcPowerMultiplierWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcPowerMultiplierWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcPowerMultiplier::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94106,21 +94321,21 @@ - (void)subscribeAttributeAcPowerDivisorWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcPowerDivisorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcPowerDivisor::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94186,22 +94401,22 @@ - (void)subscribeAttributeOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOverloadAlarmsMaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::OverloadAlarmsMask::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94229,21 +94444,22 @@ - (void)subscribeAttributeVoltageOverloadWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVoltageOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::VoltageOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94271,21 +94487,22 @@ - (void)subscribeAttributeCurrentOverloadWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCurrentOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::CurrentOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94351,22 +94568,22 @@ - (void)subscribeAttributeAcOverloadAlarmsMaskWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcOverloadAlarmsMaskWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcOverloadAlarmsMask::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94394,21 +94611,22 @@ - (void)subscribeAttributeAcVoltageOverloadWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcVoltageOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcVoltageOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94436,21 +94654,22 @@ - (void)subscribeAttributeAcCurrentOverloadWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcCurrentOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcCurrentOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94479,22 +94698,22 @@ - (void)subscribeAttributeAcActivePowerOverloadWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcActivePowerOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcActivePowerOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94524,22 +94743,22 @@ - (void)subscribeAttributeAcReactivePowerOverloadWithParams:(MTRSubscribeParams
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                      endpoint:(NSNumber *)endpoint
-                                                         queue:(dispatch_queue_t)queue
-                                                    completion:
-                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcReactivePowerOverloadWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                         endpoint:(NSNumber *)endpoint
+                                                            queue:(dispatch_queue_t)queue
+                                                       completion:(void (^)(NSNumber * _Nullable value,
+                                                                      NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AcReactivePowerOverload::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94568,22 +94787,22 @@ - (void)subscribeAttributeAverageRmsOverVoltageWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsOverVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94613,22 +94832,22 @@ - (void)subscribeAttributeAverageRmsUnderVoltageWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94657,22 +94876,22 @@ - (void)subscribeAttributeRmsExtremeOverVoltageWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94702,22 +94921,22 @@ - (void)subscribeAttributeRmsExtremeUnderVoltageWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                     endpoint:(NSNumber *)endpoint
-                                                        queue:(dispatch_queue_t)queue
-                                                   completion:
-                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltageWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                        endpoint:(NSNumber *)endpoint
+                                                           queue:(dispatch_queue_t)queue
+                                                      completion:(void (^)(NSNumber * _Nullable value,
+                                                                     NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltage::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94745,21 +94964,21 @@ - (void)subscribeAttributeRmsVoltageSagWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSagWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSag::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94787,21 +95006,22 @@ - (void)subscribeAttributeRmsVoltageSwellWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSwellWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwell::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94829,21 +95049,22 @@ - (void)subscribeAttributeLineCurrentPhaseBWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLineCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94872,22 +95093,22 @@ - (void)subscribeAttributeActiveCurrentPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94916,22 +95137,22 @@ - (void)subscribeAttributeReactiveCurrentPhaseBWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactiveCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -94959,21 +95180,22 @@ - (void)subscribeAttributeRmsVoltagePhaseBWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltagePhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95002,22 +95224,22 @@ - (void)subscribeAttributeRmsVoltageMinPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95046,22 +95268,22 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95089,21 +95311,22 @@ - (void)subscribeAttributeRmsCurrentPhaseBWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95132,22 +95355,22 @@ - (void)subscribeAttributeRmsCurrentMinPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95176,22 +95399,22 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95219,21 +95442,22 @@ - (void)subscribeAttributeActivePowerPhaseBWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95262,22 +95486,22 @@ - (void)subscribeAttributeActivePowerMinPhaseBWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMinPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95306,22 +95530,22 @@ - (void)subscribeAttributeActivePowerMaxPhaseBWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMaxPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95350,22 +95574,22 @@ - (void)subscribeAttributeReactivePowerPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactivePowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95394,22 +95618,22 @@ - (void)subscribeAttributeApparentPowerPhaseBWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApparentPowerPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95437,21 +95661,22 @@ - (void)subscribeAttributePowerFactorPhaseBWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerFactorPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95482,23 +95707,23 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95529,22 +95754,23 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseBWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95575,22 +95801,23 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseBWithParams:(MTRSubs
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95621,22 +95848,23 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseBWithParams:(MTRSubscr
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95667,22 +95895,23 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseBWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95712,22 +95941,22 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseBWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSagPeriodPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95757,22 +95986,22 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseBWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSwellPeriodPhaseBWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseB::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95800,21 +96029,22 @@ - (void)subscribeAttributeLineCurrentPhaseCWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLineCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::LineCurrentPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95843,22 +96073,22 @@ - (void)subscribeAttributeActiveCurrentPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActiveCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActiveCurrentPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95887,22 +96117,22 @@ - (void)subscribeAttributeReactiveCurrentPhaseCWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactiveCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ReactiveCurrentPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95930,21 +96160,22 @@ - (void)subscribeAttributeRmsVoltagePhaseCWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltagePhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltagePhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -95973,22 +96204,22 @@ - (void)subscribeAttributeRmsVoltageMinPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMinPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96017,22 +96248,22 @@ - (void)subscribeAttributeRmsVoltageMaxPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageMaxPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96060,21 +96291,22 @@ - (void)subscribeAttributeRmsCurrentPhaseCWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96103,22 +96335,22 @@ - (void)subscribeAttributeRmsCurrentMinPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMinPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96147,22 +96379,22 @@ - (void)subscribeAttributeRmsCurrentMaxPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRmsCurrentMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsCurrentMaxPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96190,21 +96422,22 @@ - (void)subscribeAttributeActivePowerPhaseCWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96233,22 +96466,22 @@ - (void)subscribeAttributeActivePowerMinPhaseCWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMinPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMinPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96277,22 +96510,22 @@ - (void)subscribeAttributeActivePowerMaxPhaseCWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeActivePowerMaxPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ActivePowerMaxPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96321,22 +96554,22 @@ - (void)subscribeAttributeReactivePowerPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeReactivePowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ReactivePowerPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96365,22 +96598,22 @@ - (void)subscribeAttributeApparentPowerPhaseCWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeApparentPowerPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ApparentPowerPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96408,21 +96641,22 @@ - (void)subscribeAttributePowerFactorPhaseCWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributePowerFactorPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::PowerFactorPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96453,23 +96687,23 @@ - (void)subscribeAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithParams:(MT
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
-            (MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                       endpoint:(NSNumber *)endpoint
-                                                                          queue:(dispatch_queue_t)queue
-                                                                     completion:(void (^)(NSNumber * _Nullable value,
-                                                                                    NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                          endpoint:(NSNumber *)endpoint
+                                                                             queue:(dispatch_queue_t)queue
+                                                                        completion:(void (^)(NSNumber * _Nullable value,
+                                                                                       NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsVoltageMeasurementPeriodPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96500,22 +96734,23 @@ - (void)subscribeAttributeAverageRmsOverVoltageCounterPhaseCWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsOverVoltageCounterPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96546,22 +96781,23 @@ - (void)subscribeAttributeAverageRmsUnderVoltageCounterPhaseCWithParams:(MTRSubs
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                  endpoint:(NSNumber *)endpoint
-                                                                     queue:(dispatch_queue_t)queue
-                                                                completion:(void (^)(NSNumber * _Nullable value,
-                                                                               NSError * _Nullable error))completion
++ (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                     endpoint:(NSNumber *)endpoint
+                                                                        queue:(dispatch_queue_t)queue
+                                                                   completion:(void (^)(NSNumber * _Nullable value,
+                                                                                  NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::AverageRmsUnderVoltageCounterPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96592,22 +96828,23 @@ - (void)subscribeAttributeRmsExtremeOverVoltagePeriodPhaseCWithParams:(MTRSubscr
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                endpoint:(NSNumber *)endpoint
-                                                                   queue:(dispatch_queue_t)queue
-                                                              completion:(void (^)(NSNumber * _Nullable value,
-                                                                             NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                   endpoint:(NSNumber *)endpoint
+                                                                      queue:(dispatch_queue_t)queue
+                                                                 completion:(void (^)(NSNumber * _Nullable value,
+                                                                                NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeOverVoltagePeriodPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96638,22 +96875,23 @@ - (void)subscribeAttributeRmsExtremeUnderVoltagePeriodPhaseCWithParams:(MTRSubsc
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                                 endpoint:(NSNumber *)endpoint
-                                                                    queue:(dispatch_queue_t)queue
-                                                               completion:(void (^)(NSNumber * _Nullable value,
-                                                                              NSError * _Nullable error))completion
++ (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                    endpoint:(NSNumber *)endpoint
+                                                                       queue:(dispatch_queue_t)queue
+                                                                  completion:(void (^)(NSNumber * _Nullable value,
+                                                                                 NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsExtremeUnderVoltagePeriodPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96683,22 +96921,22 @@ - (void)subscribeAttributeRmsVoltageSagPeriodPhaseCWithParams:(MTRSubscribeParam
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                        endpoint:(NSNumber *)endpoint
-                                                           queue:(dispatch_queue_t)queue
-                                                      completion:(void (^)(NSNumber * _Nullable value,
-                                                                     NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSagPeriodPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                           endpoint:(NSNumber *)endpoint
+                                                              queue:(dispatch_queue_t)queue
+                                                         completion:(void (^)(NSNumber * _Nullable value,
+                                                                        NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSagPeriodPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96728,22 +96966,22 @@ - (void)subscribeAttributeRmsVoltageSwellPeriodPhaseCWithParams:(MTRSubscribePar
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                          endpoint:(NSNumber *)endpoint
-                                                             queue:(dispatch_queue_t)queue
-                                                        completion:(void (^)(NSNumber * _Nullable value,
-                                                                       NSError * _Nullable error))completion
++ (void)readAttributeRmsVoltageSwellPeriodPhaseCWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                             endpoint:(NSNumber *)endpoint
+                                                                queue:(dispatch_queue_t)queue
+                                                           completion:(void (^)(NSNumber * _Nullable value,
+                                                                          NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::RmsVoltageSwellPeriodPhaseC::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96773,23 +97011,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRElectricalMeasurementGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ElectricalMeasurementGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ElectricalMeasurement::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -96819,23 +97057,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRElectricalMeasurementAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ElectricalMeasurementAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ElectricalMeasurement::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -96863,22 +97101,22 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRElectricalMeasurementAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(ElectricalMeasurementAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = ElectricalMeasurement::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -96906,21 +97144,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -96948,21 +97186,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = ElectricalMeasurement::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -97026,13 +97265,13 @@ + (void)readAttributeMeasurementTypeWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasurementTypeWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeMeasurementTypeWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeDcVoltageWithCompletionHandler:(void (^)(
@@ -97068,13 +97307,13 @@ + (void)readAttributeDcVoltageWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeDcVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcVoltageMinWithCompletionHandler:(void (^)(
@@ -97111,13 +97350,13 @@ + (void)readAttributeDcVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMinWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeDcVoltageMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDcVoltageMaxWithCompletionHandler:(void (^)(
@@ -97154,13 +97393,13 @@ + (void)readAttributeDcVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMaxWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeDcVoltageMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDcCurrentWithCompletionHandler:(void (^)(
@@ -97196,13 +97435,13 @@ + (void)readAttributeDcCurrentWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeDcCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeDcCurrentMinWithCompletionHandler:(void (^)(
@@ -97239,13 +97478,13 @@ + (void)readAttributeDcCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMinWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeDcCurrentMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDcCurrentMaxWithCompletionHandler:(void (^)(
@@ -97282,13 +97521,13 @@ + (void)readAttributeDcCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMaxWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributeDcCurrentMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeDcPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -97323,13 +97562,13 @@ + (void)readAttributeDcPowerWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeDcPowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeDcPowerMinWithCompletionHandler:(void (^)(
@@ -97365,13 +97604,13 @@ + (void)readAttributeDcPowerMinWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMinWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeDcPowerMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeDcPowerMaxWithCompletionHandler:(void (^)(
@@ -97407,13 +97646,13 @@ + (void)readAttributeDcPowerMaxWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMaxWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeDcPowerMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeDcVoltageMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97452,13 +97691,13 @@ + (void)readAttributeDcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageMultiplierWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeDcVoltageMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeDcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97496,13 +97735,13 @@ + (void)readAttributeDcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcVoltageDivisorWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeDcVoltageDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeDcCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97541,13 +97780,13 @@ + (void)readAttributeDcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentMultiplierWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeDcCurrentMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeDcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97585,13 +97824,13 @@ + (void)readAttributeDcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcCurrentDivisorWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeDcCurrentDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeDcPowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97630,13 +97869,13 @@ + (void)readAttributeDcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerMultiplierWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeDcPowerMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeDcPowerDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97674,13 +97913,13 @@ + (void)readAttributeDcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeDcPowerDivisorWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeDcPowerDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAcFrequencyWithCompletionHandler:(void (^)(
@@ -97717,13 +97956,13 @@ + (void)readAttributeAcFrequencyWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeAcFrequencyWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeAcFrequencyMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97761,13 +98000,13 @@ + (void)readAttributeAcFrequencyMinWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMinWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeAcFrequencyMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeAcFrequencyMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97805,13 +98044,13 @@ + (void)readAttributeAcFrequencyMaxWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMaxWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeAcFrequencyMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNeutralCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97849,13 +98088,13 @@ + (void)readAttributeNeutralCurrentWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNeutralCurrentWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNeutralCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeTotalActivePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97893,13 +98132,13 @@ + (void)readAttributeTotalActivePowerWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalActivePowerWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeTotalActivePowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTotalReactivePowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97938,13 +98177,13 @@ + (void)readAttributeTotalReactivePowerWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalReactivePowerWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeTotalReactivePowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeTotalApparentPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -97983,13 +98222,13 @@ + (void)readAttributeTotalApparentPowerWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTotalApparentPowerWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeTotalApparentPowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeMeasured1stHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98028,13 +98267,13 @@ + (void)readAttributeMeasured1stHarmonicCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured1stHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeMeasured1stHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeMeasured3rdHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98073,13 +98312,13 @@ + (void)readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured3rdHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeMeasured3rdHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeMeasured5thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98118,13 +98357,13 @@ + (void)readAttributeMeasured5thHarmonicCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured5thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeMeasured5thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeMeasured7thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98163,13 +98402,13 @@ + (void)readAttributeMeasured7thHarmonicCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured7thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeMeasured7thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeMeasured9thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98208,13 +98447,13 @@ + (void)readAttributeMeasured9thHarmonicCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured9thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeMeasured9thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeMeasured11thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98253,13 +98492,13 @@ + (void)readAttributeMeasured11thHarmonicCurrentWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasured11thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeMeasured11thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeMeasuredPhase1stHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98298,13 +98537,14 @@ + (void)readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase1stHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeMeasuredPhase1stHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98343,13 +98583,14 @@ + (void)readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase3rdHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeMeasuredPhase3rdHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeMeasuredPhase5thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98388,13 +98629,14 @@ + (void)readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase5thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeMeasuredPhase5thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeMeasuredPhase7thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98433,13 +98675,14 @@ + (void)readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase7thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeMeasuredPhase7thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeMeasuredPhase9thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98478,13 +98721,14 @@ + (void)readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase9thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeMeasuredPhase9thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeMeasuredPhase11thHarmonicCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98523,13 +98767,14 @@ + (void)readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:(MTRAttr
                                                       completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                             NSError * _Nullable error))completionHandler
 {
-    [self readAttributeMeasuredPhase11thHarmonicCurrentWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeMeasuredPhase11thHarmonicCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                    endpoint:endpoint
+                                                                       queue:queue
+                                                                  completion:^(
+                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                      // Cast is safe because subclass does not add any selectors.
+                                                                      completionHandler(static_cast(value), error);
+                                                                  }];
 }
 
 - (void)readAttributeAcFrequencyMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98568,13 +98813,13 @@ + (void)readAttributeAcFrequencyMultiplierWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyMultiplierWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeAcFrequencyMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeAcFrequencyDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98613,13 +98858,13 @@ + (void)readAttributeAcFrequencyDivisorWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcFrequencyDivisorWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeAcFrequencyDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributePowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98657,13 +98902,13 @@ + (void)readAttributePowerMultiplierWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerMultiplierWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributePowerMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributePowerDivisorWithCompletionHandler:(void (^)(
@@ -98700,13 +98945,13 @@ + (void)readAttributePowerDivisorWithAttributeCache:(MTRAttributeCacheContainer
                                   completionHandler:
                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerDivisorWithAttributeCache:attributeCacheContainer
-                                             endpoint:endpoint
-                                                queue:queue
-                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                               // Cast is safe because subclass does not add any selectors.
-                                               completionHandler(static_cast(value), error);
-                                           }];
+    [self readAttributePowerDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeHarmonicCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98745,13 +98990,13 @@ + (void)readAttributeHarmonicCurrentMultiplierWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeHarmonicCurrentMultiplierWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeHarmonicCurrentMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributePhaseHarmonicCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98790,13 +99035,14 @@ + (void)readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:(MTRAttrib
                                                     completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributePhaseHarmonicCurrentMultiplierWithAttributeCache:attributeCacheContainer
-                                                               endpoint:endpoint
-                                                                  queue:queue
-                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                 // Cast is safe because subclass does not add any selectors.
-                                                                 completionHandler(static_cast(value), error);
-                                                             }];
+    [self
+        readAttributePhaseHarmonicCurrentMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeInstantaneousVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98835,13 +99081,13 @@ + (void)readAttributeInstantaneousVoltageWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousVoltageWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeInstantaneousVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeInstantaneousLineCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98880,13 +99126,13 @@ + (void)readAttributeInstantaneousLineCurrentWithAttributeCache:(MTRAttributeCac
                                               completionHandler:
                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousLineCurrentWithAttributeCache:attributeCacheContainer
-                                                         endpoint:endpoint
-                                                            queue:queue
-                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                           // Cast is safe because subclass does not add any selectors.
-                                                           completionHandler(static_cast(value), error);
-                                                       }];
+    [self readAttributeInstantaneousLineCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                            endpoint:endpoint
+                                                               queue:queue
+                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                              // Cast is safe because subclass does not add any selectors.
+                                                              completionHandler(static_cast(value), error);
+                                                          }];
 }
 
 - (void)readAttributeInstantaneousActiveCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98925,13 +99171,13 @@ + (void)readAttributeInstantaneousActiveCurrentWithAttributeCache:(MTRAttributeC
                                                 completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousActiveCurrentWithAttributeCache:attributeCacheContainer
-                                                           endpoint:endpoint
-                                                              queue:queue
-                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                             // Cast is safe because subclass does not add any selectors.
-                                                             completionHandler(static_cast(value), error);
-                                                         }];
+    [self readAttributeInstantaneousActiveCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                              endpoint:endpoint
+                                                                 queue:queue
+                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                // Cast is safe because subclass does not add any selectors.
+                                                                completionHandler(static_cast(value), error);
+                                                            }];
 }
 
 - (void)readAttributeInstantaneousReactiveCurrentWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -98970,13 +99216,13 @@ + (void)readAttributeInstantaneousReactiveCurrentWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousReactiveCurrentWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeInstantaneousReactiveCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeInstantaneousPowerWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99015,13 +99261,13 @@ + (void)readAttributeInstantaneousPowerWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInstantaneousPowerWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeInstantaneousPowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeRmsVoltageWithCompletionHandler:(void (^)(
@@ -99057,13 +99303,13 @@ + (void)readAttributeRmsVoltageWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeRmsVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsVoltageMinWithCompletionHandler:(void (^)(
@@ -99101,13 +99347,13 @@ + (void)readAttributeRmsVoltageMinWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRmsVoltageMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsVoltageMaxWithCompletionHandler:(void (^)(
@@ -99145,13 +99391,13 @@ + (void)readAttributeRmsVoltageMaxWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRmsVoltageMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsCurrentWithCompletionHandler:(void (^)(
@@ -99187,13 +99433,13 @@ + (void)readAttributeRmsCurrentWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeRmsCurrentWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRmsCurrentMinWithCompletionHandler:(void (^)(
@@ -99231,13 +99477,13 @@ + (void)readAttributeRmsCurrentMinWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRmsCurrentMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsCurrentMaxWithCompletionHandler:(void (^)(
@@ -99275,13 +99521,13 @@ + (void)readAttributeRmsCurrentMaxWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRmsCurrentMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeActivePowerWithCompletionHandler:(void (^)(
@@ -99318,13 +99564,13 @@ + (void)readAttributeActivePowerWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeActivePowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeActivePowerMinWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99362,13 +99608,13 @@ + (void)readAttributeActivePowerMinWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeActivePowerMinWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeActivePowerMaxWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99406,13 +99652,13 @@ + (void)readAttributeActivePowerMaxWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeActivePowerMaxWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeReactivePowerWithCompletionHandler:(void (^)(
@@ -99450,13 +99696,13 @@ + (void)readAttributeReactivePowerWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeReactivePowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeApparentPowerWithCompletionHandler:(void (^)(
@@ -99494,13 +99740,13 @@ + (void)readAttributeApparentPowerWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeApparentPowerWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributePowerFactorWithCompletionHandler:(void (^)(
@@ -99537,13 +99783,13 @@ + (void)readAttributePowerFactorWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributePowerFactorWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99593,14 +99839,14 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeAverageRmsVoltageMeasurementPeriodWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99650,13 +99896,13 @@ + (void)readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeAverageRmsUnderVoltageCounterWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99706,13 +99952,13 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltagePeriodWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeRmsExtremeOverVoltagePeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99762,13 +100008,13 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltagePeriodWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeRmsExtremeUnderVoltagePeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99818,13 +100064,13 @@ + (void)readAttributeRmsVoltageSagPeriodWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsVoltageSagPeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99874,13 +100120,13 @@ + (void)readAttributeRmsVoltageSwellPeriodWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeRmsVoltageSwellPeriodWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeAcVoltageMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99919,13 +100165,13 @@ + (void)readAttributeAcVoltageMultiplierWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageMultiplierWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcVoltageMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAcVoltageDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -99963,13 +100209,13 @@ + (void)readAttributeAcVoltageDivisorWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageDivisorWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeAcVoltageDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAcCurrentMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100008,13 +100254,13 @@ + (void)readAttributeAcCurrentMultiplierWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentMultiplierWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcCurrentMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAcCurrentDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100052,13 +100298,13 @@ + (void)readAttributeAcCurrentDivisorWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentDivisorWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeAcCurrentDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeAcPowerMultiplierWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100097,13 +100343,13 @@ + (void)readAttributeAcPowerMultiplierWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcPowerMultiplierWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeAcPowerMultiplierWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcPowerDivisorWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100141,13 +100387,13 @@ + (void)readAttributeAcPowerDivisorWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcPowerDivisorWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeAcPowerDivisorWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeOverloadAlarmsMaskWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100197,13 +100443,13 @@ + (void)readAttributeOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOverloadAlarmsMaskWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeOverloadAlarmsMaskWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeVoltageOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100241,13 +100487,13 @@ + (void)readAttributeVoltageOverloadWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVoltageOverloadWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeVoltageOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeCurrentOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100285,13 +100531,13 @@ + (void)readAttributeCurrentOverloadWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCurrentOverloadWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeCurrentOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeAcOverloadAlarmsMaskWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100341,13 +100587,13 @@ + (void)readAttributeAcOverloadAlarmsMaskWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcOverloadAlarmsMaskWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeAcOverloadAlarmsMaskWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcVoltageOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100386,13 +100632,13 @@ + (void)readAttributeAcVoltageOverloadWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcVoltageOverloadWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeAcVoltageOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcCurrentOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100431,13 +100677,13 @@ + (void)readAttributeAcCurrentOverloadWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcCurrentOverloadWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeAcCurrentOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAcActivePowerOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100476,13 +100722,13 @@ + (void)readAttributeAcActivePowerOverloadWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcActivePowerOverloadWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeAcActivePowerOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeAcReactivePowerOverloadWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100521,13 +100767,13 @@ + (void)readAttributeAcReactivePowerOverloadWithAttributeCache:(MTRAttributeCach
                                              completionHandler:
                                                  (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcReactivePowerOverloadWithAttributeCache:attributeCacheContainer
-                                                        endpoint:endpoint
-                                                           queue:queue
-                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                          // Cast is safe because subclass does not add any selectors.
-                                                          completionHandler(static_cast(value), error);
-                                                      }];
+    [self readAttributeAcReactivePowerOverloadWithClusterStateCache:attributeCacheContainer.realContainer
+                                                           endpoint:endpoint
+                                                              queue:queue
+                                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                             // Cast is safe because subclass does not add any selectors.
+                                                             completionHandler(static_cast(value), error);
+                                                         }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100566,13 +100812,13 @@ + (void)readAttributeAverageRmsOverVoltageWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsOverVoltageWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeAverageRmsOverVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100611,13 +100857,13 @@ + (void)readAttributeAverageRmsUnderVoltageWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeAverageRmsUnderVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100656,13 +100902,13 @@ + (void)readAttributeRmsExtremeOverVoltageWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeOverVoltageWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeRmsExtremeOverVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltageWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100701,13 +100947,13 @@ + (void)readAttributeRmsExtremeUnderVoltageWithAttributeCache:(MTRAttributeCache
                                             completionHandler:
                                                 (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsExtremeUnderVoltageWithAttributeCache:attributeCacheContainer
-                                                       endpoint:endpoint
-                                                          queue:queue
-                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                         // Cast is safe because subclass does not add any selectors.
-                                                         completionHandler(static_cast(value), error);
-                                                     }];
+    [self readAttributeRmsExtremeUnderVoltageWithClusterStateCache:attributeCacheContainer.realContainer
+                                                          endpoint:endpoint
+                                                             queue:queue
+                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                            // Cast is safe because subclass does not add any selectors.
+                                                            completionHandler(static_cast(value), error);
+                                                        }];
 }
 
 - (void)readAttributeRmsVoltageSagWithCompletionHandler:(void (^)(
@@ -100745,13 +100991,13 @@ + (void)readAttributeRmsVoltageSagWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeRmsVoltageSagWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeRmsVoltageSwellWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100789,13 +101035,13 @@ + (void)readAttributeRmsVoltageSwellWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeRmsVoltageSwellWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeLineCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100834,13 +101080,13 @@ + (void)readAttributeLineCurrentPhaseBWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineCurrentPhaseBWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeLineCurrentPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActiveCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100879,13 +101125,13 @@ + (void)readAttributeActiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCurrentPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeActiveCurrentPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeReactiveCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100924,13 +101170,13 @@ + (void)readAttributeReactiveCurrentPhaseBWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactiveCurrentPhaseBWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeReactiveCurrentPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRmsVoltagePhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -100968,13 +101214,13 @@ + (void)readAttributeRmsVoltagePhaseBWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltagePhaseBWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRmsVoltagePhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsVoltageMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101013,13 +101259,13 @@ + (void)readAttributeRmsVoltageMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsVoltageMinPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsVoltageMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101058,13 +101304,13 @@ + (void)readAttributeRmsVoltageMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsVoltageMaxPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsCurrentPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101102,13 +101348,13 @@ + (void)readAttributeRmsCurrentPhaseBWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentPhaseBWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRmsCurrentPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101147,13 +101393,13 @@ + (void)readAttributeRmsCurrentMinPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsCurrentMinPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsCurrentMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101192,13 +101438,13 @@ + (void)readAttributeRmsCurrentMaxPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsCurrentMaxPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeActivePowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101237,13 +101483,13 @@ + (void)readAttributeActivePowerPhaseBWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerPhaseBWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeActivePowerPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActivePowerMinPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101282,13 +101528,13 @@ + (void)readAttributeActivePowerMinPhaseBWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinPhaseBWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeActivePowerMinPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeActivePowerMaxPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101327,13 +101573,13 @@ + (void)readAttributeActivePowerMaxPhaseBWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxPhaseBWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeActivePowerMaxPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeReactivePowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101372,13 +101618,13 @@ + (void)readAttributeReactivePowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeReactivePowerPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeApparentPowerPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101417,13 +101663,13 @@ + (void)readAttributeApparentPowerPhaseBWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerPhaseBWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeApparentPowerPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributePowerFactorPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101462,13 +101708,13 @@ + (void)readAttributePowerFactorPhaseBWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorPhaseBWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePowerFactorPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101510,15 +101756,16 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101557,14 +101804,14 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeAverageRmsOverVoltageCounterPhaseBWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeAverageRmsOverVoltageCounterPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101603,14 +101850,15 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:(MTRA
                                                          completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterPhaseBWithAttributeCache:attributeCacheContainer
-                                                                    endpoint:endpoint
-                                                                       queue:queue
-                                                                  completion:^(
-                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                      // Cast is safe because subclass does not add any selectors.
-                                                                      completionHandler(static_cast(value), error);
-                                                                  }];
+    [self readAttributeAverageRmsUnderVoltageCounterPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                       endpoint:endpoint
+                                                                          queue:queue
+                                                                     completion:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         completionHandler(static_cast(value), error);
+                                                                     }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101649,14 +101897,14 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeRmsExtremeOverVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self readAttributeRmsExtremeOverVoltagePeriodPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                     endpoint:endpoint
+                                                                        queue:queue
+                                                                   completion:^(
+                                                                       NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                       // Cast is safe because subclass does not add any selectors.
+                                                                       completionHandler(static_cast(value), error);
+                                                                   }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101695,14 +101943,14 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101741,13 +101989,13 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeRmsVoltageSagPeriodPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseBWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101786,13 +102034,13 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodPhaseBWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeRmsVoltageSwellPeriodPhaseBWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeLineCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101831,13 +102079,13 @@ + (void)readAttributeLineCurrentPhaseCWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLineCurrentPhaseCWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeLineCurrentPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActiveCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101876,13 +102124,13 @@ + (void)readAttributeActiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActiveCurrentPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeActiveCurrentPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeReactiveCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101921,13 +102169,13 @@ + (void)readAttributeReactiveCurrentPhaseCWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactiveCurrentPhaseCWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeReactiveCurrentPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRmsVoltagePhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -101965,13 +102213,13 @@ + (void)readAttributeRmsVoltagePhaseCWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltagePhaseCWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRmsVoltagePhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsVoltageMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102010,13 +102258,13 @@ + (void)readAttributeRmsVoltageMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMinPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsVoltageMinPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsVoltageMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102055,13 +102303,13 @@ + (void)readAttributeRmsVoltageMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageMaxPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsVoltageMaxPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsCurrentPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102099,13 +102347,13 @@ + (void)readAttributeRmsCurrentPhaseCWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentPhaseCWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeRmsCurrentPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeRmsCurrentMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102144,13 +102392,13 @@ + (void)readAttributeRmsCurrentMinPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMinPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsCurrentMinPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeRmsCurrentMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102189,13 +102437,13 @@ + (void)readAttributeRmsCurrentMaxPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsCurrentMaxPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeRmsCurrentMaxPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeActivePowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102234,13 +102482,13 @@ + (void)readAttributeActivePowerPhaseCWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerPhaseCWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeActivePowerPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeActivePowerMinPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102279,13 +102527,13 @@ + (void)readAttributeActivePowerMinPhaseCWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMinPhaseCWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeActivePowerMinPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeActivePowerMaxPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102324,13 +102572,13 @@ + (void)readAttributeActivePowerMaxPhaseCWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeActivePowerMaxPhaseCWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeActivePowerMaxPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeReactivePowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102369,13 +102617,13 @@ + (void)readAttributeReactivePowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeReactivePowerPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeReactivePowerPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeApparentPowerPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102414,13 +102662,13 @@ + (void)readAttributeApparentPowerPhaseCWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeApparentPowerPhaseCWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeApparentPowerPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributePowerFactorPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102459,13 +102707,13 @@ + (void)readAttributePowerFactorPhaseCWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributePowerFactorPhaseCWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributePowerFactorPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102507,15 +102755,16 @@ + (void)readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:
                                                               completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                     NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                                         endpoint:endpoint
-                                                                            queue:queue
-                                                                       completion:^(
-                                                                           NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                           // Cast is safe because subclass does not add any
-                                                                           // selectors.
-                                                                           completionHandler(static_cast(value), error);
-                                                                       }];
+    [self readAttributeAverageRmsVoltageMeasurementPeriodPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                            endpoint:endpoint
+                                                                               queue:queue
+                                                                          completion:^(NSNumber * _Nullable value,
+                                                                              NSError * _Nullable error) {
+                                                                              // Cast is safe because subclass does not add any
+                                                                              // selectors.
+                                                                              completionHandler(
+                                                                                  static_cast(value), error);
+                                                                          }];
 }
 
 - (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102554,14 +102803,14 @@ + (void)readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeAverageRmsOverVoltageCounterPhaseCWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeAverageRmsOverVoltageCounterPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102600,14 +102849,15 @@ + (void)readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:(MTRA
                                                          completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                                NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAverageRmsUnderVoltageCounterPhaseCWithAttributeCache:attributeCacheContainer
-                                                                    endpoint:endpoint
-                                                                       queue:queue
-                                                                  completion:^(
-                                                                      NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                      // Cast is safe because subclass does not add any selectors.
-                                                                      completionHandler(static_cast(value), error);
-                                                                  }];
+    [self readAttributeAverageRmsUnderVoltageCounterPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                       endpoint:endpoint
+                                                                          queue:queue
+                                                                     completion:^(
+                                                                         NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                         // Cast is safe because subclass does not add any
+                                                                         // selectors.
+                                                                         completionHandler(static_cast(value), error);
+                                                                     }];
 }
 
 - (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102646,14 +102896,14 @@ + (void)readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:(MTRAtt
                                                        completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                              NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeRmsExtremeOverVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self readAttributeRmsExtremeOverVoltagePeriodPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                     endpoint:endpoint
+                                                                        queue:queue
+                                                                   completion:^(
+                                                                       NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                       // Cast is safe because subclass does not add any selectors.
+                                                                       completionHandler(static_cast(value), error);
+                                                                   }];
 }
 
 - (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102692,14 +102942,14 @@ + (void)readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:(MTRAt
                                                         completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                               NSError * _Nullable error))completionHandler
 {
-    [self
-        readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                                 endpoint:endpoint
-                                                                    queue:queue
-                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                   // Cast is safe because subclass does not add any selectors.
-                                                                   completionHandler(static_cast(value), error);
-                                                               }];
+    [self readAttributeRmsExtremeUnderVoltagePeriodPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                      endpoint:endpoint
+                                                                         queue:queue
+                                                                    completion:^(
+                                                                        NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                        // Cast is safe because subclass does not add any selectors.
+                                                                        completionHandler(static_cast(value), error);
+                                                                    }];
 }
 
 - (void)readAttributeRmsVoltageSagPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102738,13 +102988,13 @@ + (void)readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:(MTRAttributeCa
                                                completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                      NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSagPeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                          endpoint:endpoint
-                                                             queue:queue
-                                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                            // Cast is safe because subclass does not add any selectors.
-                                                            completionHandler(static_cast(value), error);
-                                                        }];
+    [self readAttributeRmsVoltageSagPeriodPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                             endpoint:endpoint
+                                                                queue:queue
+                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                               // Cast is safe because subclass does not add any selectors.
+                                                               completionHandler(static_cast(value), error);
+                                                           }];
 }
 
 - (void)readAttributeRmsVoltageSwellPeriodPhaseCWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -102783,13 +103033,13 @@ + (void)readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:(MTRAttribute
                                                  completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                        NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRmsVoltageSwellPeriodPhaseCWithAttributeCache:attributeCacheContainer
-                                                            endpoint:endpoint
-                                                               queue:queue
-                                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                              // Cast is safe because subclass does not add any selectors.
-                                                              completionHandler(static_cast(value), error);
-                                                          }];
+    [self readAttributeRmsVoltageSwellPeriodPhaseCWithClusterStateCache:attributeCacheContainer.realContainer
+                                                               endpoint:endpoint
+                                                                  queue:queue
+                                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                 // Cast is safe because subclass does not add any selectors.
+                                                                 completionHandler(static_cast(value), error);
+                                                             }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -102828,13 +103078,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -102873,13 +103123,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -102916,13 +103166,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -102958,13 +103208,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -103002,13 +103252,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
@@ -104438,21 +104688,21 @@ - (void)subscribeAttributeBooleanWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Boolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104517,21 +104767,21 @@ - (void)subscribeAttributeBitmap8WithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingBitmap8AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Bitmap8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104596,21 +104846,21 @@ - (void)subscribeAttributeBitmap16WithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingBitmap16AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Bitmap16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104675,21 +104925,21 @@ - (void)subscribeAttributeBitmap32WithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap32WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingBitmap32AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Bitmap32::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104754,21 +105004,21 @@ - (void)subscribeAttributeBitmap64WithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeBitmap64WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingBitmap64AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Bitmap64::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104833,21 +105083,21 @@ - (void)subscribeAttributeInt8uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104912,21 +105162,21 @@ - (void)subscribeAttributeInt16uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -104991,21 +105241,21 @@ - (void)subscribeAttributeInt24uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt24uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int24u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105070,21 +105320,21 @@ - (void)subscribeAttributeInt32uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt32uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int32u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105149,21 +105399,21 @@ - (void)subscribeAttributeInt40uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt40uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int40u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105228,21 +105478,21 @@ - (void)subscribeAttributeInt48uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt48uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int48u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105307,21 +105557,21 @@ - (void)subscribeAttributeInt56uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt56uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int56u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105386,21 +105636,21 @@ - (void)subscribeAttributeInt64uWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt64uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int64u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105465,21 +105715,21 @@ - (void)subscribeAttributeInt8sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105544,21 +105794,21 @@ - (void)subscribeAttributeInt16sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105623,21 +105873,21 @@ - (void)subscribeAttributeInt24sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt24sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int24s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105702,21 +105952,21 @@ - (void)subscribeAttributeInt32sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt32sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int32s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105781,21 +106031,21 @@ - (void)subscribeAttributeInt40sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt40sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int40s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105860,21 +106110,21 @@ - (void)subscribeAttributeInt48sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt48sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int48s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -105939,21 +106189,21 @@ - (void)subscribeAttributeInt56sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt56sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int56s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106018,21 +106268,21 @@ - (void)subscribeAttributeInt64sWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeInt64sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Int64s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106097,21 +106347,21 @@ - (void)subscribeAttributeEnum8WithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                    endpoint:(NSNumber *)endpoint
-                                       queue:(dispatch_queue_t)queue
-                                  completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnum8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                       endpoint:(NSNumber *)endpoint
+                                          queue:(dispatch_queue_t)queue
+                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Enum8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106176,21 +106426,21 @@ - (void)subscribeAttributeEnum16WithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnum16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Enum16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106255,21 +106505,21 @@ - (void)subscribeAttributeFloatSingleWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFloatSingleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRFloatAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(FloatAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::FloatSingle::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106334,21 +106584,21 @@ - (void)subscribeAttributeFloatDoubleWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFloatDoubleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRDoubleAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(DoubleAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::FloatDouble::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106413,21 +106663,21 @@ - (void)subscribeAttributeOctetStringWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::OctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106513,21 +106763,21 @@ - (void)subscribeAttributeListInt8uWithParams:(MTRSubscribeParams * _Nonnull)par
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                        endpoint:(NSNumber *)endpoint
-                                           queue:(dispatch_queue_t)queue
-                                      completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                           endpoint:(NSNumber *)endpoint
+                                              queue:(dispatch_queue_t)queue
+                                         completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListInt8uListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingListInt8uListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::ListInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106613,22 +106863,22 @@ - (void)subscribeAttributeListOctetStringWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingListOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::ListOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -106716,23 +106966,23 @@ - (void)subscribeAttributeListStructOctetStringWithParams:(MTRSubscribeParams *
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListStructOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListStructOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingListStructOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::ListStructOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -106797,21 +107047,21 @@ - (void)subscribeAttributeLongOctetStringWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLongOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTROctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(OctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::LongOctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106876,21 +107126,21 @@ - (void)subscribeAttributeCharStringWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::CharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -106955,21 +107205,21 @@ - (void)subscribeAttributeLongCharStringWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeLongCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::LongCharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107034,21 +107284,21 @@ - (void)subscribeAttributeEpochUsWithParams:(MTRSubscribeParams * _Nonnull)param
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                      endpoint:(NSNumber *)endpoint
-                                         queue:(dispatch_queue_t)queue
-                                    completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEpochUsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                         endpoint:(NSNumber *)endpoint
+                                            queue:(dispatch_queue_t)queue
+                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::EpochUs::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107113,21 +107363,21 @@ - (void)subscribeAttributeEpochSWithParams:(MTRSubscribeParams * _Nonnull)params
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                     endpoint:(NSNumber *)endpoint
-                                        queue:(dispatch_queue_t)queue
-                                   completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEpochSWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                        endpoint:(NSNumber *)endpoint
+                                           queue:(dispatch_queue_t)queue
+                                      completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::EpochS::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107192,21 +107442,21 @@ - (void)subscribeAttributeVendorIdWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeVendorIdWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRVendorIdAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::VendorId::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107468,23 +107718,24 @@ - (void)subscribeAttributeListNullablesAndOptionalsStructWithParams:(MTRSubscrib
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                              endpoint:(NSNumber *)endpoint
-                                                                 queue:(dispatch_queue_t)queue
-                                                            completion:(void (^)(NSArray * _Nullable value,
-                                                                           NSError * _Nullable error))completion
++ (void)readAttributeListNullablesAndOptionalsStructWithClusterStateCache:
+            (MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                                 endpoint:(NSNumber *)endpoint
+                                                                    queue:(dispatch_queue_t)queue
+                                                               completion:(void (^)(NSArray * _Nullable value,
+                                                                              NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListNullablesAndOptionalsStructListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingListNullablesAndOptionalsStructListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::ListNullablesAndOptionalsStruct::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -107549,21 +107800,21 @@ - (void)subscribeAttributeEnumAttrWithParams:(MTRSubscribeParams * _Nonnull)para
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                       endpoint:(NSNumber *)endpoint
-                                          queue:(dispatch_queue_t)queue
-                                     completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeEnumAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                          endpoint:(NSNumber *)endpoint
+                                             queue:(dispatch_queue_t)queue
+                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::EnumAttr::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107639,22 +107890,22 @@ - (void)subscribeAttributeStructAttrWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
-                                                      NSError * _Nullable error))completion
++ (void)readAttributeStructAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                                         NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingStructAttrStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingStructAttrStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::StructAttr::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107720,22 +107971,22 @@ - (void)subscribeAttributeRangeRestrictedInt8uWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRangeRestrictedInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107801,22 +108052,22 @@ - (void)subscribeAttributeRangeRestrictedInt8sWithParams:(MTRSubscribeParams * _
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRangeRestrictedInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107882,22 +108133,22 @@ - (void)subscribeAttributeRangeRestrictedInt16uWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRangeRestrictedInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -107963,22 +108214,22 @@ - (void)subscribeAttributeRangeRestrictedInt16sWithParams:(MTRSubscribeParams *
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                    endpoint:(NSNumber *)endpoint
-                                                       queue:(dispatch_queue_t)queue
-                                                  completion:
-                                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeRangeRestrictedInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                       endpoint:(NSNumber *)endpoint
+                                                          queue:(dispatch_queue_t)queue
+                                                     completion:
+                                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::RangeRestrictedInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108065,23 +108316,23 @@ - (void)subscribeAttributeListLongOctetStringWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListLongOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListLongOctetStringListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingListLongOctetStringListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::ListLongOctetString::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -108224,22 +108475,23 @@ - (void)subscribeAttributeListFabricScopedWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeListFabricScopedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingListFabricScopedListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingListFabricScopedListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::ListFabricScoped::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -108304,21 +108556,22 @@ - (void)subscribeAttributeTimedWriteBooleanWithParams:(MTRSubscribeParams * _Non
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                endpoint:(NSNumber *)endpoint
-                                                   queue:(dispatch_queue_t)queue
-                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeTimedWriteBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                   endpoint:(NSNumber *)endpoint
+                                                      queue:(dispatch_queue_t)queue
+                                                 completion:
+                                                     (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::TimedWriteBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108384,22 +108637,22 @@ - (void)subscribeAttributeGeneralErrorBooleanWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneralErrorBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::GeneralErrorBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108465,22 +108718,22 @@ - (void)subscribeAttributeClusterErrorBooleanWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterErrorBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::ClusterErrorBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108545,21 +108798,21 @@ - (void)subscribeAttributeUnsupportedWithParams:(MTRSubscribeParams * _Nonnull)p
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                          endpoint:(NSNumber *)endpoint
-                                             queue:(dispatch_queue_t)queue
-                                        completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeUnsupportedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                             endpoint:(NSNumber *)endpoint
+                                                queue:(dispatch_queue_t)queue
+                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::Unsupported::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108629,21 +108882,22 @@ - (void)subscribeAttributeNullableBooleanWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableBooleanWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableBooleanAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableBooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableBoolean::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108713,21 +108967,22 @@ - (void)subscribeAttributeNullableBitmap8WithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableBitmap8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingNullableBitmap8AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap8AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableBitmap8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108797,21 +109052,22 @@ - (void)subscribeAttributeNullableBitmap16WithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableBitmap16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingNullableBitmap16AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap16AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableBitmap16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108881,21 +109137,22 @@ - (void)subscribeAttributeNullableBitmap32WithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableBitmap32WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingNullableBitmap32AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap32AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableBitmap32::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -108965,21 +109222,22 @@ - (void)subscribeAttributeNullableBitmap64WithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableBitmap64WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingNullableBitmap64AttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingNullableBitmap64AttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableBitmap64::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109049,21 +109307,21 @@ - (void)subscribeAttributeNullableInt8uWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109133,21 +109391,21 @@ - (void)subscribeAttributeNullableInt16uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109217,21 +109475,21 @@ - (void)subscribeAttributeNullableInt24uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt24uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt24u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109301,21 +109559,21 @@ - (void)subscribeAttributeNullableInt32uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt32uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt32u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109385,21 +109643,21 @@ - (void)subscribeAttributeNullableInt40uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt40uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt40u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109469,21 +109727,21 @@ - (void)subscribeAttributeNullableInt48uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt48uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt48u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109553,21 +109811,21 @@ - (void)subscribeAttributeNullableInt56uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt56uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt56u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109637,21 +109895,21 @@ - (void)subscribeAttributeNullableInt64uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt64uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt64u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109721,21 +109979,21 @@ - (void)subscribeAttributeNullableInt8sWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109805,21 +110063,21 @@ - (void)subscribeAttributeNullableInt16sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109889,21 +110147,21 @@ - (void)subscribeAttributeNullableInt24sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt24sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt24s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -109973,21 +110231,21 @@ - (void)subscribeAttributeNullableInt32sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt32sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt32sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt32sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt32s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110057,21 +110315,21 @@ - (void)subscribeAttributeNullableInt40sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt40sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt40s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110141,21 +110399,21 @@ - (void)subscribeAttributeNullableInt48sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt48sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt48s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110225,21 +110483,21 @@ - (void)subscribeAttributeNullableInt56sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt56sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt56s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110309,21 +110567,21 @@ - (void)subscribeAttributeNullableInt64sWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableInt64sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt64sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt64sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableInt64s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110393,21 +110651,21 @@ - (void)subscribeAttributeNullableEnum8WithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableEnum8WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableEnum8::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110477,21 +110735,21 @@ - (void)subscribeAttributeNullableEnum16WithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableEnum16WithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableEnum16::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110562,22 +110820,22 @@ - (void)subscribeAttributeNullableFloatSingleWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableFloatSingleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableFloatAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableFloatAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableFloatSingle::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110648,22 +110906,22 @@ - (void)subscribeAttributeNullableFloatDoubleWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableFloatDoubleWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableDoubleAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableDoubleAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableFloatDouble::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110733,21 +110991,22 @@ - (void)subscribeAttributeNullableOctetStringWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableOctetStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSData * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableOctetStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableOctetStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableOctetString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110818,22 +111077,22 @@ - (void)subscribeAttributeNullableCharStringWithParams:(MTRSubscribeParams * _No
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                 endpoint:(NSNumber *)endpoint
-                                                    queue:(dispatch_queue_t)queue
-                                               completion:
-                                                   (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableCharStringWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                    endpoint:(NSNumber *)endpoint
+                                                       queue:(dispatch_queue_t)queue
+                                                  completion:
+                                                      (void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableCharStringAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableCharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableCharString::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -110903,22 +111162,23 @@ - (void)subscribeAttributeNullableEnumAttrWithParams:(MTRSubscribeParams * _Nonn
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                               endpoint:(NSNumber *)endpoint
-                                                  queue:(dispatch_queue_t)queue
-                                             completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeNullableEnumAttrWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                  endpoint:(NSNumber *)endpoint
+                                                     queue:(dispatch_queue_t)queue
+                                                completion:
+                                                    (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableUnitTestingClusterSimpleEnumAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(NullableUnitTestingClusterSimpleEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::NullableEnumAttr::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -111001,23 +111261,23 @@ - (void)subscribeAttributeNullableStructWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
-                                                          NSError * _Nullable error))completion
++ (void)readAttributeNullableStructWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(MTRUnitTestingClusterSimpleStruct * _Nullable value,
+                                                             NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingNullableStructStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingNullableStructStructAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::NullableStruct::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -111090,22 +111350,22 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8uWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeNullableRangeRestrictedInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111178,22 +111438,22 @@ - (void)subscribeAttributeNullableRangeRestrictedInt8sWithParams:(MTRSubscribePa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                           endpoint:(NSNumber *)endpoint
-                                                              queue:(dispatch_queue_t)queue
-                                                         completion:(void (^)(NSNumber * _Nullable value,
-                                                                        NSError * _Nullable error))completion
++ (void)readAttributeNullableRangeRestrictedInt8sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                              endpoint:(NSNumber *)endpoint
+                                                                 queue:(dispatch_queue_t)queue
+                                                            completion:(void (^)(NSNumber * _Nullable value,
+                                                                           NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt8sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt8sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt8s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111266,22 +111526,22 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16uWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeNullableRangeRestrictedInt16uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111354,22 +111614,22 @@ - (void)subscribeAttributeNullableRangeRestrictedInt16sWithParams:(MTRSubscribeP
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                            endpoint:(NSNumber *)endpoint
-                                                               queue:(dispatch_queue_t)queue
-                                                          completion:(void (^)(NSNumber * _Nullable value,
-                                                                         NSError * _Nullable error))completion
++ (void)readAttributeNullableRangeRestrictedInt16sWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                               endpoint:(NSNumber *)endpoint
+                                                                  queue:(dispatch_queue_t)queue
+                                                             completion:(void (^)(NSNumber * _Nullable value,
+                                                                            NSError * _Nullable error))completion
 {
     auto * bridge = new MTRNullableInt16sAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(NullableInt16sAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::NullableRangeRestrictedInt16s::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111434,21 +111694,21 @@ - (void)subscribeAttributeWriteOnlyInt8uWithParams:(MTRSubscribeParams * _Nonnul
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                             endpoint:(NSNumber *)endpoint
-                                                queue:(dispatch_queue_t)queue
-                                           completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeWriteOnlyInt8uWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                endpoint:(NSNumber *)endpoint
+                                                   queue:(dispatch_queue_t)queue
+                                              completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt8uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int8uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::WriteOnlyInt8u::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111477,23 +111737,23 @@ - (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                   endpoint:(NSNumber *)endpoint
-                                                      queue:(dispatch_queue_t)queue
-                                                 completion:
-                                                     (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                      endpoint:(NSNumber *)endpoint
+                                                         queue:(dispatch_queue_t)queue
+                                                    completion:
+                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -111522,23 +111782,23 @@ - (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _N
         TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                                  endpoint:(NSNumber *)endpoint
-                                                     queue:(dispatch_queue_t)queue
-                                                completion:
-                                                    (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                     endpoint:(NSNumber *)endpoint
+                                                        queue:(dispatch_queue_t)queue
+                                                   completion:
+                                                       (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(
         ^(UnitTestingAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-            if (attributeCacheContainer.cppAttributeCache) {
+            if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
                 using TypeInfo = UnitTesting::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
                 TypeInfo::DecodableType value;
-                CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+                CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
                 if (err == CHIP_NO_ERROR) {
                     successCb(bridge, value);
                 }
@@ -111566,21 +111826,21 @@ - (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                            endpoint:(NSNumber *)endpoint
-                                               queue:(dispatch_queue_t)queue
-                                          completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                               endpoint:(NSNumber *)endpoint
+                                                  queue:(dispatch_queue_t)queue
+                                             completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRUnitTestingAttributeListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(UnitTestingAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::AttributeList::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111608,21 +111868,21 @@ - (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)pa
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                         endpoint:(NSNumber *)endpoint
-                                            queue:(dispatch_queue_t)queue
-                                       completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                            endpoint:(NSNumber *)endpoint
+                                               queue:(dispatch_queue_t)queue
+                                          completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::FeatureMap::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111650,21 +111910,22 @@ - (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnu
         TypeInfo::GetAttributeId());
 }
 
-+ (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContainer *)attributeCacheContainer
-                                              endpoint:(NSNumber *)endpoint
-                                                 queue:(dispatch_queue_t)queue
-                                            completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+                                                 endpoint:(NSNumber *)endpoint
+                                                    queue:(dispatch_queue_t)queue
+                                               completion:
+                                                   (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
-        if (attributeCacheContainer.cppAttributeCache) {
+        if (clusterStateCacheContainer.cppClusterStateCache) {
             chip::app::ConcreteAttributePath path;
             using TypeInfo = UnitTesting::Attributes::ClusterRevision::TypeInfo;
             path.mEndpointId = static_cast([endpoint unsignedShortValue]);
             path.mClusterId = TypeInfo::GetClusterId();
             path.mAttributeId = TypeInfo::GetAttributeId();
             TypeInfo::DecodableType value;
-            CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value);
+            CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
             if (err == CHIP_NO_ERROR) {
                 successCb(bridge, value);
             }
@@ -111978,13 +112239,13 @@ + (void)readAttributeBooleanWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBooleanWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeBooleanWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeBitmap8WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112029,13 +112290,13 @@ + (void)readAttributeBitmap8WithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap8WithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeBitmap8WithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeBitmap16WithCompletionHandler:(void (^)(
@@ -112081,13 +112342,13 @@ + (void)readAttributeBitmap16WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap16WithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeBitmap16WithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeBitmap32WithCompletionHandler:(void (^)(
@@ -112133,13 +112394,13 @@ + (void)readAttributeBitmap32WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap32WithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeBitmap32WithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeBitmap64WithCompletionHandler:(void (^)(
@@ -112185,13 +112446,13 @@ + (void)readAttributeBitmap64WithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeBitmap64WithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeBitmap64WithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112236,13 +112497,13 @@ + (void)readAttributeInt8uWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8uWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112287,13 +112548,13 @@ + (void)readAttributeInt16uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt16uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt24uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112338,13 +112599,13 @@ + (void)readAttributeInt24uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt24uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt32uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112389,13 +112650,13 @@ + (void)readAttributeInt32uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt32uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt40uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112440,13 +112701,13 @@ + (void)readAttributeInt40uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt40uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt48uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112491,13 +112752,13 @@ + (void)readAttributeInt48uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt48uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt56uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112542,13 +112803,13 @@ + (void)readAttributeInt56uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt56uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt64uWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112593,13 +112854,13 @@ + (void)readAttributeInt64uWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64uWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt64uWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112644,13 +112905,13 @@ + (void)readAttributeInt8sWithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt8sWithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeInt8sWithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112695,13 +112956,13 @@ + (void)readAttributeInt16sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt16sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt16sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt24sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112746,13 +113007,13 @@ + (void)readAttributeInt24sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt24sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt24sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt32sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112797,13 +113058,13 @@ + (void)readAttributeInt32sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt32sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt32sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt40sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112848,13 +113109,13 @@ + (void)readAttributeInt40sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt40sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt40sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt48sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112899,13 +113160,13 @@ + (void)readAttributeInt48sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt48sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt48sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt56sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -112950,13 +113211,13 @@ + (void)readAttributeInt56sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt56sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt56sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeInt64sWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -113001,13 +113262,13 @@ + (void)readAttributeInt64sWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeInt64sWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeInt64sWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeEnum8WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -113052,13 +113313,13 @@ + (void)readAttributeEnum8WithAttributeCache:(MTRAttributeCacheContainer *)attri
                                        queue:(dispatch_queue_t)queue
                            completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum8WithAttributeCache:attributeCacheContainer
-                                      endpoint:endpoint
-                                         queue:queue
-                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                        // Cast is safe because subclass does not add any selectors.
-                                        completionHandler(static_cast(value), error);
-                                    }];
+    [self readAttributeEnum8WithClusterStateCache:attributeCacheContainer.realContainer
+                                         endpoint:endpoint
+                                            queue:queue
+                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                           // Cast is safe because subclass does not add any selectors.
+                                           completionHandler(static_cast(value), error);
+                                       }];
 }
 
 - (void)readAttributeEnum16WithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -113103,13 +113364,13 @@ + (void)readAttributeEnum16WithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnum16WithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeEnum16WithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeFloatSingleWithCompletionHandler:(void (^)(
@@ -113156,13 +113417,13 @@ + (void)readAttributeFloatSingleWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFloatSingleWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeFloatSingleWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeFloatDoubleWithCompletionHandler:(void (^)(
@@ -113209,13 +113470,13 @@ + (void)readAttributeFloatDoubleWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFloatDoubleWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeFloatDoubleWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeOctetStringWithCompletionHandler:(void (^)(
@@ -113261,13 +113522,13 @@ + (void)readAttributeOctetStringWithAttributeCache:(MTRAttributeCacheContainer *
                                              queue:(dispatch_queue_t)queue
                                  completionHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeOctetStringWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeListInt8uWithCompletionHandler:(void (^)(
@@ -113313,13 +113574,13 @@ + (void)readAttributeListInt8uWithAttributeCache:(MTRAttributeCacheContainer *)a
                                            queue:(dispatch_queue_t)queue
                                completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListInt8uWithAttributeCache:attributeCacheContainer
-                                          endpoint:endpoint
-                                             queue:queue
-                                        completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                            // Cast is safe because subclass does not add any selectors.
-                                            completionHandler(static_cast(value), error);
-                                        }];
+    [self readAttributeListInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                             endpoint:endpoint
+                                                queue:queue
+                                           completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                               // Cast is safe because subclass does not add any selectors.
+                                               completionHandler(static_cast(value), error);
+                                           }];
 }
 
 - (void)readAttributeListOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -113367,13 +113628,13 @@ + (void)readAttributeListOctetStringWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListOctetStringWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeListOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeListStructOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -113423,13 +113684,13 @@ + (void)readAttributeListStructOctetStringWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListStructOctetStringWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeListStructOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeLongOctetStringWithCompletionHandler:(void (^)(
@@ -113477,13 +113738,13 @@ + (void)readAttributeLongOctetStringWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLongOctetStringWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeLongOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeCharStringWithCompletionHandler:(void (^)(
@@ -113529,13 +113790,13 @@ + (void)readAttributeCharStringWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeCharStringWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeCharStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeLongCharStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -113583,13 +113844,13 @@ + (void)readAttributeLongCharStringWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeLongCharStringWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeLongCharStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeEpochUsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -113634,13 +113895,13 @@ + (void)readAttributeEpochUsWithAttributeCache:(MTRAttributeCacheContainer *)att
                                          queue:(dispatch_queue_t)queue
                              completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEpochUsWithAttributeCache:attributeCacheContainer
-                                        endpoint:endpoint
-                                           queue:queue
-                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                          // Cast is safe because subclass does not add any selectors.
-                                          completionHandler(static_cast(value), error);
-                                      }];
+    [self readAttributeEpochUsWithClusterStateCache:attributeCacheContainer.realContainer
+                                           endpoint:endpoint
+                                              queue:queue
+                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                             // Cast is safe because subclass does not add any selectors.
+                                             completionHandler(static_cast(value), error);
+                                         }];
 }
 
 - (void)readAttributeEpochSWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
@@ -113685,13 +113946,13 @@ + (void)readAttributeEpochSWithAttributeCache:(MTRAttributeCacheContainer *)attr
                                         queue:(dispatch_queue_t)queue
                             completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEpochSWithAttributeCache:attributeCacheContainer
-                                       endpoint:endpoint
-                                          queue:queue
-                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                         // Cast is safe because subclass does not add any selectors.
-                                         completionHandler(static_cast(value), error);
-                                     }];
+    [self readAttributeEpochSWithClusterStateCache:attributeCacheContainer.realContainer
+                                          endpoint:endpoint
+                                             queue:queue
+                                        completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                            // Cast is safe because subclass does not add any selectors.
+                                            completionHandler(static_cast(value), error);
+                                        }];
 }
 
 - (void)readAttributeVendorIdWithCompletionHandler:(void (^)(
@@ -113737,13 +113998,13 @@ + (void)readAttributeVendorIdWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeVendorIdWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeVendorIdWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeListNullablesAndOptionalsStructWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -113793,13 +114054,14 @@ + (void)readAttributeListNullablesAndOptionalsStructWithAttributeCache:(MTRAttri
                                                      completionHandler:(void (^)(NSArray * _Nullable value,
                                                                            NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListNullablesAndOptionalsStructWithAttributeCache:attributeCacheContainer
-                                                                endpoint:endpoint
-                                                                   queue:queue
-                                                              completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                                  // Cast is safe because subclass does not add any selectors.
-                                                                  completionHandler(static_cast(value), error);
-                                                              }];
+    [self
+        readAttributeListNullablesAndOptionalsStructWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeEnumAttrWithCompletionHandler:(void (^)(
@@ -113845,13 +114107,13 @@ + (void)readAttributeEnumAttrWithAttributeCache:(MTRAttributeCacheContainer *)at
                                           queue:(dispatch_queue_t)queue
                               completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeEnumAttrWithAttributeCache:attributeCacheContainer
-                                         endpoint:endpoint
-                                            queue:queue
-                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                           // Cast is safe because subclass does not add any selectors.
-                                           completionHandler(static_cast(value), error);
-                                       }];
+    [self readAttributeEnumAttrWithClusterStateCache:attributeCacheContainer.realContainer
+                                            endpoint:endpoint
+                                               queue:queue
+                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                              // Cast is safe because subclass does not add any selectors.
+                                              completionHandler(static_cast(value), error);
+                                          }];
 }
 
 - (void)readAttributeStructAttrWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
@@ -113900,14 +114162,14 @@ + (void)readAttributeStructAttrWithAttributeCache:(MTRAttributeCacheContainer *)
                                 completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                       NSError * _Nullable error))completionHandler
 {
-    [self readAttributeStructAttrWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(
-                                             MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeStructAttrWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(
+                                                MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeRangeRestrictedInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -113957,13 +114219,13 @@ + (void)readAttributeRangeRestrictedInt8uWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt8uWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeRangeRestrictedInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeRangeRestrictedInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114013,13 +114275,13 @@ + (void)readAttributeRangeRestrictedInt8sWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt8sWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeRangeRestrictedInt8sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeRangeRestrictedInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114069,13 +114331,13 @@ + (void)readAttributeRangeRestrictedInt16uWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt16uWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeRangeRestrictedInt16uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeRangeRestrictedInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114125,13 +114387,13 @@ + (void)readAttributeRangeRestrictedInt16sWithAttributeCache:(MTRAttributeCacheC
                                            completionHandler:
                                                (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeRangeRestrictedInt16sWithAttributeCache:attributeCacheContainer
-                                                      endpoint:endpoint
-                                                         queue:queue
-                                                    completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        // Cast is safe because subclass does not add any selectors.
-                                                        completionHandler(static_cast(value), error);
-                                                    }];
+    [self readAttributeRangeRestrictedInt16sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                         endpoint:endpoint
+                                                            queue:queue
+                                                       completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                           // Cast is safe because subclass does not add any selectors.
+                                                           completionHandler(static_cast(value), error);
+                                                       }];
 }
 
 - (void)readAttributeListLongOctetStringWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -114181,13 +114443,13 @@ + (void)readAttributeListLongOctetStringWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListLongOctetStringWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeListLongOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeListFabricScopedWithParams:(MTRReadParams * _Nullable)params
@@ -114236,13 +114498,13 @@ + (void)readAttributeListFabricScopedWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeListFabricScopedWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeListFabricScopedWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeTimedWriteBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114291,13 +114553,13 @@ + (void)readAttributeTimedWriteBooleanWithAttributeCache:(MTRAttributeCacheConta
                                        completionHandler:
                                            (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeTimedWriteBooleanWithAttributeCache:attributeCacheContainer
-                                                  endpoint:endpoint
-                                                     queue:queue
-                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                    // Cast is safe because subclass does not add any selectors.
-                                                    completionHandler(static_cast(value), error);
-                                                }];
+    [self readAttributeTimedWriteBooleanWithClusterStateCache:attributeCacheContainer.realContainer
+                                                     endpoint:endpoint
+                                                        queue:queue
+                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                       // Cast is safe because subclass does not add any selectors.
+                                                       completionHandler(static_cast(value), error);
+                                                   }];
 }
 
 - (void)readAttributeGeneralErrorBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114347,13 +114609,13 @@ + (void)readAttributeGeneralErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneralErrorBooleanWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeGeneralErrorBooleanWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeClusterErrorBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114403,13 +114665,13 @@ + (void)readAttributeClusterErrorBooleanWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterErrorBooleanWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeClusterErrorBooleanWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeUnsupportedWithCompletionHandler:(void (^)(
@@ -114456,13 +114718,13 @@ + (void)readAttributeUnsupportedWithAttributeCache:(MTRAttributeCacheContainer *
                                  completionHandler:
                                      (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeUnsupportedWithAttributeCache:attributeCacheContainer
-                                            endpoint:endpoint
-                                               queue:queue
-                                          completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                              // Cast is safe because subclass does not add any selectors.
-                                              completionHandler(static_cast(value), error);
-                                          }];
+    [self readAttributeUnsupportedWithClusterStateCache:attributeCacheContainer.realContainer
+                                               endpoint:endpoint
+                                                  queue:queue
+                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                 // Cast is safe because subclass does not add any selectors.
+                                                 completionHandler(static_cast(value), error);
+                                             }];
 }
 
 - (void)readAttributeNullableBooleanWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114510,13 +114772,13 @@ + (void)readAttributeNullableBooleanWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBooleanWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeNullableBooleanWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeNullableBitmap8WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114564,13 +114826,13 @@ + (void)readAttributeNullableBitmap8WithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap8WithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeNullableBitmap8WithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (void)readAttributeNullableBitmap16WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114618,13 +114880,13 @@ + (void)readAttributeNullableBitmap16WithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap16WithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeNullableBitmap16WithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableBitmap32WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114672,13 +114934,13 @@ + (void)readAttributeNullableBitmap32WithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap32WithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeNullableBitmap32WithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableBitmap64WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114726,13 +114988,13 @@ + (void)readAttributeNullableBitmap64WithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableBitmap64WithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeNullableBitmap64WithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableInt8uWithCompletionHandler:(void (^)(
@@ -114780,13 +115042,13 @@ + (void)readAttributeNullableInt8uWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt8uWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeNullableInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114834,13 +115096,13 @@ + (void)readAttributeNullableInt16uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt16uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt16uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt24uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114888,13 +115150,13 @@ + (void)readAttributeNullableInt24uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt24uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt24uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt32uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114942,13 +115204,13 @@ + (void)readAttributeNullableInt32uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt32uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt32uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt40uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -114996,13 +115258,13 @@ + (void)readAttributeNullableInt40uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt40uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt40uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt48uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115050,13 +115312,13 @@ + (void)readAttributeNullableInt48uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt48uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt48uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt56uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115104,13 +115366,13 @@ + (void)readAttributeNullableInt56uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt56uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt56uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt64uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115158,13 +115420,13 @@ + (void)readAttributeNullableInt64uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt64uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt64uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt8sWithCompletionHandler:(void (^)(
@@ -115212,13 +115474,13 @@ + (void)readAttributeNullableInt8sWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt8sWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeNullableInt8sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115266,13 +115528,13 @@ + (void)readAttributeNullableInt16sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt16sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt16sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt24sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115320,13 +115582,13 @@ + (void)readAttributeNullableInt24sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt24sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt24sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt32sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115374,13 +115636,13 @@ + (void)readAttributeNullableInt32sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt32sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt32sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt40sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115428,13 +115690,13 @@ + (void)readAttributeNullableInt40sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt40sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt40sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt48sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115482,13 +115744,13 @@ + (void)readAttributeNullableInt48sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt48sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt48sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt56sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115536,13 +115798,13 @@ + (void)readAttributeNullableInt56sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt56sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt56sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableInt64sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115590,13 +115852,13 @@ + (void)readAttributeNullableInt64sWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableInt64sWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableInt64sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableEnum8WithCompletionHandler:(void (^)(
@@ -115644,13 +115906,13 @@ + (void)readAttributeNullableEnum8WithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnum8WithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeNullableEnum8WithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeNullableEnum16WithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115698,13 +115960,13 @@ + (void)readAttributeNullableEnum16WithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnum16WithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeNullableEnum16WithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeNullableFloatSingleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115754,13 +116016,13 @@ + (void)readAttributeNullableFloatSingleWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableFloatSingleWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeNullableFloatSingleWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNullableFloatDoubleWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115810,13 +116072,13 @@ + (void)readAttributeNullableFloatDoubleWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableFloatDoubleWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeNullableFloatDoubleWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNullableOctetStringWithCompletionHandler:(void (^)(NSData * _Nullable value,
@@ -115866,13 +116128,13 @@ + (void)readAttributeNullableOctetStringWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableOctetStringWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSData * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeNullableOctetStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSData * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeNullableCharStringWithCompletionHandler:(void (^)(NSString * _Nullable value,
@@ -115922,13 +116184,13 @@ + (void)readAttributeNullableCharStringWithAttributeCache:(MTRAttributeCacheCont
                                         completionHandler:
                                             (void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableCharStringWithAttributeCache:attributeCacheContainer
-                                                   endpoint:endpoint
-                                                      queue:queue
-                                                 completion:^(NSString * _Nullable value, NSError * _Nullable error) {
-                                                     // Cast is safe because subclass does not add any selectors.
-                                                     completionHandler(static_cast(value), error);
-                                                 }];
+    [self readAttributeNullableCharStringWithClusterStateCache:attributeCacheContainer.realContainer
+                                                      endpoint:endpoint
+                                                         queue:queue
+                                                    completion:^(NSString * _Nullable value, NSError * _Nullable error) {
+                                                        // Cast is safe because subclass does not add any selectors.
+                                                        completionHandler(static_cast(value), error);
+                                                    }];
 }
 
 - (void)readAttributeNullableEnumAttrWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -115976,13 +116238,13 @@ + (void)readAttributeNullableEnumAttrWithAttributeCache:(MTRAttributeCacheContai
                                       completionHandler:
                                           (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableEnumAttrWithAttributeCache:attributeCacheContainer
-                                                 endpoint:endpoint
-                                                    queue:queue
-                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                   // Cast is safe because subclass does not add any selectors.
-                                                   completionHandler(static_cast(value), error);
-                                               }];
+    [self readAttributeNullableEnumAttrWithClusterStateCache:attributeCacheContainer.realContainer
+                                                    endpoint:endpoint
+                                                       queue:queue
+                                                  completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                      // Cast is safe because subclass does not add any selectors.
+                                                      completionHandler(static_cast(value), error);
+                                                  }];
 }
 
 - (void)readAttributeNullableStructWithCompletionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
@@ -116033,14 +116295,15 @@ + (void)readAttributeNullableStructWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:(void (^)(MTRTestClusterClusterSimpleStruct * _Nullable value,
                                                           NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableStructWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(
-                                                 MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self
+        readAttributeNullableStructWithClusterStateCache:attributeCacheContainer.realContainer
+                                                endpoint:endpoint
+                                                   queue:queue
+                                              completion:^(
+                                                  MTRUnitTestingClusterSimpleStruct * _Nullable value, NSError * _Nullable error) {
+                                                  // Cast is safe because subclass does not add any selectors.
+                                                  completionHandler(static_cast(value), error);
+                                              }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116090,13 +116353,13 @@ + (void)readAttributeNullableRangeRestrictedInt8uWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt8uWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeNullableRangeRestrictedInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt8sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116146,13 +116409,13 @@ + (void)readAttributeNullableRangeRestrictedInt8sWithAttributeCache:(MTRAttribut
                                                   completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                         NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt8sWithAttributeCache:attributeCacheContainer
-                                                             endpoint:endpoint
-                                                                queue:queue
-                                                           completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                               // Cast is safe because subclass does not add any selectors.
-                                                               completionHandler(static_cast(value), error);
-                                                           }];
+    [self readAttributeNullableRangeRestrictedInt8sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                endpoint:endpoint
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  // Cast is safe because subclass does not add any selectors.
+                                                                  completionHandler(static_cast(value), error);
+                                                              }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt16uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116202,13 +116465,13 @@ + (void)readAttributeNullableRangeRestrictedInt16uWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt16uWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeNullableRangeRestrictedInt16uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeNullableRangeRestrictedInt16sWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116258,13 +116521,13 @@ + (void)readAttributeNullableRangeRestrictedInt16sWithAttributeCache:(MTRAttribu
                                                    completionHandler:(void (^)(NSNumber * _Nullable value,
                                                                          NSError * _Nullable error))completionHandler
 {
-    [self readAttributeNullableRangeRestrictedInt16sWithAttributeCache:attributeCacheContainer
-                                                              endpoint:endpoint
-                                                                 queue:queue
-                                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                                // Cast is safe because subclass does not add any selectors.
-                                                                completionHandler(static_cast(value), error);
-                                                            }];
+    [self readAttributeNullableRangeRestrictedInt16sWithClusterStateCache:attributeCacheContainer.realContainer
+                                                                 endpoint:endpoint
+                                                                    queue:queue
+                                                               completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                   // Cast is safe because subclass does not add any selectors.
+                                                                   completionHandler(static_cast(value), error);
+                                                               }];
 }
 
 - (void)readAttributeWriteOnlyInt8uWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116312,13 +116575,13 @@ + (void)readAttributeWriteOnlyInt8uWithAttributeCache:(MTRAttributeCacheContaine
                                     completionHandler:
                                         (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeWriteOnlyInt8uWithAttributeCache:attributeCacheContainer
-                                               endpoint:endpoint
-                                                  queue:queue
-                                             completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                 // Cast is safe because subclass does not add any selectors.
-                                                 completionHandler(static_cast(value), error);
-                                             }];
+    [self readAttributeWriteOnlyInt8uWithClusterStateCache:attributeCacheContainer.realContainer
+                                                  endpoint:endpoint
+                                                     queue:queue
+                                                completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                    // Cast is safe because subclass does not add any selectors.
+                                                    completionHandler(static_cast(value), error);
+                                                }];
 }
 
 - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -116357,13 +116620,13 @@ + (void)readAttributeGeneratedCommandListWithAttributeCache:(MTRAttributeCacheCo
                                           completionHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeGeneratedCommandListWithAttributeCache:attributeCacheContainer
-                                                     endpoint:endpoint
-                                                        queue:queue
-                                                   completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                       // Cast is safe because subclass does not add any selectors.
-                                                       completionHandler(static_cast(value), error);
-                                                   }];
+    [self readAttributeGeneratedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                        endpoint:endpoint
+                                                           queue:queue
+                                                      completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                          // Cast is safe because subclass does not add any selectors.
+                                                          completionHandler(static_cast(value), error);
+                                                      }];
 }
 
 - (void)readAttributeAcceptedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value,
@@ -116402,13 +116665,13 @@ + (void)readAttributeAcceptedCommandListWithAttributeCache:(MTRAttributeCacheCon
                                          completionHandler:
                                              (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAcceptedCommandListWithAttributeCache:attributeCacheContainer
-                                                    endpoint:endpoint
-                                                       queue:queue
-                                                  completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                      // Cast is safe because subclass does not add any selectors.
-                                                      completionHandler(static_cast(value), error);
-                                                  }];
+    [self readAttributeAcceptedCommandListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                       endpoint:endpoint
+                                                          queue:queue
+                                                     completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                         // Cast is safe because subclass does not add any selectors.
+                                                         completionHandler(static_cast(value), error);
+                                                     }];
 }
 
 - (void)readAttributeAttributeListWithCompletionHandler:(void (^)(
@@ -116445,13 +116708,13 @@ + (void)readAttributeAttributeListWithAttributeCache:(MTRAttributeCacheContainer
                                    completionHandler:
                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeAttributeListWithAttributeCache:attributeCacheContainer
-                                              endpoint:endpoint
-                                                 queue:queue
-                                            completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                                                // Cast is safe because subclass does not add any selectors.
-                                                completionHandler(static_cast(value), error);
-                                            }];
+    [self readAttributeAttributeListWithClusterStateCache:attributeCacheContainer.realContainer
+                                                 endpoint:endpoint
+                                                    queue:queue
+                                               completion:^(NSArray * _Nullable value, NSError * _Nullable error) {
+                                                   // Cast is safe because subclass does not add any selectors.
+                                                   completionHandler(static_cast(value), error);
+                                               }];
 }
 
 - (void)readAttributeFeatureMapWithCompletionHandler:(void (^)(
@@ -116487,13 +116750,13 @@ + (void)readAttributeFeatureMapWithAttributeCache:(MTRAttributeCacheContainer *)
                                             queue:(dispatch_queue_t)queue
                                 completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeFeatureMapWithAttributeCache:attributeCacheContainer
-                                           endpoint:endpoint
-                                              queue:queue
-                                         completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                             // Cast is safe because subclass does not add any selectors.
-                                             completionHandler(static_cast(value), error);
-                                         }];
+    [self readAttributeFeatureMapWithClusterStateCache:attributeCacheContainer.realContainer
+                                              endpoint:endpoint
+                                                 queue:queue
+                                            completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                // Cast is safe because subclass does not add any selectors.
+                                                completionHandler(static_cast(value), error);
+                                            }];
 }
 
 - (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
@@ -116531,13 +116794,13 @@ + (void)readAttributeClusterRevisionWithAttributeCache:(MTRAttributeCacheContain
                                      completionHandler:
                                          (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
 {
-    [self readAttributeClusterRevisionWithAttributeCache:attributeCacheContainer
-                                                endpoint:endpoint
-                                                   queue:queue
-                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                  // Cast is safe because subclass does not add any selectors.
-                                                  completionHandler(static_cast(value), error);
-                                              }];
+    [self readAttributeClusterRevisionWithClusterStateCache:attributeCacheContainer.realContainer
+                                                   endpoint:endpoint
+                                                      queue:queue
+                                                 completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                     // Cast is safe because subclass does not add any selectors.
+                                                     completionHandler(static_cast(value), error);
+                                                 }];
 }
 
 - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index e8574a054fcb9b..17c833607407ea 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -17,8 +17,6 @@
 
 #import 
 
-#import 
-
 #import 
 #import 
 #import 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index 3ef9e811b7602a..f913d7b09f4e67 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -18,7 +18,6 @@
 #import 
 
 #import "MTRAsyncCallbackWorkQueue.h"
-#import "MTRAttributeCacheContainer_Internal.h"
 #import "MTRBaseDevice_internal.h"
 #import "MTRCallbackBridge_internal.h"
 #import "MTRClusterConstants.h"
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 9ad67477413651..83b9762579f03f 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -19,9 +19,9 @@
  */
 
 // module headers
-#import 
 #import 
 #import 
+#import 
 #import 
 
 #import "MTRErrorTestUtils.h"
@@ -761,7 +761,7 @@ - (void)test011_ReadCachedAttribute
                                    }];
     [self waitForExpectations:@[ cleanSubscriptionExpectation ] timeout:kTimeoutInSeconds];
 
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     MTRDeviceController * controller = sController;
     XCTAssertNotNil(controller);
     XCTestExpectation * subscribeExpectation = [self expectationWithDescription:@"Subscription complete"];
@@ -772,7 +772,7 @@ - (void)test011_ReadCachedAttribute
     __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(2) maxInterval:@(60)];
     [device subscribeWithQueue:queue
         params:params
-        attributeCacheContainer:attributeCacheContainer
+        clusterStateCacheContainer:clusterStateCacheContainer
         attributeReportHandler:^(NSArray * value) {
             NSLog(@"Received report: %@", value);
             if (reportHandler) {
@@ -820,15 +820,15 @@ - (void)test011_ReadCachedAttribute
     // Read cache
     NSLog(@"Reading from cache...");
     XCTestExpectation * cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [MTRBaseClusterOnOff readAttributeOnOffWithAttributeCache:attributeCacheContainer
-                                                     endpoint:@1
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
-                                                       NSLog(@"Read attribute cache value: %@, error: %@", value, err);
-                                                       XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:err], 0);
-                                                       XCTAssertTrue([value isEqualToNumber:[NSNumber numberWithBool:YES]]);
-                                                       [cacheExpectation fulfill];
-                                                   }];
+    [MTRBaseClusterOnOff readAttributeOnOffWithClusterStateCache:clusterStateCacheContainer
+                                                        endpoint:@1
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
+                                                          NSLog(@"Read attribute cache value: %@, error: %@", value, err);
+                                                          XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:err], 0);
+                                                          XCTAssertTrue([value isEqualToNumber:[NSNumber numberWithBool:YES]]);
+                                                          [cacheExpectation fulfill];
+                                                      }];
     [self waitForExpectations:[NSArray arrayWithObject:cacheExpectation] timeout:kTimeoutInSeconds];
 
     // Add another subscriber of the attribute to verify that attribute cache still works when there are other subscribers.
@@ -888,118 +888,118 @@ - (void)test011_ReadCachedAttribute
     // Read cache
     NSLog(@"Reading from cache...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [MTRBaseClusterOnOff readAttributeOnOffWithAttributeCache:attributeCacheContainer
-                                                     endpoint:@1
-                                                        queue:queue
-                                                   completion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
-                                                       NSLog(@"Read attribute cache value: %@, error: %@", value, err);
-                                                       XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:err], 0);
-                                                       XCTAssertTrue([value isEqualToNumber:[NSNumber numberWithBool:NO]]);
-                                                       [cacheExpectation fulfill];
-                                                   }];
+    [MTRBaseClusterOnOff readAttributeOnOffWithClusterStateCache:clusterStateCacheContainer
+                                                        endpoint:@1
+                                                           queue:queue
+                                                      completion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
+                                                          NSLog(@"Read attribute cache value: %@, error: %@", value, err);
+                                                          XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:err], 0);
+                                                          XCTAssertTrue([value isEqualToNumber:[NSNumber numberWithBool:NO]]);
+                                                          [cacheExpectation fulfill];
+                                                      }];
     [self waitForExpectations:[NSArray arrayWithObject:cacheExpectation] timeout:kTimeoutInSeconds];
 
     // Read from cache using generic path
     NSLog(@"Reading from cache using generic path...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:@1
-                          clusterID:@6
-                        attributeID:@0
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read attribute cache value: %@, error %@", values, error);
-                             XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
-                             XCTAssertEqual([values count], 1);
-                             MTRAttributePath * path = values[0][@"attributePath"];
-                             XCTAssertEqual([path.endpoint unsignedShortValue], 1);
-                             XCTAssertEqual([path.cluster unsignedLongValue], 6);
-                             XCTAssertEqual([path.attribute unsignedLongValue], 0);
-                             XCTAssertNil(values[0][@"error"]);
-                             XCTAssertTrue([values[0][@"data"][@"type"] isEqualToString:@"Boolean"]);
-                             XCTAssertEqual([values[0][@"data"][@"value"] boolValue], NO);
-                             [cacheExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:@1
+                           clusterID:@6
+                         attributeID:@0
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read attribute cache value: %@, error %@", values, error);
+                              XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
+                              XCTAssertEqual([values count], 1);
+                              MTRAttributePath * path = values[0][@"attributePath"];
+                              XCTAssertEqual([path.endpoint unsignedShortValue], 1);
+                              XCTAssertEqual([path.cluster unsignedLongValue], 6);
+                              XCTAssertEqual([path.attribute unsignedLongValue], 0);
+                              XCTAssertNil(values[0][@"error"]);
+                              XCTAssertTrue([values[0][@"data"][@"type"] isEqualToString:@"Boolean"]);
+                              XCTAssertEqual([values[0][@"data"][@"value"] boolValue], NO);
+                              [cacheExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ cacheExpectation ] timeout:kTimeoutInSeconds];
 
     // Read from cache with wildcard path
     NSLog(@"Reading from cache using wildcard endpoint...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:nil
-                          clusterID:@6
-                        attributeID:@0
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read attribute cache value: %@, error %@", values, error);
-                             XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
-                             XCTAssertTrue([values count] > 0);
-                             for (NSDictionary * value in values) {
-                                 MTRAttributePath * path = value[@"attributePath"];
-                                 XCTAssertEqual([path.cluster unsignedLongValue], 6);
-                                 XCTAssertEqual([path.attribute unsignedLongValue], 0);
-                                 XCTAssertNil(value[@"error"]);
-                             }
-                             [cacheExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:nil
+                           clusterID:@6
+                         attributeID:@0
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read attribute cache value: %@, error %@", values, error);
+                              XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
+                              XCTAssertTrue([values count] > 0);
+                              for (NSDictionary * value in values) {
+                                  MTRAttributePath * path = value[@"attributePath"];
+                                  XCTAssertEqual([path.cluster unsignedLongValue], 6);
+                                  XCTAssertEqual([path.attribute unsignedLongValue], 0);
+                                  XCTAssertNil(value[@"error"]);
+                              }
+                              [cacheExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ cacheExpectation ] timeout:kTimeoutInSeconds];
 
     // Read from cache with wildcard path
     NSLog(@"Reading from cache using wildcard cluster ID...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:@1
-                          clusterID:nil
-                        attributeID:@0
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read attribute cache value: %@, error %@", values, error);
-                             XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
-                             XCTAssertTrue([values count] > 0);
-                             for (NSDictionary * value in values) {
-                                 MTRAttributePath * path = value[@"attributePath"];
-                                 XCTAssertEqual([path.endpoint unsignedShortValue], 1);
-                                 XCTAssertEqual([path.attribute unsignedLongValue], 0);
-                             }
-                             [cacheExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:@1
+                           clusterID:nil
+                         attributeID:@0
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read attribute cache value: %@, error %@", values, error);
+                              XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
+                              XCTAssertTrue([values count] > 0);
+                              for (NSDictionary * value in values) {
+                                  MTRAttributePath * path = value[@"attributePath"];
+                                  XCTAssertEqual([path.endpoint unsignedShortValue], 1);
+                                  XCTAssertEqual([path.attribute unsignedLongValue], 0);
+                              }
+                              [cacheExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ cacheExpectation ] timeout:kTimeoutInSeconds];
 
     // Read from cache with wildcard path
     NSLog(@"Reading from cache using wildcard attribute ID...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:@1
-                          clusterID:@6
-                        attributeID:nil
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read attribute cache value: %@, error %@", values, error);
-                             XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
-                             XCTAssertTrue([values count] > 0);
-                             for (NSDictionary * value in values) {
-                                 MTRAttributePath * path = value[@"attributePath"];
-                                 XCTAssertEqual([path.endpoint unsignedShortValue], 1);
-                                 XCTAssertEqual([path.cluster unsignedLongValue], 6);
-                                 XCTAssertNil(value[@"error"]);
-                             }
-                             [cacheExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:@1
+                           clusterID:@6
+                         attributeID:nil
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read attribute cache value: %@, error %@", values, error);
+                              XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
+                              XCTAssertTrue([values count] > 0);
+                              for (NSDictionary * value in values) {
+                                  MTRAttributePath * path = value[@"attributePath"];
+                                  XCTAssertEqual([path.endpoint unsignedShortValue], 1);
+                                  XCTAssertEqual([path.cluster unsignedLongValue], 6);
+                                  XCTAssertNil(value[@"error"]);
+                              }
+                              [cacheExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ cacheExpectation ] timeout:kTimeoutInSeconds];
 
     // Read from cache with wildcard path
     NSLog(@"Reading from cache using wildcard endpoint ID and cluster ID...");
     cacheExpectation = [self expectationWithDescription:@"Attribute cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:nil
-                          clusterID:nil
-                        attributeID:@0
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read attribute cache value: %@, error %@", values, error);
-                             XCTAssertNotNil(error);
-                             [cacheExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:nil
+                           clusterID:nil
+                         attributeID:@0
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read attribute cache value: %@, error %@", values, error);
+                              XCTAssertNotNil(error);
+                              [cacheExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ cacheExpectation ] timeout:kTimeoutInSeconds];
 }
 
@@ -1308,23 +1308,23 @@ - (void)test016_FailedSubscribeWithCacheReadDuringFailure
     // Create first subscription.  It needs to be using subscribeWithQueue and
     // must have a clusterStateCacheContainer to exercise the onDone case.
     NSLog(@"Subscribing...");
-    __auto_type clusterStateCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(1) maxInterval:@(2)];
     params.resubscribeIfLost = NO;
     [device subscribeWithQueue:queue
         params:params
-        attributeCacheContainer:clusterStateCacheContainer
+        clusterStateCacheContainer:clusterStateCacheContainer
         attributeReportHandler:nil
         eventReportHandler:nil
         errorHandler:^(NSError * error) {
             NSLog(@"Received report error: %@", error);
 
-            [MTRBaseClusterOnOff readAttributeOnOffWithAttributeCache:clusterStateCacheContainer
-                                                             endpoint:@1
-                                                                queue:queue
-                                                    completionHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                                                        [errorExpectation fulfill];
-                                                    }];
+            [MTRBaseClusterOnOff readAttributeOnOffWithClusterStateCache:clusterStateCacheContainer
+                                                                endpoint:@1
+                                                                   queue:queue
+                                                              completion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+                                                                  [errorExpectation fulfill];
+                                                              }];
         }
         subscriptionEstablished:^() {
             [firstSubscribeExpectation fulfill];
diff --git a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
index 1cb29d3c274cdd..c9bd521dd9b877 100644
--- a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
@@ -62,7 +62,7 @@ - (void)stop;
 @interface MTRDeviceControllerServerSample : NSObject
 @property (nonatomic, readonly, strong) NSString * identifier;
 - (instancetype)initWithClientProxy:(id)proxy
-           attributeCacheDictionary:(NSMutableDictionary *)cacheDictionary;
+        clusterStateCacheDictionary:(NSMutableDictionary *)cacheDictionary;
 @end
 
 @interface MTRXPCListenerSample ()
@@ -72,7 +72,8 @@ @interface MTRXPCListenerSample ()
 @property (nonatomic, readonly, strong) NSXPCInterface * clientInterface;
 @property (nonatomic, readonly, strong) NSXPCListener * xpcListener;
 @property (nonatomic, readonly, strong) NSMutableDictionary * servers;
-@property (nonatomic, readonly, strong) NSMutableDictionary * attributeCacheDictionary;
+@property (nonatomic, readonly, strong)
+    NSMutableDictionary * clusterStateCacheDictionary;
 
 @end
 
@@ -84,7 +85,7 @@ - (instancetype)init
         _serviceInterface = [NSXPCInterface interfaceWithProtocol:@protocol(MTRDeviceControllerServerProtocol)];
         _clientInterface = [NSXPCInterface interfaceWithProtocol:@protocol(MTRDeviceControllerClientProtocol)];
         _servers = [NSMutableDictionary dictionary];
-        _attributeCacheDictionary = [NSMutableDictionary dictionary];
+        _clusterStateCacheDictionary = [NSMutableDictionary dictionary];
         _xpcListener = [NSXPCListener anonymousListener];
         [_xpcListener setDelegate:(id) self];
     }
@@ -112,7 +113,7 @@ - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConne
     newConnection.exportedInterface = _serviceInterface;
     newConnection.remoteObjectInterface = _clientInterface;
     __auto_type newServer = [[MTRDeviceControllerServerSample alloc] initWithClientProxy:[newConnection remoteObjectProxy]
-                                                                attributeCacheDictionary:_attributeCacheDictionary];
+                                                             clusterStateCacheDictionary:_clusterStateCacheDictionary];
     newConnection.exportedObject = newServer;
     [_servers setObject:newServer forKey:newServer.identifier];
     newConnection.invalidationHandler = ^{
@@ -127,7 +128,8 @@ - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConne
 
 @interface MTRDeviceControllerServerSample ()
 @property (nonatomic, readwrite, strong) id clientProxy;
-@property (nonatomic, readonly, strong) NSMutableDictionary * attributeCacheDictionary;
+@property (nonatomic, readonly, strong)
+    NSMutableDictionary * clusterStateCacheDictionary;
 @end
 
 // This sample does not have multiple controllers and hence controller Id shall be the same.
@@ -136,12 +138,12 @@ @interface MTRDeviceControllerServerSample ()
 @implementation MTRDeviceControllerServerSample
 
 - (instancetype)initWithClientProxy:(id)proxy
-           attributeCacheDictionary:(NSMutableDictionary *)cacheDictionary
+        clusterStateCacheDictionary:(NSMutableDictionary *)cacheDictionary
 {
     if ([super init]) {
         _clientProxy = proxy;
         _identifier = [[NSUUID UUID] UUIDString];
-        _attributeCacheDictionary = cacheDictionary;
+        _clusterStateCacheDictionary = cacheDictionary;
     }
     return self;
 }
@@ -313,9 +315,9 @@ - (void)subscribeWithController:(id _Nullable)controller
 {
     __auto_type sharedController = sController;
     if (sharedController) {
-        MTRAttributeCacheContainer * attributeCacheContainer;
+        MTRClusterStateCacheContainer * clusterStateCacheContainer;
         if (shouldCache) {
-            attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+            clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
         }
 
         __auto_type device = [MTRBaseDevice deviceWithNodeID:@(nodeId) controller:sharedController];
@@ -330,7 +332,7 @@ - (void)subscribeWithController:(id _Nullable)controller
         }
         [device subscribeWithQueue:dispatch_get_main_queue()
             params:subscriptionParams
-            attributeCacheContainer:attributeCacheContainer
+            clusterStateCacheContainer:clusterStateCacheContainer
             attributeReportHandler:^(NSArray * value) {
                 NSLog(@"Received report: %@", value);
             }
@@ -344,8 +346,8 @@ - (void)subscribeWithController:(id _Nullable)controller
             }
             subscriptionEstablished:^() {
                 NSLog(@"Attribute cache subscription succeeded for device %llu", nodeId);
-                if (attributeCacheContainer) {
-                    [self.attributeCacheDictionary setObject:attributeCacheContainer forKey:@(nodeId)];
+                if (clusterStateCacheContainer) {
+                    [self.clusterStateCacheDictionary setObject:clusterStateCacheContainer forKey:@(nodeId)];
                 }
                 if (![established[0] boolValue]) {
                     established[0] = @YES;
@@ -366,16 +368,17 @@ - (void)readAttributeCacheWithController:(id _Nullable)controller
                              attributeId:(NSNumber * _Nullable)attributeId
                               completion:(MTRValuesHandler)completion
 {
-    MTRAttributeCacheContainer * attributeCacheContainer = _attributeCacheDictionary[[NSNumber numberWithUnsignedLongLong:nodeId]];
-    if (attributeCacheContainer) {
-        [attributeCacheContainer
-            readAttributeWithEndpointID:endpointId
-                              clusterID:clusterId
-                            attributeID:attributeId
-                                  queue:dispatch_get_main_queue()
-                             completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                                 completion([MTRDeviceController encodeXPCResponseValues:values], error);
-                             }];
+    MTRClusterStateCacheContainer * clusterStateCacheContainer
+        = _clusterStateCacheDictionary[[NSNumber numberWithUnsignedLongLong:nodeId]];
+    if (clusterStateCacheContainer) {
+        [clusterStateCacheContainer
+            readAttributesWithEndpointID:endpointId
+                               clusterID:clusterId
+                             attributeID:attributeId
+                                   queue:dispatch_get_main_queue()
+                              completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                                  completion([MTRDeviceController encodeXPCResponseValues:values], error);
+                              }];
     } else {
         NSLog(@"Attribute cache for node ID %llu was not setup", nodeId);
         completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]);
@@ -1694,7 +1697,7 @@ - (void)test014_TimedInvokeCommand
     sleep(1);
 }
 
-- (void)test900_SubscribeAttributeCache
+- (void)test900_SubscribeClusterStateCache
 {
 #if MANUAL_INDIVIDUAL_TEST
     [self initStack];
@@ -1705,12 +1708,12 @@ - (void)test900_SubscribeAttributeCache
     MTRBaseDevice * device = GetConnectedDevice();
     dispatch_queue_t queue = dispatch_get_main_queue();
 
-    MTRAttributeCacheContainer * attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    MTRClusterStateCacheContainer * clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     NSLog(@"Setting up attribute cache subscription...");
     __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(1) maxInterval:@(60)];
     [device subscribeWithQueue:queue
         params:params
-        attributeCacheContainer:attributeCacheContainer
+        clusterStateCacheContainer:clusterStateCacheContainer
         attributeReportHandler:^(NSArray * value) {
             NSLog(@"Report for attribute cache: %@", value);
         }
@@ -1793,28 +1796,28 @@ - (void)test900_SubscribeAttributeCache
     sleep(1);
     NSLog(@"Reading from attribute cache...");
     expectation = [self expectationWithDescription:@"Cache read"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:@1
-                          clusterID:@6
-                        attributeID:@0
-                              queue:queue
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Cached attribute read: %@, error: %@", values, error);
-                             XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
-                             XCTAssertEqual([values count], 1);
-                             for (NSDictionary * value in values) {
-                                 XCTAssertTrue([value isKindOfClass:[NSDictionary class]]);
-                                 NSDictionary * result = value;
-                                 MTRAttributePath * path = result[@"attributePath"];
-                                 XCTAssertEqual([path.endpoint unsignedIntegerValue], 1);
-                                 XCTAssertEqual([path.cluster unsignedIntegerValue], 6);
-                                 XCTAssertEqual([path.attribute unsignedIntegerValue], 0);
-                                 XCTAssertTrue([result[@"data"] isKindOfClass:[NSDictionary class]]);
-                                 XCTAssertTrue([result[@"data"][@"type"] isEqualToString:@"Boolean"]);
-                                 XCTAssertEqual([result[@"data"][@"value"] boolValue], YES);
-                             }
-                             [expectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:@1
+                           clusterID:@6
+                         attributeID:@0
+                               queue:queue
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Cached attribute read: %@, error: %@", values, error);
+                              XCTAssertEqual([MTRErrorTestUtils errorToZCLErrorCode:error], 0);
+                              XCTAssertEqual([values count], 1);
+                              for (NSDictionary * value in values) {
+                                  XCTAssertTrue([value isKindOfClass:[NSDictionary class]]);
+                                  NSDictionary * result = value;
+                                  MTRAttributePath * path = result[@"attributePath"];
+                                  XCTAssertEqual([path.endpoint unsignedIntegerValue], 1);
+                                  XCTAssertEqual([path.cluster unsignedIntegerValue], 6);
+                                  XCTAssertEqual([path.attribute unsignedIntegerValue], 0);
+                                  XCTAssertTrue([result[@"data"] isKindOfClass:[NSDictionary class]]);
+                                  XCTAssertTrue([result[@"data"][@"type"] isEqualToString:@"Boolean"]);
+                                  XCTAssertEqual([result[@"data"][@"value"] boolValue], YES);
+                              }
+                              [expectation fulfill];
+                          }];
     [self waitForExpectations:@[ expectation ] timeout:kTimeoutInSeconds];
 }
 
diff --git a/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m b/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m
index c7ef91da035fed..b358f7c801cc21 100644
--- a/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m
@@ -76,7 +76,7 @@ - (NSString *)description
 }
 @end
 
-@interface MTRAttributeCacheContainer (Test)
+@interface MTRClusterStateCacheContainer (Test)
 // Obsolete method is moved to this test suite to keep tests compatible
 - (void)subscribeWithDeviceController:(MTRDeviceController *)deviceController
                              deviceID:(NSNumber *)deviceID
@@ -85,7 +85,7 @@ - (void)subscribeWithDeviceController:(MTRDeviceController *)deviceController
                            completion:(void (^)(NSError * _Nullable error))completion;
 @end
 
-@implementation MTRAttributeCacheContainer (Test)
+@implementation MTRClusterStateCacheContainer (Test)
 - (void)subscribeWithDeviceController:(MTRDeviceController *)deviceController
                              deviceID:(NSNumber *)deviceID
                                params:(MTRSubscribeParams * _Nullable)params
@@ -105,7 +105,7 @@ - (void)subscribeWithDeviceController:(MTRDeviceController *)deviceController
     [established addObject:@NO];
     [device subscribeWithQueue:queue
         params:subscriptionParams
-        attributeCacheContainer:self
+        clusterStateCacheContainer:self
         attributeReportHandler:^(NSArray * value) {
             NSLog(@"Report received for attribute cache: %@", value);
         }
@@ -157,7 +157,7 @@ @interface MTRXPCProtocolTests
 @property (readwrite, strong) void (^handleStopReports)(id controller, NSNumber * nodeId, void (^completion)(void));
 @property (readwrite, strong) void (^handleSubscribeAll)(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params,
     BOOL shouldCache, void (^completion)(NSError * _Nullable error));
-@property (readwrite, strong) void (^handleReadAttributeCache)
+@property (readwrite, strong) void (^handleReadClusterStateCache)
     (id controller, NSNumber * nodeId, NSNumber * _Nullable endpointId, NSNumber * _Nullable clusterId,
         NSNumber * _Nullable attributeId, void (^completion)(id _Nullable values, NSError * _Nullable error));
 
@@ -313,8 +313,8 @@ - (void)readAttributeCacheWithController:(id _Nullable)controller
                               completion:(MTRValuesHandler)completion
 {
     dispatch_async(dispatch_get_main_queue(), ^{
-        XCTAssertNotNil(self.handleReadAttributeCache);
-        self.handleReadAttributeCache(controller, @(nodeId), endpointId, clusterId, attributeId, completion);
+        XCTAssertNotNil(self.handleReadClusterStateCache);
+        self.handleReadClusterStateCache(controller, @(nodeId), endpointId, clusterId, attributeId, completion);
     });
 }
 
@@ -2143,14 +2143,14 @@ - (void)testAnySharedRemoteController
     XCTAssertNil(_xpcConnection);
 }
 
-- (void)testSubscribeAttributeCacheSuccess
+- (void)testSubscribeClusterStateCacheSuccess
 {
     uint64_t myNodeId = 9876543210;
     XCTestExpectation * callExpectation = [self expectationWithDescription:@"XPC call received"];
     XCTestExpectation * responseExpectation = [self expectationWithDescription:@"XPC response received"];
 
     __auto_type uuid = self.controllerUUID;
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     _handleSubscribeAll = ^(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params, BOOL shouldCache,
         void (^completion)(NSError * _Nullable error)) {
         NSLog(@"Subscribe called");
@@ -2161,21 +2161,21 @@ - (void)testSubscribeAttributeCacheSuccess
     };
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
-    [attributeCacheContainer subscribeWithDeviceController:_remoteDeviceController
-                                                  deviceID:@(myNodeId)
-                                                    params:nil
-                                                     queue:dispatch_get_main_queue()
-                                                completion:^(NSError * _Nullable error) {
-                                                    NSLog(@"Subscribe completion called with error: %@", error);
-                                                    XCTAssertNil(error);
-                                                    [responseExpectation fulfill];
-                                                }];
+    [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController
+                                                     deviceID:@(myNodeId)
+                                                       params:nil
+                                                        queue:dispatch_get_main_queue()
+                                                   completion:^(NSError * _Nullable error) {
+                                                       NSLog(@"Subscribe completion called with error: %@", error);
+                                                       XCTAssertNil(error);
+                                                       [responseExpectation fulfill];
+                                                   }];
 
     [self waitForExpectations:@[ callExpectation, responseExpectation, self.xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
     XCTAssertNil(_xpcConnection);
 }
 
-- (void)testSubscribeAttributeCacheWithParamsSuccess
+- (void)testSubscribeClusterStateCacheWithParamsSuccess
 {
     uint64_t myNodeId = 9876543210;
     MTRSubscribeParams * myParams = [[MTRSubscribeParams alloc] initWithMinInterval:@(1) maxInterval:@(43200)];
@@ -2185,7 +2185,7 @@ - (void)testSubscribeAttributeCacheWithParamsSuccess
     XCTestExpectation * responseExpectation = [self expectationWithDescription:@"XPC response received"];
 
     __auto_type uuid = self.controllerUUID;
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     _handleSubscribeAll = ^(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params, BOOL shouldCache,
         void (^completion)(NSError * _Nullable error)) {
         NSLog(@"Subscribe attribute cache called");
@@ -2198,21 +2198,21 @@ - (void)testSubscribeAttributeCacheWithParamsSuccess
     };
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
-    [attributeCacheContainer subscribeWithDeviceController:_remoteDeviceController
-                                                  deviceID:@(myNodeId)
-                                                    params:myParams
-                                                     queue:dispatch_get_main_queue()
-                                                completion:^(NSError * _Nullable error) {
-                                                    NSLog(@"Subscribe completion called with error: %@", error);
-                                                    XCTAssertNil(error);
-                                                    [responseExpectation fulfill];
-                                                }];
+    [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController
+                                                     deviceID:@(myNodeId)
+                                                       params:myParams
+                                                        queue:dispatch_get_main_queue()
+                                                   completion:^(NSError * _Nullable error) {
+                                                       NSLog(@"Subscribe completion called with error: %@", error);
+                                                       XCTAssertNil(error);
+                                                       [responseExpectation fulfill];
+                                                   }];
 
     [self waitForExpectations:@[ callExpectation, responseExpectation, self.xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
     XCTAssertNil(_xpcConnection);
 }
 
-- (void)testSubscribeAttributeCacheFailure
+- (void)testSubscribeClusterStateCacheFailure
 {
     uint64_t myNodeId = 9876543210;
     NSError * myError = [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil];
@@ -2220,7 +2220,7 @@ - (void)testSubscribeAttributeCacheFailure
     XCTestExpectation * responseExpectation = [self expectationWithDescription:@"XPC response received"];
 
     __auto_type uuid = self.controllerUUID;
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     _handleSubscribeAll = ^(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params, BOOL shouldCache,
         void (^completion)(NSError * _Nullable error)) {
         NSLog(@"Subscribe attribute cache called");
@@ -2231,21 +2231,21 @@ - (void)testSubscribeAttributeCacheFailure
     };
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
-    [attributeCacheContainer subscribeWithDeviceController:_remoteDeviceController
-                                                  deviceID:@(myNodeId)
-                                                    params:nil
-                                                     queue:dispatch_get_main_queue()
-                                                completion:^(NSError * _Nullable error) {
-                                                    NSLog(@"Subscribe completion called with error: %@", error);
-                                                    XCTAssertNotNil(error);
-                                                    [responseExpectation fulfill];
-                                                }];
+    [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController
+                                                     deviceID:@(myNodeId)
+                                                       params:nil
+                                                        queue:dispatch_get_main_queue()
+                                                   completion:^(NSError * _Nullable error) {
+                                                       NSLog(@"Subscribe completion called with error: %@", error);
+                                                       XCTAssertNotNil(error);
+                                                       [responseExpectation fulfill];
+                                                   }];
 
     [self waitForExpectations:@[ callExpectation, responseExpectation, _xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
     XCTAssertNil(_xpcConnection);
 }
 
-- (void)testReadAttributeCacheSuccess
+- (void)testReadClusterStateCacheSuccess
 {
     uint64_t myNodeId = 9876543210;
     NSNumber * myEndpointId = @100;
@@ -2263,7 +2263,7 @@ - (void)testReadAttributeCacheSuccess
     XCTestExpectation * responseExpectation = [self expectationWithDescription:@"XPC response received"];
 
     __auto_type uuid = self.controllerUUID;
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     _handleSubscribeAll = ^(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params, BOOL shouldCache,
         void (^completion)(NSError * _Nullable error)) {
         NSLog(@"Subscribe attribute cache called");
@@ -2272,49 +2272,50 @@ - (void)testReadAttributeCacheSuccess
         completion(nil);
     };
 
-    _handleReadAttributeCache = ^(id controller, NSNumber * nodeId, NSNumber * _Nullable endpointId, NSNumber * _Nullable clusterId,
-        NSNumber * _Nullable attributeId, void (^completion)(id _Nullable values, NSError * _Nullable error)) {
-        NSLog(@"Read attribute cache called");
-        XCTAssertTrue([controller isEqualToString:uuid]);
-        XCTAssertEqual([nodeId unsignedLongLongValue], myNodeId);
-        XCTAssertEqual([endpointId unsignedShortValue], [myEndpointId unsignedShortValue]);
-        XCTAssertEqual([clusterId unsignedLongValue], [myClusterId unsignedLongValue]);
-        XCTAssertEqual([attributeId unsignedLongValue], [myAttributeId unsignedLongValue]);
-        [callExpectation fulfill];
-        completion([MTRDeviceController encodeXPCResponseValues:myValues], nil);
-    };
+    _handleReadClusterStateCache
+        = ^(id controller, NSNumber * nodeId, NSNumber * _Nullable endpointId, NSNumber * _Nullable clusterId,
+            NSNumber * _Nullable attributeId, void (^completion)(id _Nullable values, NSError * _Nullable error)) {
+              NSLog(@"Read attribute cache called");
+              XCTAssertTrue([controller isEqualToString:uuid]);
+              XCTAssertEqual([nodeId unsignedLongLongValue], myNodeId);
+              XCTAssertEqual([endpointId unsignedShortValue], [myEndpointId unsignedShortValue]);
+              XCTAssertEqual([clusterId unsignedLongValue], [myClusterId unsignedLongValue]);
+              XCTAssertEqual([attributeId unsignedLongValue], [myAttributeId unsignedLongValue]);
+              [callExpectation fulfill];
+              completion([MTRDeviceController encodeXPCResponseValues:myValues], nil);
+          };
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
 
-    [attributeCacheContainer subscribeWithDeviceController:_remoteDeviceController
-                                                  deviceID:@(myNodeId)
-                                                    params:nil
-                                                     queue:dispatch_get_main_queue()
-                                                completion:^(NSError * _Nullable error) {
-                                                    NSLog(@"Subscribe completion called with error: %@", error);
-                                                    XCTAssertNil(error);
-                                                    [subscribeExpectation fulfill];
-                                                }];
+    [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController
+                                                     deviceID:@(myNodeId)
+                                                       params:nil
+                                                        queue:dispatch_get_main_queue()
+                                                   completion:^(NSError * _Nullable error) {
+                                                       NSLog(@"Subscribe completion called with error: %@", error);
+                                                       XCTAssertNil(error);
+                                                       [subscribeExpectation fulfill];
+                                                   }];
     [self waitForExpectations:@[ subscribeExpectation, _xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:myEndpointId
-                          clusterID:myClusterId
-                        attributeID:myAttributeId
-                              queue:dispatch_get_main_queue()
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read cached value: %@", values);
-                             XCTAssertNotNil(values);
-                             XCTAssertNil(error);
-                             XCTAssertTrue([myValues isEqual:values]);
-                             [responseExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:myEndpointId
+                           clusterID:myClusterId
+                         attributeID:myAttributeId
+                               queue:dispatch_get_main_queue()
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read cached value: %@", values);
+                              XCTAssertNotNil(values);
+                              XCTAssertNil(error);
+                              XCTAssertTrue([myValues isEqual:values]);
+                              [responseExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ callExpectation, responseExpectation, _xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
     XCTAssertNil(_xpcConnection);
 }
 
-- (void)testReadAttributeCacheFailure
+- (void)testReadClusterStateCacheFailure
 {
     uint64_t myNodeId = 9876543210;
     NSNumber * myEndpointId = @100;
@@ -2326,7 +2327,7 @@ - (void)testReadAttributeCacheFailure
     XCTestExpectation * responseExpectation = [self expectationWithDescription:@"XPC response received"];
 
     __auto_type uuid = self.controllerUUID;
-    __auto_type attributeCacheContainer = [[MTRAttributeCacheContainer alloc] init];
+    __auto_type clusterStateCacheContainer = [[MTRClusterStateCacheContainer alloc] init];
     _handleSubscribeAll = ^(id controller, NSNumber * nodeId, MTRSubscribeParams * _Nonnull params, BOOL shouldCache,
         void (^completion)(NSError * _Nullable error)) {
         NSLog(@"Subscribe attribute cache called");
@@ -2335,41 +2336,42 @@ - (void)testReadAttributeCacheFailure
         completion(nil);
     };
 
-    _handleReadAttributeCache = ^(id controller, NSNumber * nodeId, NSNumber * _Nullable endpointId, NSNumber * _Nullable clusterId,
-        NSNumber * _Nullable attributeId, void (^completion)(id _Nullable values, NSError * _Nullable error)) {
-        NSLog(@"Read attribute cache called");
-        XCTAssertTrue([controller isEqualToString:uuid]);
-        XCTAssertEqual([nodeId unsignedLongLongValue], myNodeId);
-        XCTAssertEqual([endpointId unsignedShortValue], [myEndpointId unsignedShortValue]);
-        XCTAssertEqual([clusterId unsignedLongValue], [myClusterId unsignedLongValue]);
-        XCTAssertEqual([attributeId unsignedLongValue], [myAttributeId unsignedLongValue]);
-        [callExpectation fulfill];
-        completion(nil, myError);
-    };
+    _handleReadClusterStateCache
+        = ^(id controller, NSNumber * nodeId, NSNumber * _Nullable endpointId, NSNumber * _Nullable clusterId,
+            NSNumber * _Nullable attributeId, void (^completion)(id _Nullable values, NSError * _Nullable error)) {
+              NSLog(@"Read attribute cache called");
+              XCTAssertTrue([controller isEqualToString:uuid]);
+              XCTAssertEqual([nodeId unsignedLongLongValue], myNodeId);
+              XCTAssertEqual([endpointId unsignedShortValue], [myEndpointId unsignedShortValue]);
+              XCTAssertEqual([clusterId unsignedLongValue], [myClusterId unsignedLongValue]);
+              XCTAssertEqual([attributeId unsignedLongValue], [myAttributeId unsignedLongValue]);
+              [callExpectation fulfill];
+              completion(nil, myError);
+          };
 
-    [attributeCacheContainer subscribeWithDeviceController:_remoteDeviceController
-                                                  deviceID:@(myNodeId)
-                                                    params:nil
-                                                     queue:dispatch_get_main_queue()
-                                                completion:^(NSError * _Nullable error) {
-                                                    NSLog(@"Subscribe completion called with error: %@", error);
-                                                    XCTAssertNil(error);
-                                                    [subscribeExpectation fulfill];
-                                                }];
+    [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController
+                                                     deviceID:@(myNodeId)
+                                                       params:nil
+                                                        queue:dispatch_get_main_queue()
+                                                   completion:^(NSError * _Nullable error) {
+                                                       NSLog(@"Subscribe completion called with error: %@", error);
+                                                       XCTAssertNil(error);
+                                                       [subscribeExpectation fulfill];
+                                                   }];
     [self waitForExpectations:@[ subscribeExpectation ] timeout:kTimeoutInSeconds];
 
     _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"];
-    [attributeCacheContainer
-        readAttributeWithEndpointID:myEndpointId
-                          clusterID:myClusterId
-                        attributeID:myAttributeId
-                              queue:dispatch_get_main_queue()
-                         completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
-                             NSLog(@"Read cached value: %@", values);
-                             XCTAssertNil(values);
-                             XCTAssertNotNil(error);
-                             [responseExpectation fulfill];
-                         }];
+    [clusterStateCacheContainer
+        readAttributesWithEndpointID:myEndpointId
+                           clusterID:myClusterId
+                         attributeID:myAttributeId
+                               queue:dispatch_get_main_queue()
+                          completion:^(NSArray *> * _Nullable values, NSError * _Nullable error) {
+                              NSLog(@"Read cached value: %@", values);
+                              XCTAssertNil(values);
+                              XCTAssertNotNil(error);
+                              [responseExpectation fulfill];
+                          }];
     [self waitForExpectations:@[ callExpectation, responseExpectation, _xpcDisconnectExpectation ] timeout:kTimeoutInSeconds];
     XCTAssertNil(_xpcConnection);
 }
diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
index b096079d2328ff..bc1135cf66c21f 100644
--- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
+++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj
@@ -70,7 +70,7 @@
 		51E51FBF282AD37A00FC978D /* MTRDeviceControllerStartupParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E51FBC282AD37A00FC978D /* MTRDeviceControllerStartupParams.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		51E51FC0282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51E51FBD282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h */; };
 		51E51FC1282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51E51FBE282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm */; };
-		5A60370827EA1FF60020DB79 /* MTRAttributeCacheContainer+XPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A60370727EA1FF60020DB79 /* MTRAttributeCacheContainer+XPC.h */; };
+		5A60370827EA1FF60020DB79 /* MTRClusterStateCacheContainer+XPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A60370727EA1FF60020DB79 /* MTRClusterStateCacheContainer+XPC.h */; };
 		5A6FEC9027B563D900F25F42 /* MTRDeviceControllerOverXPC.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A6FEC8F27B563D900F25F42 /* MTRDeviceControllerOverXPC.m */; };
 		5A6FEC9227B5669C00F25F42 /* MTRDeviceControllerOverXPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6FEC8D27B5624E00F25F42 /* MTRDeviceControllerOverXPC.h */; };
 		5A6FEC9627B5983000F25F42 /* MTRDeviceControllerXPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A6FEC9527B5983000F25F42 /* MTRDeviceControllerXPCConnection.m */; };
@@ -82,9 +82,9 @@
 		5A7947E427C0129600434CF2 /* MTRDeviceController+XPC.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A7947E327C0129500434CF2 /* MTRDeviceController+XPC.m */; };
 		5A7947E527C0129F00434CF2 /* MTRDeviceController+XPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A7947E227C0101200434CF2 /* MTRDeviceController+XPC.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		5A830D6C27CFCF590053B85D /* MTRDeviceControllerOverXPC_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A830D6B27CFCF590053B85D /* MTRDeviceControllerOverXPC_Internal.h */; };
-		5ACDDD7A27CD129700EFD68A /* MTRAttributeCacheContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ACDDD7927CD129700EFD68A /* MTRAttributeCacheContainer.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		5ACDDD7D27CD16D200EFD68A /* MTRAttributeCacheContainer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5ACDDD7C27CD16D200EFD68A /* MTRAttributeCacheContainer.mm */; };
-		5ACDDD7E27CD3F3A00EFD68A /* MTRAttributeCacheContainer_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ACDDD7B27CD14AF00EFD68A /* MTRAttributeCacheContainer_Internal.h */; };
+		5ACDDD7A27CD129700EFD68A /* MTRClusterStateCacheContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ACDDD7927CD129700EFD68A /* MTRClusterStateCacheContainer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5ACDDD7D27CD16D200EFD68A /* MTRClusterStateCacheContainer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5ACDDD7C27CD16D200EFD68A /* MTRClusterStateCacheContainer.mm */; };
+		5ACDDD7E27CD3F3A00EFD68A /* MTRClusterStateCacheContainer_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5ACDDD7B27CD14AF00EFD68A /* MTRClusterStateCacheContainer_Internal.h */; };
 		5AE6D4E427A99041001F2493 /* MTRDeviceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AE6D4E327A99041001F2493 /* MTRDeviceTests.m */; };
 		7534F12828BFF20300390851 /* MTRDeviceAttestationDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7534F12628BFF20300390851 /* MTRDeviceAttestationDelegate.mm */; };
 		7534F12928BFF20300390851 /* MTRDeviceAttestationDelegate_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7534F12728BFF20300390851 /* MTRDeviceAttestationDelegate_Internal.h */; };
@@ -212,7 +212,7 @@
 		51E51FBC282AD37A00FC978D /* MTRDeviceControllerStartupParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerStartupParams.h; sourceTree = ""; };
 		51E51FBD282AD37A00FC978D /* MTRDeviceControllerStartupParams_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerStartupParams_Internal.h; sourceTree = ""; };
 		51E51FBE282AD37A00FC978D /* MTRDeviceControllerStartupParams.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDeviceControllerStartupParams.mm; sourceTree = ""; };
-		5A60370727EA1FF60020DB79 /* MTRAttributeCacheContainer+XPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MTRAttributeCacheContainer+XPC.h"; sourceTree = ""; };
+		5A60370727EA1FF60020DB79 /* MTRClusterStateCacheContainer+XPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MTRClusterStateCacheContainer+XPC.h"; sourceTree = ""; };
 		5A6FEC8B27B5609C00F25F42 /* MTRDeviceOverXPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRDeviceOverXPC.h; sourceTree = ""; };
 		5A6FEC8D27B5624E00F25F42 /* MTRDeviceControllerOverXPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerOverXPC.h; sourceTree = ""; };
 		5A6FEC8F27B563D900F25F42 /* MTRDeviceControllerOverXPC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRDeviceControllerOverXPC.m; sourceTree = ""; };
@@ -224,9 +224,9 @@
 		5A7947E227C0101200434CF2 /* MTRDeviceController+XPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MTRDeviceController+XPC.h"; sourceTree = ""; };
 		5A7947E327C0129500434CF2 /* MTRDeviceController+XPC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "MTRDeviceController+XPC.m"; sourceTree = ""; };
 		5A830D6B27CFCF590053B85D /* MTRDeviceControllerOverXPC_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRDeviceControllerOverXPC_Internal.h; sourceTree = ""; };
-		5ACDDD7927CD129700EFD68A /* MTRAttributeCacheContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRAttributeCacheContainer.h; sourceTree = ""; };
-		5ACDDD7B27CD14AF00EFD68A /* MTRAttributeCacheContainer_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRAttributeCacheContainer_Internal.h; sourceTree = ""; };
-		5ACDDD7C27CD16D200EFD68A /* MTRAttributeCacheContainer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRAttributeCacheContainer.mm; sourceTree = ""; };
+		5ACDDD7927CD129700EFD68A /* MTRClusterStateCacheContainer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRClusterStateCacheContainer.h; sourceTree = ""; };
+		5ACDDD7B27CD14AF00EFD68A /* MTRClusterStateCacheContainer_Internal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRClusterStateCacheContainer_Internal.h; sourceTree = ""; };
+		5ACDDD7C27CD16D200EFD68A /* MTRClusterStateCacheContainer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRClusterStateCacheContainer.mm; sourceTree = ""; };
 		5AE6D4E327A99041001F2493 /* MTRDeviceTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRDeviceTests.m; sourceTree = ""; };
 		7534F12628BFF20300390851 /* MTRDeviceAttestationDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDeviceAttestationDelegate.mm; sourceTree = ""; };
 		7534F12728BFF20300390851 /* MTRDeviceAttestationDelegate_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceAttestationDelegate_Internal.h; sourceTree = ""; };
@@ -395,10 +395,10 @@
 				7596A84628762783004DAE0E /* MTRAsyncCallbackWorkQueue.h */,
 				7596A84728762783004DAE0E /* MTRAsyncCallbackWorkQueue.mm */,
 				2C8C8FBE253E0C2100797F05 /* MTRStorage.h */,
-				5ACDDD7927CD129700EFD68A /* MTRAttributeCacheContainer.h */,
-				5A60370727EA1FF60020DB79 /* MTRAttributeCacheContainer+XPC.h */,
-				5ACDDD7B27CD14AF00EFD68A /* MTRAttributeCacheContainer_Internal.h */,
-				5ACDDD7C27CD16D200EFD68A /* MTRAttributeCacheContainer.mm */,
+				5ACDDD7927CD129700EFD68A /* MTRClusterStateCacheContainer.h */,
+				5A60370727EA1FF60020DB79 /* MTRClusterStateCacheContainer+XPC.h */,
+				5ACDDD7B27CD14AF00EFD68A /* MTRClusterStateCacheContainer_Internal.h */,
+				5ACDDD7C27CD16D200EFD68A /* MTRClusterStateCacheContainer.mm */,
 				997DED152695343400975E97 /* MTRThreadOperationalDataset.mm */,
 				997DED172695344800975E97 /* MTRThreadOperationalDataset.h */,
 				2C8C8FBD253E0C2100797F05 /* MTRPersistentStorageDelegateBridge.h */,
@@ -511,7 +511,7 @@
 				51B22C222740CB1D008D5055 /* MTRCommandPayloadsObjc.h in Headers */,
 				51B22C1E2740CB0A008D5055 /* MTRStructsObjc.h in Headers */,
 				2CB7163B252E8A7B0026E2BB /* MTRDeviceControllerDelegateBridge.h in Headers */,
-				5ACDDD7A27CD129700EFD68A /* MTRAttributeCacheContainer.h in Headers */,
+				5ACDDD7A27CD129700EFD68A /* MTRClusterStateCacheContainer.h in Headers */,
 				5A6FEC9227B5669C00F25F42 /* MTRDeviceControllerOverXPC.h in Headers */,
 				2C1B027B2641DB4E00780EF1 /* MTROperationalCredentialsDelegate.h in Headers */,
 				7596A85728788557004DAE0E /* MTRClusters.h in Headers */,
@@ -543,8 +543,8 @@
 				27A53C1727FBC6920053F131 /* MTRAttestationTrustStoreBridge.h in Headers */,
 				5A830D6C27CFCF590053B85D /* MTRDeviceControllerOverXPC_Internal.h in Headers */,
 				88EBF8D027FABDD500686BC1 /* MTRDeviceAttestationDelegateBridge.h in Headers */,
-				5A60370827EA1FF60020DB79 /* MTRAttributeCacheContainer+XPC.h in Headers */,
-				5ACDDD7E27CD3F3A00EFD68A /* MTRAttributeCacheContainer_Internal.h in Headers */,
+				5A60370827EA1FF60020DB79 /* MTRClusterStateCacheContainer+XPC.h in Headers */,
+				5ACDDD7E27CD3F3A00EFD68A /* MTRClusterStateCacheContainer_Internal.h in Headers */,
 				5136661328067D550025EDAE /* MTRDeviceController_Internal.h in Headers */,
 				998F286D26D55E10001846C6 /* MTRKeypair.h in Headers */,
 				1ED276E426C5832500547A89 /* MTRCluster.h in Headers */,
@@ -721,7 +721,7 @@
 				517BF3F1282B62B800A8B7DB /* MTRCertificates.mm in Sources */,
 				5A6FEC9627B5983000F25F42 /* MTRDeviceControllerXPCConnection.m in Sources */,
 				511913FB28C100EF009235E9 /* MTRBaseSubscriptionCallback.mm in Sources */,
-				5ACDDD7D27CD16D200EFD68A /* MTRAttributeCacheContainer.mm in Sources */,
+				5ACDDD7D27CD16D200EFD68A /* MTRClusterStateCacheContainer.mm in Sources */,
 				513DDB8A2761F6F900DAA01A /* MTRAttributeTLVValueDecoder.mm in Sources */,
 				2FD775552695557E00FF4B12 /* error-mapping.cpp in Sources */,
 				5A7947E427C0129600434CF2 /* MTRDeviceController+XPC.m in Sources */,

From 0a9e9b22bb8e11f70cf03b29742b2362fca091bc Mon Sep 17 00:00:00 2001
From: Sharad Binjola <31142146+sharadb-amazon@users.noreply.github.com>
Date: Thu, 17 Nov 2022 07:03:12 -0800
Subject: [PATCH 22/36] tv-casting-app: Adding new app params (#23624)

* Adding new app params

* Using only nodeId to check two VideoPlayers for equality

* Checking for null data on the targetNavigation_navigateTarget command in JNI
---
 .../jni/com/chip/casting/AppParameters.java   |  27 +++
 .../jni/com/chip/casting/TvCastingApp.java    |  10 +-
 .../app/src/main/jni/cpp/TvCastingApp-JNI.cpp |  10 +-
 .../project.pbxproj                           |  10 +-
 .../MatterTvCastingBridge/AppParameters.h     |  10 +-
 .../{AppParameters.m => AppParameters.mm}     |  11 +-
 .../CastingServerBridge.mm                    | 122 +++++++-----
 .../CommissionableDataProviderImpl.hpp        | 180 ++++++++++++++++++
 .../include/TargetVideoPlayerInfo.h           |   5 +-
 9 files changed, 322 insertions(+), 63 deletions(-)
 rename examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/{AppParameters.m => AppParameters.mm} (77%)
 create mode 100644 examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionableDataProviderImpl.hpp

diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/AppParameters.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/AppParameters.java
index a98f9d8bbd4f86..78cbad859fc961 100644
--- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/AppParameters.java
+++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/AppParameters.java
@@ -25,6 +25,9 @@ public class AppParameters {
 
   private byte[] rotatingDeviceIdUniqueId;
   private DACProvider dacProvider = TEST_DAC_PROVIDER;
+  private String spake2pVerifierBase64;
+  private String Spake2pSaltBase64;
+  private int spake2pIterationCount;
   private int setupPasscode = TEST_SETUP_PASSCODE;
   private int discriminator = TEST_DISCRIMINATOR;
 
@@ -44,6 +47,30 @@ public void setDacProvider(DACProvider dacProvider) {
     this.dacProvider = dacProvider;
   }
 
+  public String getSpake2pVerifierBase64() {
+    return spake2pVerifierBase64;
+  }
+
+  public void setSpake2pVerifierBase64(String spake2pVerifierBase64) {
+    this.spake2pVerifierBase64 = spake2pVerifierBase64;
+  }
+
+  public String getSpake2pSaltBase64() {
+    return Spake2pSaltBase64;
+  }
+
+  public void setSpake2pSaltBase64(String spake2pSaltBase64) {
+    Spake2pSaltBase64 = spake2pSaltBase64;
+  }
+
+  public int getSpake2pIterationCount() {
+    return spake2pIterationCount;
+  }
+
+  public void setSpake2pIterationCount(int spake2pIterationCount) {
+    this.spake2pIterationCount = spake2pIterationCount;
+  }
+
   public int getSetupPasscode() {
     return setupPasscode;
   }
diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/TvCastingApp.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/TvCastingApp.java
index b099483a8f2856..d483844a79c26b 100644
--- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/TvCastingApp.java
+++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/TvCastingApp.java
@@ -46,6 +46,10 @@ public class TvCastingApp {
   private NsdManagerServiceResolver.NsdManagerResolverAvailState nsdManagerResolverAvailState;
 
   public boolean initApp(Context applicationContext, AppParameters appParameters) {
+    if (applicationContext == null || appParameters == null) {
+      return false;
+    }
+
     this.applicationContext = applicationContext;
     nsdManagerResolverAvailState = new NsdManagerServiceResolver.NsdManagerResolverAvailState();
     NsdManagerServiceResolver nsdManagerServiceResolver =
@@ -62,7 +66,11 @@ public boolean initApp(Context applicationContext, AppParameters appParameters)
             new DiagnosticDataProviderImpl(applicationContext));
 
     chipPlatform.updateCommissionableDataProviderData(
-        null, null, 0, appParameters.getSetupPasscode(), appParameters.getDiscriminator());
+        appParameters.getSpake2pVerifierBase64(),
+        appParameters.getSpake2pSaltBase64(),
+        appParameters.getSpake2pIterationCount(),
+        appParameters.getSetupPasscode(),
+        appParameters.getDiscriminator());
 
     chipAppServer = new ChipAppServer();
     chipAppServer.startApp();
diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/TvCastingApp-JNI.cpp b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/TvCastingApp-JNI.cpp
index c58df8f2cc4f91..7ac67e67f4f7d6 100644
--- a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/TvCastingApp-JNI.cpp
+++ b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/TvCastingApp-JNI.cpp
@@ -1358,7 +1358,7 @@ JNI_METHOD(jboolean, targetNavigator_1navigateTarget)
 
     ChipLogProgress(AppServer, "JNI_METHOD targetNavigator_navigateTarget called");
 
-    const char * nativeData = env->GetStringUTFChars(data, 0);
+    const char * nativeData = (data != nullptr ? env->GetStringUTFChars(data, 0) : nullptr);
 
     TargetEndpointInfo endpoint;
     CHIP_ERROR err = convertJContentAppToTargetEndpointInfo(contentApp, endpoint);
@@ -1371,12 +1371,16 @@ JNI_METHOD(jboolean, targetNavigator_1navigateTarget)
                  ChipLogError(AppServer, "MatterCallbackHandlerJNI.SetUp failed %" CHIP_ERROR_FORMAT, err.Format()));
 
     err = CastingServer::GetInstance()->TargetNavigator_NavigateTarget(
-        &endpoint, static_cast(target), chip::MakeOptional(CharSpan::fromCharString(nativeData)),
+        &endpoint, static_cast(target),
+        (nativeData != nullptr ? chip::MakeOptional(CharSpan::fromCharString(nativeData)) : chip::NullOptional),
         [](CHIP_ERROR err) { TvCastingAppJNIMgr().getMediaCommandResponseHandler(TargetNavigator_NavigateTarget).Handle(err); });
     VerifyOrExit(CHIP_NO_ERROR == err,
                  ChipLogError(AppServer, "CastingServer.TargetNavigator_NavigateTarget failed %" CHIP_ERROR_FORMAT, err.Format()));
 
-    env->ReleaseStringUTFChars(data, nativeData);
+    if (nativeData != nullptr)
+    {
+        env->ReleaseStringUTFChars(data, nativeData);
+    }
 exit:
     if (err != CHIP_NO_ERROR)
     {
diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj
index 45f5d8a68741c9..7736fef3f15030 100644
--- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj
+++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj
@@ -11,7 +11,7 @@
 		3C4E53B028E4F28100F293E8 /* MediaPlaybackTypes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E53AF28E4F28100F293E8 /* MediaPlaybackTypes.mm */; };
 		3C4E53B228E5184C00F293E8 /* TargetNavigatorTypes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E53B128E5184C00F293E8 /* TargetNavigatorTypes.mm */; };
 		3C4E53B628E5595A00F293E8 /* ContentLauncherTypes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C4E53B528E5595A00F293E8 /* ContentLauncherTypes.mm */; };
-		3C66FBFC290327BB00B63FE7 /* AppParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C66FBFB290327BB00B63FE7 /* AppParameters.m */; };
+		3C66FBFC290327BB00B63FE7 /* AppParameters.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C66FBFB290327BB00B63FE7 /* AppParameters.mm */; };
 		3C81C74C28F7A777001CB9D1 /* ContentApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3C81C74B28F7A777001CB9D1 /* ContentApp.mm */; };
 		3C81C75028F7A7D3001CB9D1 /* VideoPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C81C74F28F7A7D3001CB9D1 /* VideoPlayer.m */; };
 		3CCB87212869085400771BAD /* MatterTvCastingBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CCB87202869085400771BAD /* MatterTvCastingBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -27,6 +27,7 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		3C0D9CDF2920A30C00D3332B /* CommissionableDataProviderImpl.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CommissionableDataProviderImpl.hpp; sourceTree = ""; };
 		3C4AE64E286A7D40005B52A4 /* OnboardingPayload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OnboardingPayload.h; sourceTree = ""; };
 		3C4AE64F286A7D4D005B52A4 /* OnboardingPayload.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OnboardingPayload.m; sourceTree = ""; };
 		3C4E53AF28E4F28100F293E8 /* MediaPlaybackTypes.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaPlaybackTypes.mm; sourceTree = ""; };
@@ -35,7 +36,7 @@
 		3C4E53B428E5593700F293E8 /* ContentLauncherTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentLauncherTypes.h; sourceTree = ""; };
 		3C4E53B528E5595A00F293E8 /* ContentLauncherTypes.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ContentLauncherTypes.mm; sourceTree = ""; };
 		3C66FBFA2903279A00B63FE7 /* AppParameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppParameters.h; sourceTree = ""; };
-		3C66FBFB290327BB00B63FE7 /* AppParameters.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppParameters.m; sourceTree = ""; };
+		3C66FBFB290327BB00B63FE7 /* AppParameters.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppParameters.mm; sourceTree = ""; };
 		3C81C74B28F7A777001CB9D1 /* ContentApp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ContentApp.mm; sourceTree = ""; };
 		3C81C74E28F7A7AE001CB9D1 /* ContentApp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContentApp.h; sourceTree = ""; };
 		3C81C74F28F7A7D3001CB9D1 /* VideoPlayer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VideoPlayer.m; sourceTree = ""; };
@@ -93,7 +94,7 @@
 				3CCB873A286A593700771BAD /* CastingServerBridge.h */,
 				3CCB873D286A593700771BAD /* CastingServerBridge.mm */,
 				3C66FBFA2903279A00B63FE7 /* AppParameters.h */,
-				3C66FBFB290327BB00B63FE7 /* AppParameters.m */,
+				3C66FBFB290327BB00B63FE7 /* AppParameters.mm */,
 				3CCB873B286A593700771BAD /* DiscoveredNodeData.h */,
 				3CCB8739286A593700771BAD /* DiscoveredNodeData.mm */,
 				3CCB873C286A593700771BAD /* ConversionUtils.hpp */,
@@ -112,6 +113,7 @@
 				3C4E53AF28E4F28100F293E8 /* MediaPlaybackTypes.mm */,
 				3C4E53B328E5185F00F293E8 /* TargetNavigatorTypes.h */,
 				3C4E53B128E5184C00F293E8 /* TargetNavigatorTypes.mm */,
+				3C0D9CDF2920A30C00D3332B /* CommissionableDataProviderImpl.hpp */,
 			);
 			path = MatterTvCastingBridge;
 			sourceTree = "";
@@ -226,7 +228,7 @@
 				3C81C75028F7A7D3001CB9D1 /* VideoPlayer.m in Sources */,
 				3CCB8744286A593700771BAD /* ConversionUtils.mm in Sources */,
 				3C4E53B028E4F28100F293E8 /* MediaPlaybackTypes.mm in Sources */,
-				3C66FBFC290327BB00B63FE7 /* AppParameters.m in Sources */,
+				3C66FBFC290327BB00B63FE7 /* AppParameters.mm in Sources */,
 				3CCB873F286A593700771BAD /* DiscoveredNodeData.mm in Sources */,
 				3C81C74C28F7A777001CB9D1 /* ContentApp.mm in Sources */,
 				3C4AE650286A7D4D005B52A4 /* OnboardingPayload.m in Sources */,
diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.h
index b34590303db00a..e1da8ce04cddfb 100644
--- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.h
+++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.h
@@ -17,6 +17,8 @@
 
 #import 
 
+#import "OnboardingPayload.h"
+
 #ifndef AppParameters_h
 #define AppParameters_h
 
@@ -24,7 +26,13 @@
 
 @property NSData * rotatingDeviceIdUniqueId;
 
-- (AppParameters *)initWithRotatingDeviceIdUniqueId:(NSData *)rotatingDeviceIdUniqueId;
+@property OnboardingPayload * onboardingPayload;
+
+@property uint32_t spake2pIterationCount;
+
+@property NSData * spake2pSalt;
+
+@property NSData * spake2pVerifier;
 
 @end
 
diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.m b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.mm
similarity index 77%
rename from examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.m
rename to examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.mm
index 287d4ab40fd57c..906888dbbeddc5 100644
--- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.m
+++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/AppParameters.mm
@@ -21,13 +21,12 @@
 
 @implementation AppParameters
 
-- (AppParameters *)initWithRotatingDeviceIdUniqueId:(NSData *)rotatingDeviceIdUniqueId
+/**
+ * Initialize with default values
+ */
+- (AppParameters *)init
 {
-    self = [super init];
-    if (self) {
-        _rotatingDeviceIdUniqueId = rotatingDeviceIdUniqueId;
-    }
-    return self;
+    return [super init];
 }
 
 @end
diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm
index 9ba421b54723ce..86ed73bde4e874 100644
--- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm
+++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm
@@ -18,6 +18,7 @@
 #import "CastingServerBridge.h"
 #import "CastingServer.h"
 
+#import "CommissionableDataProviderImpl.hpp"
 #import "ConversionUtils.hpp"
 #import "MatterCallbacks.h"
 #import "OnboardingPayload.h"
@@ -29,15 +30,18 @@
 #include 
 #include 
 #include 
-#include 
 
 @interface CastingServerBridge ()
 
-// queue used to serialize all work performed by the CastingServerBridge
-@property (atomic, readonly) dispatch_queue_t chipWorkQueue;
+@property AppParameters * appParameters;
 
 @property OnboardingPayload * _Nonnull onboardingPayload;
 
+@property chip::DeviceLayer::CommissionableDataProviderImpl * commissionableDataProvider;
+
+// queue used to serialize all work performed by the CastingServerBridge
+@property (atomic) dispatch_queue_t chipWorkQueue;
+
 @property void (^_Nonnull commissioningCompleteCallback)(bool);
 
 @property void (^_Nonnull onConnectionSuccessCallback)(VideoPlayer *);
@@ -87,47 +91,12 @@ - (instancetype)init
             return nil;
         }
 
-        chip::DeviceLayer::TestOnlyCommissionableDataProvider TestOnlyCommissionableDataProvider;
-        uint32_t defaultTestPasscode = 0;
-        VerifyOrDie(TestOnlyCommissionableDataProvider.GetSetupPasscode(defaultTestPasscode) == CHIP_NO_ERROR);
-        uint16_t defaultTestSetupDiscriminator = 0;
-        VerifyOrDie(TestOnlyCommissionableDataProvider.GetSetupDiscriminator(defaultTestSetupDiscriminator) == CHIP_NO_ERROR);
-        _onboardingPayload = [[OnboardingPayload alloc] initWithSetupPasscode:defaultTestPasscode
-                                                           setupDiscriminator:defaultTestSetupDiscriminator];
-
-        // Initialize device attestation config
-        SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider());
-
-        // Initialize device attestation verifier from a constant version
-        {
-            // TODO: Replace testingRootStore with a AttestationTrustStore that has the necessary official PAA roots available
-            const chip::Credentials::AttestationTrustStore * testingRootStore = chip::Credentials::GetTestAttestationTrustStore();
-            SetDeviceAttestationVerifier(GetDefaultDACVerifier(testingRootStore));
-        }
-
-        // init app Server
-        static chip::CommonCaseDeviceServerInitParams initParams;
-        err = initParams.InitializeStaticResourcesBeforeServerInit();
-        if (err != CHIP_NO_ERROR) {
-            ChipLogError(AppServer, "InitializeStaticResourcesBeforeServerInit failed: %s", ErrorStr(err));
-            return nil;
-        }
-        err = chip::Server::GetInstance().Init(initParams);
-        if (err != CHIP_NO_ERROR) {
-            ChipLogError(AppServer, "chip::Server init failed: %s", ErrorStr(err));
-            return nil;
-        }
-
-        _chipWorkQueue = chip::DeviceLayer::PlatformMgrImpl().GetWorkQueue();
-
         _commandResponseCallbacks = [NSMutableDictionary dictionary];
         _subscriptionEstablishedCallbacks = [NSMutableDictionary dictionary];
         _subscriptionReadSuccessCallbacks = [NSMutableDictionary dictionary];
         _subscriptionReadFailureCallbacks = [NSMutableDictionary dictionary];
         _readSuccessCallbacks = [NSMutableDictionary dictionary];
         _readFailureCallbacks = [NSMutableDictionary dictionary];
-
-        chip::DeviceLayer::PlatformMgrImpl().StartEventLoopTask();
     }
     return self;
 }
@@ -138,17 +107,82 @@ - (void)initApp:(AppParameters * _Nullable)appParameters
 {
     ChipLogProgress(AppServer, "CastingServerBridge().initApp() called");
 
-    dispatch_async(_chipWorkQueue, ^{
-        bool initAppStatus = true;
+    CHIP_ERROR err = CHIP_NO_ERROR;
+    _commissionableDataProvider = new chip::DeviceLayer::CommissionableDataProviderImpl();
+    _appParameters = appParameters;
+    AppParams cppAppParams;
+    if (_appParameters != nil) {
+        err = [ConversionUtils convertToCppAppParamsInfoFrom:_appParameters outAppParams:cppAppParams];
+        if (err != CHIP_NO_ERROR) {
+            ChipLogError(AppServer, "AppParameters conversion failed: %s", ErrorStr(err));
+            return;
+        }
 
+        // set fields in commissionableDataProvider
+        _commissionableDataProvider->SetSpake2pIterationCount(_appParameters.spake2pIterationCount);
+        if (_appParameters.spake2pSalt != nil) {
+            chip::ByteSpan spake2pSaltSpan
+                = chip::ByteSpan(static_cast(_appParameters.spake2pSalt.bytes), _appParameters.spake2pSalt.length);
+            _commissionableDataProvider->SetSpake2pSalt(spake2pSaltSpan);
+        }
+
+        if (_appParameters.spake2pVerifier != nil) {
+            chip::ByteSpan spake2pVerifierSpan = chip::ByteSpan(
+                static_cast(_appParameters.spake2pVerifier.bytes), _appParameters.spake2pVerifier.length);
+            _commissionableDataProvider->SetSpake2pSalt(spake2pVerifierSpan);
+        }
+
+        if (_appParameters.onboardingPayload != nil) {
+            _commissionableDataProvider->SetSetupPasscode(_appParameters.onboardingPayload.setupPasscode);
+            _commissionableDataProvider->SetSetupDiscriminator(_appParameters.onboardingPayload.setupDiscriminator);
+        }
+
+        uint32_t setupPasscode = 0;
+        uint16_t setupDiscriminator = 0;
+        _commissionableDataProvider->GetSetupPasscode(setupPasscode);
+        _commissionableDataProvider->GetSetupDiscriminator(setupDiscriminator);
+        _onboardingPayload = [[OnboardingPayload alloc] initWithSetupPasscode:setupPasscode setupDiscriminator:setupDiscriminator];
+    }
+    chip::DeviceLayer::SetCommissionableDataProvider(_commissionableDataProvider);
+
+    // Initialize device attestation config
+    SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider());
+
+    // Initialize device attestation verifier from a constant version
+    {
+        // TODO: Replace testingRootStore with a AttestationTrustStore that has the necessary official PAA roots available
+        const chip::Credentials::AttestationTrustStore * testingRootStore = chip::Credentials::GetTestAttestationTrustStore();
+        SetDeviceAttestationVerifier(GetDefaultDACVerifier(testingRootStore));
+    }
+
+    // init app Server
+    static chip::CommonCaseDeviceServerInitParams initParams;
+    err = initParams.InitializeStaticResourcesBeforeServerInit();
+    if (err != CHIP_NO_ERROR) {
+        ChipLogError(AppServer, "InitializeStaticResourcesBeforeServerInit failed: %s", ErrorStr(err));
+        return;
+    }
+
+    err = chip::Server::GetInstance().Init(initParams);
+    if (err != CHIP_NO_ERROR) {
+        ChipLogError(AppServer, "chip::Server init failed: %s", ErrorStr(err));
+        return;
+    }
+
+    _chipWorkQueue = chip::DeviceLayer::PlatformMgrImpl().GetWorkQueue();
+
+    chip::DeviceLayer::PlatformMgrImpl().StartEventLoopTask();
+
+    dispatch_async(_chipWorkQueue, ^{
         CHIP_ERROR err = CHIP_NO_ERROR;
-        AppParams appParams;
-        if (appParameters == nil) {
+        AppParams appParam;
+        if (appParameters != nil) {
             err = CastingServer::GetInstance()->Init();
-        } else if ((err = [ConversionUtils convertToCppAppParamsInfoFrom:appParameters outAppParams:appParams]) == CHIP_NO_ERROR) {
-            err = CastingServer::GetInstance()->Init(&appParams);
+        } else if ((err = [ConversionUtils convertToCppAppParamsInfoFrom:appParameters outAppParams:appParam]) == CHIP_NO_ERROR) {
+            err = CastingServer::GetInstance()->Init(&appParam);
         }
 
+        Boolean initAppStatus = true;
         if (err != CHIP_NO_ERROR) {
             ChipLogError(AppServer, "CastingServerBridge().initApp() failed: %" CHIP_ERROR_FORMAT, err.Format());
             initAppStatus = false;
diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionableDataProviderImpl.hpp b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionableDataProviderImpl.hpp
new file mode 100644
index 00000000000000..872feb587837d3
--- /dev/null
+++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionableDataProviderImpl.hpp
@@ -0,0 +1,180 @@
+/**
+ *
+ *    Copyright (c) 2020-2022 Project CHIP Authors
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#ifndef CommissionableDataProviderImpl_h
+#define CommissionableDataProviderImpl_h
+
+#pragma once
+
+#include 
+#include 
+#include 
+
+namespace chip {
+namespace DeviceLayer {
+
+class CommissionableDataProviderImpl : public CommissionableDataProvider
+{
+public:
+    CommissionableDataProviderImpl() {}
+
+    CHIP_ERROR GetSetupPasscode(uint32_t & setupPasscode) override
+    {
+        if (mSetupPasscode > 0)
+        {
+            setupPasscode = mSetupPasscode;
+        }
+        else
+        {
+            setupPasscode = kDefaultTestPasscode;
+        }
+
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR SetSetupPasscode(uint32_t setupPasscode) override
+    {
+        mSetupPasscode = setupPasscode;
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR GetSetupDiscriminator(uint16_t & setupDiscriminator) override
+    {
+        if (mSetupDiscriminator > 0)
+        {
+            setupDiscriminator = mSetupDiscriminator;
+        }
+        else
+        {
+            setupDiscriminator = kDefaultTestDiscriminator;
+        }
+
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR SetSetupDiscriminator(uint16_t setupDiscriminator) override
+    {
+        mSetupDiscriminator = setupDiscriminator;
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR GetSpake2pIterationCount(uint32_t & iterationCount) override
+    {
+        if (mSetupDiscriminator > 0)
+        {
+            iterationCount = mSpake2pIterationCount;
+        }
+        else
+        {
+            iterationCount = kDefaultTestVerifierIterationCount;
+        }
+
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR SetSpake2pIterationCount(uint32_t iterationCount)
+    {
+        mSpake2pIterationCount = iterationCount;
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR GetSpake2pSalt(MutableByteSpan & saltBuf) override
+    {
+        size_t saltLen = mSpake2pSalt.data() == nullptr ? sizeof(kDefaultTestVerifierSalt) : mSpake2pSalt.size();
+        if (saltBuf.size() < saltLen)
+        {
+            return CHIP_ERROR_BUFFER_TOO_SMALL;
+        }
+
+        memcpy(saltBuf.data(), mSpake2pSalt.data() == nullptr ? kDefaultTestVerifierSalt : mSpake2pSalt.data(), saltLen);
+        saltBuf.reduce_size(saltLen);
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR SetSpake2pSalt(ByteSpan saltBuf)
+    {
+        size_t saltLen = saltBuf.size();
+        if (chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length < saltLen)
+        {
+            return CHIP_ERROR_BUFFER_TOO_SMALL;
+        }
+
+        mSpake2pSalt = MutableByteSpan(mSpake2pSaltBuf, chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length);
+
+        memcpy(mSpake2pSalt.data(), saltBuf.data(), saltLen);
+        mSpake2pSalt.reduce_size(saltLen);
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR GetSpake2pVerifier(MutableByteSpan & verifierBuf, size_t & outVerifierLen) override
+    {
+        outVerifierLen = mSpake2pVerifier.data() == nullptr ? sizeof(kDefaultTestVerifier) : mSpake2pVerifier.size();
+        if (verifierBuf.size() < outVerifierLen)
+        {
+            return CHIP_ERROR_BUFFER_TOO_SMALL;
+        }
+        memcpy(verifierBuf.data(), mSpake2pVerifier.data() == nullptr ? kDefaultTestVerifier : mSpake2pVerifier.data(),
+               outVerifierLen);
+        verifierBuf.reduce_size(outVerifierLen);
+        return CHIP_NO_ERROR;
+    }
+
+    CHIP_ERROR SetSpake2pVerifier(MutableByteSpan verifierBuf)
+    {
+        size_t inVerifierBufLen = verifierBuf.size();
+        if (chip::Crypto::kSpake2p_VerifierSerialized_Length < inVerifierBufLen)
+        {
+            return CHIP_ERROR_BUFFER_TOO_SMALL;
+        }
+
+        mSpake2pVerifier = MutableByteSpan(mSpake2pSaltBuf, chip::Crypto::kSpake2p_VerifierSerialized_Length);
+
+        memcpy(mSpake2pVerifier.data(), verifierBuf.data(), inVerifierBufLen);
+        mSpake2pVerifier.reduce_size(inVerifierBufLen);
+        return CHIP_NO_ERROR;
+    }
+
+private:
+    static constexpr uint32_t kDefaultTestPasscode               = 20202021;
+    static constexpr uint16_t kDefaultTestDiscriminator          = 3840;
+    static constexpr uint32_t kDefaultTestVerifierIterationCount = 1000;
+    static constexpr uint8_t kDefaultTestVerifierSalt[16]        = {
+        0x53, 0x50, 0x41, 0x4b, 0x45, 0x32, 0x50, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x53, 0x61, 0x6c, 0x74,
+    };
+    static constexpr uint8_t kDefaultTestVerifier[97] = {
+        0xb9, 0x61, 0x70, 0xaa, 0xe8, 0x03, 0x34, 0x68, 0x84, 0x72, 0x4f, 0xe9, 0xa3, 0xb2, 0x87, 0xc3, 0x03, 0x30, 0xc2, 0xa6,
+        0x60, 0x37, 0x5d, 0x17, 0xbb, 0x20, 0x5a, 0x8c, 0xf1, 0xae, 0xcb, 0x35, 0x04, 0x57, 0xf8, 0xab, 0x79, 0xee, 0x25, 0x3a,
+        0xb6, 0xa8, 0xe4, 0x6b, 0xb0, 0x9e, 0x54, 0x3a, 0xe4, 0x22, 0x73, 0x6d, 0xe5, 0x01, 0xe3, 0xdb, 0x37, 0xd4, 0x41, 0xfe,
+        0x34, 0x49, 0x20, 0xd0, 0x95, 0x48, 0xe4, 0xc1, 0x82, 0x40, 0x63, 0x0c, 0x4f, 0xf4, 0x91, 0x3c, 0x53, 0x51, 0x38, 0x39,
+        0xb7, 0xc0, 0x7f, 0xcc, 0x06, 0x27, 0xa1, 0xb8, 0x57, 0x3a, 0x14, 0x9f, 0xcd, 0x1f, 0xa4, 0x66, 0xcf,
+    };
+
+    uint32_t mSetupPasscode         = 0;
+    uint16_t mSetupDiscriminator    = 0;
+    uint32_t mSpake2pIterationCount = 0;
+
+    uint8_t mSpake2pSaltBuf[chip::Crypto::kSpake2p_Max_PBKDF_Salt_Length];
+    MutableByteSpan mSpake2pSalt;
+
+    MutableByteSpan mSpake2pVerifier;
+    uint8_t mSpake2pVerifierBuf[chip::Crypto::kSpake2p_VerifierSerialized_Length];
+};
+
+} // namespace DeviceLayer
+} // namespace chip
+
+#endif /* CommissionableDataProviderImpl_h */
diff --git a/examples/tv-casting-app/tv-casting-common/include/TargetVideoPlayerInfo.h b/examples/tv-casting-app/tv-casting-common/include/TargetVideoPlayerInfo.h
index 0f423e2aeb459a..c362ec95c99a24 100644
--- a/examples/tv-casting-app/tv-casting-common/include/TargetVideoPlayerInfo.h
+++ b/examples/tv-casting-app/tv-casting-common/include/TargetVideoPlayerInfo.h
@@ -31,10 +31,7 @@ class TargetVideoPlayerInfo
         mOnConnectedCallback(HandleDeviceConnected, this), mOnConnectionFailureCallback(HandleDeviceConnectionFailure, this)
     {}
 
-    bool operator==(const TargetVideoPlayerInfo & other)
-    {
-        return this->mNodeId == other.mNodeId && this->mFabricIndex == other.mFabricIndex;
-    }
+    bool operator==(const TargetVideoPlayerInfo & other) { return this->mNodeId == other.mNodeId; }
 
     bool IsInitialized() { return mInitialized; }
     uint16_t GetVendorId() const { return mVendorId; }

From 48d6dbc77e6f9eea5eae2e5258061ad33d09e722 Mon Sep 17 00:00:00 2001
From: Andrei Litvin 
Date: Thu, 17 Nov 2022 16:11:32 +0100
Subject: [PATCH 23/36] Install zap v2022.11.16 in Docker images. (#23643)

* Install zap v2022.11.16 in Docker images.

Installing from a zip file since deb installation seems to add
an entire XWindows dependency and based on feedback from zap
folks the zip file is the one more tested.

* Fix moved line

* Only keep zap-cli in the image. zap is a UI tool, not used and quite large

* Remove node install: zap should be a stand-alone tool

* Remove chip-build-zap because this image is not compatible anymore with missing node.js installation from the base image

* Remove chip-build-zap from chip-build-vscode

* Remove zap image build attempts from CI
---
 .github/workflows/docker_img.yaml             |  1 -
 .../images/chip-build-vscode/Dockerfile       |  3 --
 .../docker/images/chip-build-zap/Dockerfile   | 12 -------
 .../docker/images/chip-build-zap/README.md    |  8 -----
 .../docker/images/chip-build-zap/build.sh     |  1 -
 .../docker/images/chip-build-zap/run.sh       |  1 -
 .../docker/images/chip-build-zap/version      |  1 -
 .../docker/images/chip-build/Dockerfile       | 34 +++++++++----------
 integrations/docker/images/chip-build/version |  2 +-
 9 files changed, 18 insertions(+), 45 deletions(-)
 delete mode 100644 integrations/docker/images/chip-build-zap/Dockerfile
 delete mode 100644 integrations/docker/images/chip-build-zap/README.md
 delete mode 120000 integrations/docker/images/chip-build-zap/build.sh
 delete mode 120000 integrations/docker/images/chip-build-zap/run.sh
 delete mode 120000 integrations/docker/images/chip-build-zap/version

diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml
index bd3fb575b2957e..a0fc677dfc06d4 100644
--- a/.github/workflows/docker_img.yaml
+++ b/.github/workflows/docker_img.yaml
@@ -57,7 +57,6 @@ jobs:
                     - "-openiotsdk"
                     # NOTE: vscode image consumes ~52 GB disk space but GitHub-hosted runners provide ~10 GB free disk space(https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)
                     #- "-vscode"
-                    - "-zap"
         steps:
             - uses: Wandalen/wretry.action@v1.0.36
               name: Checkout
diff --git a/integrations/docker/images/chip-build-vscode/Dockerfile b/integrations/docker/images/chip-build-vscode/Dockerfile
index d3c4dc78efe992..ded2dcab943228 100644
--- a/integrations/docker/images/chip-build-vscode/Dockerfile
+++ b/integrations/docker/images/chip-build-vscode/Dockerfile
@@ -13,7 +13,6 @@ FROM connectedhomeip/chip-build-k32w:${VERSION} AS k32w
 FROM connectedhomeip/chip-build-imx:${VERSION} AS imx
 FROM connectedhomeip/chip-build-ti:${VERSION} AS ti
 FROM connectedhomeip/chip-build-openiotsdk:${VERSION} AS openiotsdk
-FROM connectedhomeip/chip-build-zap:${VERSION} AS zap
 FROM connectedhomeip/chip-build:${VERSION}
 
 # qemu-src copied over because qemu directory contains symlinks to the src
@@ -51,8 +50,6 @@ COPY --from=ti /opt/ti/sysconfig_1.13.0 /opt/ti/sysconfig_1.13.0
 COPY --from=openiotsdk /opt/gcc-arm-none-eabi-10.3-2021.10/ /opt/gcc-arm-none-eabi-10.3-2021.10/
 COPY --from=openiotsdk /opt/FVP_Corstone_SSE-300/ /opt/FVP_Corstone_SSE-300/
 
-COPY --from=zap /opt/zap /opt/zap
-
 # Android license file "acceping" is done by writing license hashes
 # into the 'licenses' subfolder. This allows any user (in particular
 # 'vscode' to accept licenses)
diff --git a/integrations/docker/images/chip-build-zap/Dockerfile b/integrations/docker/images/chip-build-zap/Dockerfile
deleted file mode 100644
index 73b199fa665483..00000000000000
--- a/integrations/docker/images/chip-build-zap/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-ARG VERSION=latest
-FROM connectedhomeip/chip-build:${VERSION}
-
-ENV ZAP_COMMIT=7ab717d08dfe9b0ba9de907fc7c6eb6549c86bf7
-
-ENV ZAP_ORIGIN=https://github.com/project-chip/zap.git
-
-WORKDIR /opt
-RUN git clone $ZAP_ORIGIN
-WORKDIR ./zap
-RUN git checkout $ZAP_COMMIT
-RUN npm ci
diff --git a/integrations/docker/images/chip-build-zap/README.md b/integrations/docker/images/chip-build-zap/README.md
deleted file mode 100644
index e4d6f1477c198e..00000000000000
--- a/integrations/docker/images/chip-build-zap/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# ZAP
-
--   This Dockerfile builds https://github.com/project-chip/zap.git, which gets
-    copied into `chip-build-vscode`
--   ZAP is also a submodule in `third_party/zap/repo`. You can check the commit
-    of ZAP used in the submodule by running
-    `git ls-tree master third_party/zap/repo | awk '{print $3}'` from the
-    repository root.
diff --git a/integrations/docker/images/chip-build-zap/build.sh b/integrations/docker/images/chip-build-zap/build.sh
deleted file mode 120000
index fcb4d4ee75d531..00000000000000
--- a/integrations/docker/images/chip-build-zap/build.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../build.sh
\ No newline at end of file
diff --git a/integrations/docker/images/chip-build-zap/run.sh b/integrations/docker/images/chip-build-zap/run.sh
deleted file mode 120000
index ccbd3501b330d9..00000000000000
--- a/integrations/docker/images/chip-build-zap/run.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../run.sh
\ No newline at end of file
diff --git a/integrations/docker/images/chip-build-zap/version b/integrations/docker/images/chip-build-zap/version
deleted file mode 120000
index a4280acd348e7f..00000000000000
--- a/integrations/docker/images/chip-build-zap/version
+++ /dev/null
@@ -1 +0,0 @@
-../chip-build/version
\ No newline at end of file
diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile
index d53978c727c8f3..ea1360ab586a97 100644
--- a/integrations/docker/images/chip-build/Dockerfile
+++ b/integrations/docker/images/chip-build/Dockerfile
@@ -6,7 +6,7 @@ VOLUME "/var/source"
 # base build and check tools and libraries layer
 RUN set -x \
     && apt-get update \
-    && DEBIAN_FRONTEND=noninteractive apt-get install -fy \
+    && DEBIAN_FRONTEND=noninteractive apt-get install -fy --fix-missing \
     autoconf \
     automake \
     bison \
@@ -19,12 +19,14 @@ RUN set -x \
     flex \
     g++ \
     git \
+    git-lfs \
     gperf \
     iproute2 \
     jq \
     lcov \
     libavahi-client-dev \
     libavahi-common-dev \
+    libcairo-dev \
     libcairo2-dev \
     libdbus-1-dev \
     libdbus-glib-1-dev \
@@ -42,6 +44,7 @@ RUN set -x \
     libpango1.0-dev \
     libpixman-1-dev \
     libreadline-dev \
+    libsdl-pango-dev \
     libssl-dev \
     libtool \
     libudev-dev \
@@ -64,7 +67,6 @@ RUN set -x \
     udev \
     unzip \
     wget \
-    git-lfs \
     zlib1g-dev \
     && rm -rf /var/lib/apt/lists/ \
     && git lfs install \
@@ -118,21 +120,6 @@ RUN set -x \
     && rm -rf bloaty \
     && : # last line
 
-# NodeJS: install a newer version than what apt-get would read
-# This installs the latest LTS version of nodejs
-ENV CHIP_NODE_VERSION=v16.13.2
-RUN set -x \
-    && mkdir node_js \
-    && cd node_js \
-    && wget https://nodejs.org/dist/$CHIP_NODE_VERSION/node-$CHIP_NODE_VERSION-linux-x64.tar.xz \
-    && tar xfvJ node-$CHIP_NODE_VERSION-linux-x64.tar.xz \
-    && mv node-$CHIP_NODE_VERSION-linux-x64 /opt/ \
-    && ln -s /opt/node-$CHIP_NODE_VERSION-linux-x64 /opt/node \
-    && ln -s /opt/node/bin/* /usr/bin \
-    && cd .. \
-    && rm -rf node_js \
-    && : # last line
-
 # Build glib-2.0 from source with enabled thread sanitizer. This is needed for
 # running CHIP tests with TSAN enabled. When running applications with TSAN
 # all shared libraries should be built with TSAN enabled, otherwise TSAN might
@@ -148,3 +135,16 @@ RUN set -x \
     && mv glib/build-image/usr/local/lib/x86_64-linux-gnu/lib* $LD_LIBRARY_PATH_TSAN \
     && rm -rf glib \
     && : # last line
+
+# Install a known ZAP release
+# Only keep the cli version, since `zap` is 143MB and not usable (UI)
+ENV ZAP_VERSION=v2022.11.16
+RUN set -x \
+    && mkdir -p /opt/zap-${ZAP_VERSION} \
+    && cd /opt/zap-${ZAP_VERSION} \
+    && wget https://github.com/project-chip/zap/releases/download/${ZAP_VERSION}/zap-linux.zip \
+    && unzip zap-linux.zip \
+    && rm zap-linux.zip \
+    && rm zap \
+    && ln -s /opt/zap-${ZAP_VERSION}/zap /usr/bin/ \
+    && : # last line
diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version
index 20f61fad306b4e..70fadae772ee59 100644
--- a/integrations/docker/images/chip-build/version
+++ b/integrations/docker/images/chip-build/version
@@ -1 +1 @@
-0.6.08 Version bump reason: Update ESP-IDF to v4.4.3 release
+0.6.09 Version bump reason: Install zap v2022.11.16 in docker images.

From b1f48e281aeb561f80b2c7cdd457f403c1e16731 Mon Sep 17 00:00:00 2001
From: Andrei Litvin 
Date: Thu, 17 Nov 2022 16:39:20 +0100
Subject: [PATCH 24/36] Hotfix: correct zap cli symlink for chip build
 dockerfile (#23662)

---
 integrations/docker/images/chip-build/Dockerfile | 2 +-
 integrations/docker/images/chip-build/version    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile
index ea1360ab586a97..6ecb84359ff118 100644
--- a/integrations/docker/images/chip-build/Dockerfile
+++ b/integrations/docker/images/chip-build/Dockerfile
@@ -146,5 +146,5 @@ RUN set -x \
     && unzip zap-linux.zip \
     && rm zap-linux.zip \
     && rm zap \
-    && ln -s /opt/zap-${ZAP_VERSION}/zap /usr/bin/ \
+    && ln -s /opt/zap-${ZAP_VERSION}/zap-cli /usr/bin/ \
     && : # last line
diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version
index 70fadae772ee59..7ab8f4209d3d23 100644
--- a/integrations/docker/images/chip-build/version
+++ b/integrations/docker/images/chip-build/version
@@ -1 +1 @@
-0.6.09 Version bump reason: Install zap v2022.11.16 in docker images.
+0.6.10 Version bump reason: Fix zap link (link zap-cli into /usr/bin instead of zap)

From bdfc185692381cff13d781710ca801a9c4bc2abb Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Thu, 17 Nov 2022 10:46:58 -0500
Subject: [PATCH 25/36] Remove all mention of "pairing" from non-deprecated
 Darwin public APIs. (#23647)

This is a re-landing of PR #22676, but with backwards-compat shims in place.

The change to MTRDeviceControllerDelegate is OK because this is a
newly-introduced protocol.
---
 .../pairing/DeviceControllerDelegateBridge.h  |  3 +--
 .../pairing/DeviceControllerDelegateBridge.mm |  7 +------
 .../commands/tests/TestCommandBridge.h        | 12 ++---------
 .../Framework/CHIP/MTRDeviceController.h      |  8 ++++----
 .../Framework/CHIP/MTRDeviceController.mm     |  8 ++------
 .../CHIP/MTRDeviceControllerDelegate.h        | 20 ++++++-------------
 .../CHIP/MTRDeviceControllerDelegateBridge.mm | 14 +++----------
 src/darwin/Framework/CHIP/MTRSetupPayload.h   | 12 ++++++-----
 .../Framework/CHIPTests/MTRDeviceTests.m      |  2 +-
 .../CHIPTests/MTRXPCListenerSampleTests.m     |  2 +-
 10 files changed, 28 insertions(+), 60 deletions(-)

diff --git a/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
index 1c48daba882f0a..7d62b1ba960fb4 100644
--- a/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
+++ b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.h
@@ -26,8 +26,7 @@
 @property MTRDeviceController * commissioner;
 @property MTRCommissioningParameters * params;
 
-- (void)onPairingComplete:(NSError *)error;
-- (void)onPairingDeleted:(NSError *)error;
+- (void)onCommissioningSessionEstablishmentDone:(NSError *)error;
 - (void)onCommissioningComplete:(NSError *)error;
 
 @end
diff --git a/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
index e83f81089b45b8..06dd78a7d8ffc8 100644
--- a/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
+++ b/examples/darwin-framework-tool/commands/pairing/DeviceControllerDelegateBridge.mm
@@ -44,7 +44,7 @@ - (void)onStatusUpdate:(MTRCommissioningStatus)status
     }
 }
 
-- (void)onPairingComplete:(NSError *)error
+- (void)onCommissioningSessionEstablishmentDone:(NSError *)error
 {
     if (error != nil) {
         ChipLogProgress(chipTool, "PASE establishment failed");
@@ -61,11 +61,6 @@ - (void)onPairingComplete:(NSError *)error
     }
 }
 
-- (void)onPairingDeleted:(NSError *)error
-{
-    _commandBridge->SetCommandExitStatus(error, "Pairing Delete");
-}
-
 - (void)onCommissioningComplete:(NSError *)error
 {
     _commandBridge->SetCommandExitStatus(error, "Pairing Commissioning Complete");
diff --git a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
index 8c4fe33d0ea87f..8f031981bd82b3 100644
--- a/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
+++ b/examples/darwin-framework-tool/commands/tests/TestCommandBridge.h
@@ -49,8 +49,7 @@ constexpr const char * kDefaultKey = "default";
 @property BOOL active; // Whether to pass on notifications to the commandBridge
 
 - (void)onStatusUpdate:(MTRCommissioningStatus)status;
-- (void)onPairingComplete:(NSError * _Nullable)error;
-- (void)onPairingDeleted:(NSError * _Nullable)error;
+- (void)onCommissioningSessionEstablishmentDone:(NSError * _Nullable)error;
 - (void)onCommissioningComplete:(NSError * _Nullable)error;
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -543,7 +542,7 @@ NS_ASSUME_NONNULL_BEGIN
     }
 }
 
-- (void)onPairingComplete:(NSError * _Nullable)error
+- (void)onCommissioningSessionEstablishmentDone:(NSError * _Nullable)error
 {
     if (_active) {
         if (error != nil) {
@@ -557,13 +556,6 @@ NS_ASSUME_NONNULL_BEGIN
     }
 }
 
-- (void)onPairingDeleted:(NSError * _Nullable)error
-{
-    if (_active) {
-        _commandBridge->PairingDeleted();
-    }
-}
-
 - (void)onCommissioningComplete:(NSError * _Nullable)error
 {
     if (_active) {
diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.h b/src/darwin/Framework/CHIP/MTRDeviceController.h
index 4f46861da7de3c..6a2616a53eeb00 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceController.h
+++ b/src/darwin/Framework/CHIP/MTRDeviceController.h
@@ -58,9 +58,9 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS
  * provided discriminator.
  *
  * Then a PASE session will be established with the device, unless an error
- * occurs.  MTRDevicePairingDelegate will be notified as follows:
+ * occurs.  MTRDeviceControllerDelegate will be notified as follows:
  *
- * * Discovery fails: onStatusUpdate with MTRPairingStatusFailed.
+ * * Discovery fails: onStatusUpdate with MTRCommissioningStatusFailed.
  *
  * * Discovery succeeds but commissioning session setup fails: onPairingComplete
  *   with an error.
@@ -109,9 +109,9 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS
 + (instancetype)new NS_UNAVAILABLE;
 
 /**
- * Set the Delegate for the Device Pairing  as well as the Queue on which the Delegate callbacks will be triggered
+ * Set the Delegate for the device controller  as well as the Queue on which the Delegate callbacks will be triggered
  *
- * @param[in] delegate The delegate the pairing process should use
+ * @param[in] delegate The delegate the commissioning process should use
  *
  * @param[in] queue The queue on which the callbacks will be delivered
  */
diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm
index 9dadeb117ce406..c183353d70658e 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceController.mm
+++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm
@@ -850,7 +850,7 @@ - (BOOL)respondsToSelector:(SEL)selector
         return [self.delegate respondsToSelector:@selector(onStatusUpdate:)];
     }
 
-    if (selector == @selector(onPairingComplete:)) {
+    if (selector == @selector(onCommissioningSessionEstablishmentDone:)) {
         return [self.delegate respondsToSelector:@selector(onPairingComplete:)];
     }
 
@@ -858,10 +858,6 @@ - (BOOL)respondsToSelector:(SEL)selector
         return [self.delegate respondsToSelector:@selector(onCommissioningComplete:)];
     }
 
-    if (selector == @selector(onPairingDeleted:)) {
-        return [self.delegate respondsToSelector:@selector(onPairingDeleted:)];
-    }
-
     return [super respondsToSelector:selector];
 }
 
@@ -870,7 +866,7 @@ - (void)onStatusUpdate:(MTRCommissioningStatus)status
     [self.delegate onStatusUpdate:static_cast(status)];
 }
 
-- (void)onPairingComplete:(NSError * _Nullable)error
+- (void)onCommissioningSessionEstablishmentDone:(NSError * _Nullable)error
 {
     [self.delegate onPairingComplete:error];
 }
diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
index fc0c0d9ec2d008..3b549c45c674cf 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
+++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h
@@ -27,7 +27,7 @@ typedef NS_ENUM(NSInteger, MTRCommissioningStatus) {
 } MTR_NEWLY_AVAILABLE;
 
 /**
- * The protocol definition for the MTRDeviceControllerDelegate
+ * The protocol definition for the MTRDeviceControllerDelegate.
  *
  * All delegate methods will be called on the supplied Delegate Queue.
  */
@@ -35,29 +35,21 @@ MTR_NEWLY_AVAILABLE
 @protocol MTRDeviceControllerDelegate 
 @optional
 /**
- * Notify the delegate when pairing status gets updated
- *
+ * Notify the delegate when commissioning status gets updated.
  */
 - (void)onStatusUpdate:(MTRCommissioningStatus)status;
 
 /**
- * Notify the delegate when pairing is completed
- *
+ * Notify the delegate when a commissioning session is established or the
+ * establishment has errored out.
  */
-- (void)onPairingComplete:(NSError * _Nullable)error;
+- (void)onCommissioningSessionEstablishmentDone:(NSError * _Nullable)error;
 
 /**
- * Notify the delegate when commissioning is completed
- *
+ * Notify the delegate when commissioning is completed.
  */
 - (void)onCommissioningComplete:(NSError * _Nullable)error;
 
-/**
- * Notify the delegate when pairing is deleted
- *
- */
-- (void)onPairingDeleted:(NSError * _Nullable)error;
-
 @end
 
 typedef NS_ENUM(NSUInteger, MTRPairingStatus) {
diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
index 7ef07f87ce860c..f84a99e4d2664b 100644
--- a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
+++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegateBridge.mm
@@ -73,11 +73,11 @@
     NSLog(@"DeviceControllerDelegate Pairing complete. Status %s", chip::ErrorStr(error));
 
     id strongDelegate = mDelegate;
-    if ([strongDelegate respondsToSelector:@selector(onPairingComplete:)]) {
+    if ([strongDelegate respondsToSelector:@selector(onCommissioningSessionEstablishmentDone:)]) {
         if (strongDelegate && mQueue) {
             dispatch_async(mQueue, ^{
                 NSError * nsError = [MTRError errorForCHIPErrorCode:error];
-                [strongDelegate onPairingComplete:nsError];
+                [strongDelegate onCommissioningSessionEstablishmentDone:nsError];
             });
         }
     }
@@ -87,15 +87,7 @@
 {
     NSLog(@"DeviceControllerDelegate Pairing deleted. Status %s", chip::ErrorStr(error));
 
-    id strongDelegate = mDelegate;
-    if ([strongDelegate respondsToSelector:@selector(onPairingDeleted:)]) {
-        if (strongDelegate && mQueue) {
-            dispatch_async(mQueue, ^{
-                NSError * nsError = [MTRError errorForCHIPErrorCode:error];
-                [strongDelegate onPairingDeleted:nsError];
-            });
-        }
-    }
+    // This is never actually called; just do nothing.
 }
 
 void MTRDeviceControllerDelegateBridge::OnCommissioningComplete(chip::NodeId nodeId, CHIP_ERROR error)
diff --git a/src/darwin/Framework/CHIP/MTRSetupPayload.h b/src/darwin/Framework/CHIP/MTRSetupPayload.h
index 3b50b86a974f46..2fdb9929e4471c 100644
--- a/src/darwin/Framework/CHIP/MTRSetupPayload.h
+++ b/src/darwin/Framework/CHIP/MTRSetupPayload.h
@@ -20,7 +20,7 @@
 NS_ASSUME_NONNULL_BEGIN
 
 typedef NS_OPTIONS(NSUInteger, MTRDiscoveryCapabilities) {
-    MTRDiscoveryCapabilitiesUnknown = 0, // Device capabilities are not known (e.g. all we have is a manual pairing code).
+    MTRDiscoveryCapabilitiesUnknown = 0, // Device capabilities are not known (e.g. all we have is a numeric code).
     MTRDiscoveryCapabilitiesNone MTR_NEWLY_DEPRECATED("Please use MTRDiscoveryCapabilitiesUnknown") = 0,
     MTRDiscoveryCapabilitiesSoftAP = 1 << 0, // Device supports WiFi softAP
     MTRDiscoveryCapabilitiesBLE = 1 << 1, // Device supports BLE
@@ -31,8 +31,8 @@ typedef NS_OPTIONS(NSUInteger, MTRDiscoveryCapabilities) {
 };
 
 typedef NS_ENUM(NSUInteger, MTRCommissioningFlow) {
-    MTRCommissioningFlowStandard = 0, // Device automatically enters pairing mode upon power-up
-    MTRCommissioningFlowUserActionRequired = 1, // Device requires a user interaction to enter pairing mode
+    MTRCommissioningFlowStandard = 0, // Device automatically enters commissioning mode upon power-up
+    MTRCommissioningFlowUserActionRequired = 1, // Device requires a user interaction to enter commissioning mode
     MTRCommissioningFlowCustom = 2, // Commissioning steps should be retrieved from the distributed compliance ledger
     MTRCommissioningFlowInvalid = 3,
 };
@@ -58,8 +58,10 @@ typedef NS_ENUM(NSUInteger, MTROptionalQRCodeInfoType) {
 @end
 
 /**
- * A setup payload that can be created from a pairing code and serialized to a
- * pairing code.
+ * A setup payload that can be created from a numeric code or QR code and
+ * serialized to a numeric code or QR code, though serializing to QR code after
+ * creating from numeric code will not work, because some required information
+ * will be missing.
  */
 @interface MTRSetupPayload : NSObject 
 
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 83b9762579f03f..2a7afeb112de66 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -94,7 +94,7 @@ - (id)initWithExpectation:(XCTestExpectation *)expectation
     return self;
 }
 
-- (void)onPairingComplete:(NSError *)error
+- (void)onCommissioningSessionEstablishmentDone:(NSError *)error
 {
     XCTAssertEqual(error.code, 0);
 
diff --git a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
index c9bd521dd9b877..ab6395921e54eb 100644
--- a/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m
@@ -419,7 +419,7 @@ - (id)initWithExpectation:(XCTestExpectation *)expectation
     return self;
 }
 
-- (void)onPairingComplete:(NSError *)error
+- (void)onCommissioningSessionEstablishmentDone:(NSError *)error
 {
     XCTAssertEqual(error.code, 0);
     NSError * commissionError = nil;

From c6272c6b9c4d71173f20592411285aaba0997315 Mon Sep 17 00:00:00 2001
From: Boris Zbarsky 
Date: Thu, 17 Nov 2022 11:33:08 -0500
Subject: [PATCH 26/36] Add missing endWork calls in MTRClusters. (#23659)

We were missing endWork bits for command invokes when the command has a data
(not status) response.  This would end up permanently blocking the MTRDevice's
work queue once such a command (e.g. UpdateFabricLabel) was issued.

The changes here are as follows:

1) Rearrange the logic in MTRClusters-src.zapt so that the endWork happens
   regardless of whether hasSpecificResponse is true.
2) Add a deprecation message to the timedInvokeTimeoutMs field in _response_
   command params, since that should never be used (ran into this when writing
   the tests for this PR).
3) Set resubscribeIfLost to NO on various subscriptions in MTRDeviceTests, so if
   another test takes a while we don't fail due to the canceled subscriptions
   re-subscribing and over-fullfilling the subscription expectations.
4) Add a test for a mix of passing and failing commands on MTRCluster instances,
   with some of the commands defined as getting status-only responses and some
   defined as getting data responses.  This test fails without the endWork fix.
---
 .../CHIP/templates/MTRClusters-src.zapt       |  10 +-
 .../templates/MTRCommandPayloadsObjc.zapt     |   2 +-
 .../CHIP/zap-generated/MTRClusters.mm         | 571 +++++++++++++++---
 .../zap-generated/MTRCommandPayloadsObjc.h    | 168 ++++--
 .../Framework/CHIPTests/MTRDeviceTests.m      |  89 +++
 5 files changed, 687 insertions(+), 153 deletions(-)

diff --git a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
index fa78f8f0439559..c427058683ea2d 100644
--- a/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRClusters-src.zapt
@@ -62,19 +62,19 @@ using chip::SessionHandle;
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice *baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController];
         auto * bridge = new MTR{{>callbackName}}CallbackBridge(self.callbackQueue,
+          ^(id _Nullable value, NSError * _Nullable error) {
           {{#if hasSpecificResponse}}
             {{! This treats completion as taking an id for the data.  This is
                 not great from a type-safety perspective, of course. }}
-            completion,
+            completion(value, error);
           {{else}}
             {{! For now, don't change the bridge API; instead just use an adapter
                 to invoke our completion handler. This is not great from a
                 type-safety perspective, of course. }}
-            ^(id _Nullable value, NSError * _Nullable error) {
-              completion(error);
-                  [workItem endWork];
-            },
+            completion(error);
           {{/if}}
+            [workItem endWork];
+          },
           ^(ExchangeManager & exchangeManager, const SessionHandle & session, {{>callbackName}}CallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
             chip::Optional timedInvokeTimeoutMs;
             ListFreer listFreer;
diff --git a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
index 78a0c88f39d69f..3fab331d0edf2c 100644
--- a/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
+++ b/src/darwin/Framework/CHIP/templates/MTRCommandPayloadsObjc.zapt
@@ -31,7 +31,7 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs {{#if (isStrEqual source "server")}}MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands"){{/if}};
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index f913d7b09f4e67..8476a3f78293bc 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -291,7 +291,12 @@ - (void)addGroupWithParams:(MTRGroupsClusterAddGroupParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupsClusterAddGroupResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupsClusterAddGroupResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session, GroupsClusterAddGroupResponseCallbackType successCb,
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -337,7 +342,12 @@ - (void)viewGroupWithParams:(MTRGroupsClusterViewGroupParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupsClusterViewGroupResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupsClusterViewGroupResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GroupsClusterViewGroupResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -382,7 +392,12 @@ - (void)getGroupMembershipWithParams:(MTRGroupsClusterGetGroupMembershipParams *
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupsClusterGetGroupMembershipResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GroupsClusterGetGroupMembershipResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -449,7 +464,12 @@ - (void)removeGroupWithParams:(MTRGroupsClusterRemoveGroupParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupsClusterRemoveGroupResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupsClusterRemoveGroupResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GroupsClusterRemoveGroupResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -761,7 +781,12 @@ - (void)addSceneWithParams:(MTRScenesClusterAddSceneParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterAddSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterAddSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session, ScenesClusterAddSceneResponseCallbackType successCb,
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -883,7 +908,12 @@ - (void)viewSceneWithParams:(MTRScenesClusterViewSceneParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterViewSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterViewSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -929,7 +959,12 @@ - (void)removeSceneWithParams:(MTRScenesClusterRemoveSceneParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterRemoveSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterRemoveSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterRemoveSceneResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -976,7 +1011,12 @@ - (void)removeAllScenesWithParams:(MTRScenesClusterRemoveAllScenesParams *)param
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterRemoveAllScenesResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterRemoveAllScenesResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -1022,7 +1062,12 @@ - (void)storeSceneWithParams:(MTRScenesClusterStoreSceneParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterStoreSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterStoreSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterStoreSceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -1127,7 +1172,12 @@ - (void)getSceneMembershipWithParams:(MTRScenesClusterGetSceneMembershipParams *
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterGetSceneMembershipResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterGetSceneMembershipResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -1173,7 +1223,12 @@ - (void)enhancedAddSceneWithParams:(MTRScenesClusterEnhancedAddSceneParams *)par
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterEnhancedAddSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterEnhancedAddSceneResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -1296,7 +1351,12 @@ - (void)enhancedViewSceneWithParams:(MTRScenesClusterEnhancedViewSceneParams *)p
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterEnhancedViewSceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterEnhancedViewSceneResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -1343,7 +1403,12 @@ - (void)copySceneWithParams:(MTRScenesClusterCopySceneParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRScenesClusterCopySceneResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRScenesClusterCopySceneResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ScenesClusterCopySceneResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -5026,7 +5091,12 @@ - (void)queryImageWithParams:(MTROtaSoftwareUpdateProviderClusterQueryImageParam
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROtaSoftwareUpdateProviderClusterQueryImageResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OtaSoftwareUpdateProviderClusterQueryImageResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -5114,7 +5184,12 @@ - (void)applyUpdateRequestWithParams:(MTROtaSoftwareUpdateProviderClusterApplyUp
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6225,7 +6300,12 @@ - (void)armFailSafeWithParams:(MTRGeneralCommissioningClusterArmFailSafeParams *
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GeneralCommissioningClusterArmFailSafeResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6272,7 +6352,12 @@ - (void)setRegulatoryConfigWithParams:(MTRGeneralCommissioningClusterSetRegulato
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GeneralCommissioningClusterSetRegulatoryConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6334,21 +6419,25 @@ - (void)commissioningCompleteWithParams:(MTRGeneralCommissioningClusterCommissio
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge
-            = new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(self.callbackQueue, completion,
-                ^(ExchangeManager & exchangeManager, const SessionHandle & session,
-                    GeneralCommissioningClusterCommissioningCompleteResponseCallbackType successCb, MTRErrorCallback failureCb,
-                    MTRCallbackBridgeBase * bridge) {
-                    chip::Optional timedInvokeTimeoutMs;
-                    ListFreer listFreer;
-                    GeneralCommissioning::Commands::CommissioningComplete::Type request;
-                    if (timedInvokeTimeoutMsParam != nil) {
-                        timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
-                    }
+        auto * bridge = new MTRGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
+            ^(ExchangeManager & exchangeManager, const SessionHandle & session,
+                GeneralCommissioningClusterCommissioningCompleteResponseCallbackType successCb, MTRErrorCallback failureCb,
+                MTRCallbackBridgeBase * bridge) {
+                chip::Optional timedInvokeTimeoutMs;
+                ListFreer listFreer;
+                GeneralCommissioning::Commands::CommissioningComplete::Type request;
+                if (timedInvokeTimeoutMsParam != nil) {
+                    timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
+                }
 
-                    chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
-                    return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
-                });
+                chip::Controller::GeneralCommissioningCluster cppCluster(exchangeManager, session, self->_endpoint);
+                return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
+            });
         std::move(*bridge).DispatchAction(baseDevice);
     };
     workItem.readyHandler = readyHandler;
@@ -6567,7 +6656,12 @@ - (void)scanNetworksWithParams:(MTRNetworkCommissioningClusterScanNetworksParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterScanNetworksResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterScanNetworksResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6627,7 +6721,12 @@ - (void)addOrUpdateWiFiNetworkWithParams:(MTRNetworkCommissioningClusterAddOrUpd
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6678,7 +6777,12 @@ - (void)addOrUpdateThreadNetworkWithParams:(MTRNetworkCommissioningClusterAddOrU
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6728,7 +6832,12 @@ - (void)removeNetworkWithParams:(MTRNetworkCommissioningClusterRemoveNetworkPara
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6778,7 +6887,12 @@ - (void)connectNetworkWithParams:(MTRNetworkCommissioningClusterConnectNetworkPa
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterConnectNetworkResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterConnectNetworkResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -6828,7 +6942,12 @@ - (void)reorderNetworkWithParams:(MTRNetworkCommissioningClusterReorderNetworkPa
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRNetworkCommissioningClusterNetworkConfigResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 NetworkCommissioningClusterNetworkConfigResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -7122,7 +7241,12 @@ - (void)retrieveLogsRequestWithParams:(MTRDiagnosticLogsClusterRetrieveLogsReque
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDiagnosticLogsClusterRetrieveLogsResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DiagnosticLogsClusterRetrieveLogsResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9352,7 +9476,12 @@ - (void)attestationRequestWithParams:(MTROperationalCredentialsClusterAttestatio
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterAttestationResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterAttestationResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9398,7 +9527,12 @@ - (void)certificateChainRequestWithParams:(MTROperationalCredentialsClusterCerti
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterCertificateChainResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterCertificateChainResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9444,7 +9578,12 @@ - (void)CSRRequestWithParams:(MTROperationalCredentialsClusterCSRRequestParams *
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterCSRResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterCSRResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterCSRResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9494,7 +9633,12 @@ - (void)addNOCWithParams:(MTROperationalCredentialsClusterAddNOCParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9548,7 +9692,12 @@ - (void)updateNOCWithParams:(MTROperationalCredentialsClusterUpdateNOCParams *)p
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9598,7 +9747,12 @@ - (void)updateFabricLabelWithParams:(MTROperationalCredentialsClusterUpdateFabri
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -9644,7 +9798,12 @@ - (void)removeFabricWithParams:(MTROperationalCredentialsClusterRemoveFabricPara
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTROperationalCredentialsClusterNOCResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 OperationalCredentialsClusterNOCResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -10057,7 +10216,12 @@ - (void)keySetReadWithParams:(MTRGroupKeyManagementClusterKeySetReadParams *)par
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupKeyManagementClusterKeySetReadResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GroupKeyManagementClusterKeySetReadResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -10152,7 +10316,12 @@ - (void)keySetReadAllIndicesWithParams:(MTRGroupKeyManagementClusterKeySetReadAl
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRGroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 GroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -11064,7 +11233,12 @@ - (void)getWeekDayScheduleWithParams:(MTRDoorLockClusterGetWeekDayScheduleParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterGetWeekDayScheduleResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterGetWeekDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -11213,7 +11387,12 @@ - (void)getYearDayScheduleWithParams:(MTRDoorLockClusterGetYearDayScheduleParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterGetYearDayScheduleResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterGetYearDayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -11363,7 +11542,12 @@ - (void)getHolidayScheduleWithParams:(MTRDoorLockClusterGetHolidayScheduleParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterGetHolidayScheduleResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterGetHolidayScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -11544,7 +11728,12 @@ - (void)getUserWithParams:(MTRDoorLockClusterGetUserParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterGetUserResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterGetUserResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterGetUserResponseCallbackType successCb, MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional timedInvokeTimeoutMs;
@@ -11641,7 +11830,12 @@ - (void)setCredentialWithParams:(MTRDoorLockClusterSetCredentialParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterSetCredentialResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterSetCredentialResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterSetCredentialResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -11716,7 +11910,12 @@ - (void)getCredentialStatusWithParams:(MTRDoorLockClusterGetCredentialStatusPara
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRDoorLockClusterGetCredentialStatusResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 DoorLockClusterGetCredentialStatusResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -14349,7 +14548,12 @@ - (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRThermostatClusterGetWeeklyScheduleResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ThermostatClusterGetWeeklyScheduleResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19238,7 +19442,12 @@ - (void)changeChannelWithParams:(MTRChannelClusterChangeChannelParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRChannelClusterChangeChannelResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRChannelClusterChangeChannelResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ChannelClusterChangeChannelResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19507,7 +19716,12 @@ - (void)navigateTargetWithParams:(MTRTargetNavigatorClusterNavigateTargetParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRTargetNavigatorClusterNavigateTargetResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 TargetNavigatorClusterNavigateTargetResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19661,7 +19875,12 @@ - (void)playWithParams:(MTRMediaPlaybackClusterPlayParams * _Nullable)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19713,7 +19932,12 @@ - (void)pauseWithParams:(MTRMediaPlaybackClusterPauseParams * _Nullable)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19768,7 +19992,12 @@ - (void)stopPlaybackWithParams:(MTRMediaPlaybackClusterStopPlaybackParams * _Nul
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19823,7 +20052,12 @@ - (void)startOverWithParams:(MTRMediaPlaybackClusterStartOverParams * _Nullable)
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19875,7 +20109,12 @@ - (void)previousWithParams:(MTRMediaPlaybackClusterPreviousParams * _Nullable)pa
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19927,7 +20166,12 @@ - (void)nextWithParams:(MTRMediaPlaybackClusterNextParams * _Nullable)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -19979,7 +20223,12 @@ - (void)rewindWithParams:(MTRMediaPlaybackClusterRewindParams * _Nullable)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -20034,7 +20283,12 @@ - (void)fastForwardWithParams:(MTRMediaPlaybackClusterFastForwardParams * _Nulla
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -20079,7 +20333,12 @@ - (void)skipForwardWithParams:(MTRMediaPlaybackClusterSkipForwardParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -20125,7 +20384,12 @@ - (void)skipBackwardWithParams:(MTRMediaPlaybackClusterSkipBackwardParams *)para
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -20171,7 +20435,12 @@ - (void)seekWithParams:(MTRMediaPlaybackClusterSeekParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRMediaPlaybackClusterPlaybackResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 MediaPlaybackClusterPlaybackResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21065,7 +21334,12 @@ - (void)sendKeyWithParams:(MTRKeypadInputClusterSendKeyParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRKeypadInputClusterSendKeyResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRKeypadInputClusterSendKeyResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 KeypadInputClusterSendKeyResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21191,7 +21465,12 @@ - (void)launchContentWithParams:(MTRContentLauncherClusterLaunchContentParams *)
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21294,7 +21573,12 @@ - (void)launchURLWithParams:(MTRContentLauncherClusterLaunchURLParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRContentLauncherClusterLaunchResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ContentLauncherClusterLaunchResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21771,7 +22055,12 @@ - (void)launchAppWithParams:(MTRApplicationLauncherClusterLaunchAppParams *)para
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21822,7 +22111,12 @@ - (void)stopAppWithParams:(MTRApplicationLauncherClusterStopAppParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -21869,7 +22163,12 @@ - (void)hideAppWithParams:(MTRApplicationLauncherClusterHideAppParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRApplicationLauncherClusterLauncherResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 ApplicationLauncherClusterLauncherResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -22189,7 +22488,12 @@ - (void)getSetupPINWithParams:(MTRAccountLoginClusterGetSetupPINParams *)params
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRAccountLoginClusterGetSetupPINResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 AccountLoginClusterGetSetupPINResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24018,7 +24322,12 @@ - (void)testSpecificWithParams:(MTRUnitTestingClusterTestSpecificParams * _Nulla
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestSpecificResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestSpecificResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestSpecificResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24120,7 +24429,12 @@ - (void)testAddArgumentsWithParams:(MTRUnitTestingClusterTestAddArgumentsParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestAddArgumentsResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestAddArgumentsResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24167,7 +24481,12 @@ - (void)testSimpleArgumentRequestWithParams:(MTRUnitTestingClusterTestSimpleArgu
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestSimpleArgumentResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestSimpleArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24214,7 +24533,12 @@ - (void)testStructArrayArgumentRequestWithParams:(MTRUnitTestingClusterTestStruc
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestStructArrayArgumentResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestStructArrayArgumentResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24471,7 +24795,12 @@ - (void)testStructArgumentRequestWithParams:(MTRUnitTestingClusterTestStructArgu
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24524,7 +24853,12 @@ - (void)testNestedStructArgumentRequestWithParams:(MTRUnitTestingClusterTestNest
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24581,7 +24915,12 @@ - (void)testListStructArgumentRequestWithParams:(MTRUnitTestingClusterTestListSt
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24657,7 +24996,12 @@ - (void)testListInt8UArgumentRequestWithParams:(MTRUnitTestingClusterTestListInt
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24724,7 +25068,12 @@ - (void)testNestedStructListArgumentRequestWithParams:(MTRUnitTestingClusterTest
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -24879,7 +25228,12 @@ - (void)testListNestedStructListArgumentRequestWithParams:
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterBooleanResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterBooleanResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25058,7 +25412,12 @@ - (void)testListInt8UReverseRequestWithParams:(MTRUnitTestingClusterTestListInt8
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestListInt8UReverseResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestListInt8UReverseResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25125,7 +25484,12 @@ - (void)testEnumsRequestWithParams:(MTRUnitTestingClusterTestEnumsRequestParams
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestEnumsResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEnumsResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestEnumsResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25172,7 +25536,12 @@ - (void)testNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestNullable
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestNullableOptionalResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25230,7 +25599,12 @@ - (void)testComplexNullableOptionalRequestWithParams:(MTRUnitTestingClusterTestC
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestComplexNullableOptionalResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestComplexNullableOptionalResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25445,7 +25819,12 @@ - (void)simpleStructEchoRequestWithParams:(MTRUnitTestingClusterSimpleStructEcho
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterSimpleStructResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterSimpleStructResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterSimpleStructResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25612,7 +25991,12 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEmitTestEventResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestEmitTestEventResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
@@ -25663,7 +26047,12 @@ - (void)testEmitTestEventRequestWithParams:(MTRUnitTestingClusterTestEmitTestEve
     MTRAsyncCallbackReadyHandler readyHandler = ^(MTRDevice * device, NSUInteger retryCount) {
         MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID
                                                                 controller:self.device.deviceController];
-        auto * bridge = new MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(self.callbackQueue, completion,
+        auto * bridge = new MTRUnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackBridge(
+            self.callbackQueue,
+            ^(id _Nullable value, NSError * _Nullable error) {
+                completion(value, error);
+                [workItem endWork];
+            },
             ^(ExchangeManager & exchangeManager, const SessionHandle & session,
                 UnitTestingClusterTestEmitTestFabricScopedEventResponseCallbackType successCb, MTRErrorCallback failureCb,
                 MTRCallbackBridgeBase * bridge) {
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index 6c5241cd905979..275e2e46bcd9db 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -109,7 +109,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -157,7 +158,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -203,7 +205,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -249,7 +252,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -349,7 +353,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -405,7 +410,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -455,7 +461,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -501,7 +508,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -551,7 +559,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -627,7 +636,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -683,7 +693,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -739,7 +750,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -795,7 +807,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1557,7 +1570,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1605,7 +1619,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1707,7 +1722,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1757,7 +1773,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1801,7 +1818,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1853,7 +1871,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -1953,7 +1972,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2003,7 +2023,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2083,7 +2104,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2331,7 +2353,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2375,7 +2398,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2423,7 +2447,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2503,7 +2528,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2635,7 +2661,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2701,7 +2728,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2885,7 +2913,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -2991,7 +3020,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -3095,7 +3125,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -3213,7 +3244,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -3293,7 +3325,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -3345,7 +3378,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -3609,7 +3643,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4289,7 +4324,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4383,7 +4419,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4611,7 +4648,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4783,7 +4821,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4859,7 +4898,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -4997,7 +5037,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5041,7 +5082,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5113,7 +5155,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5165,7 +5208,8 @@ NS_ASSUME_NONNULL_BEGIN
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5240,7 +5284,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5294,7 +5339,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5348,7 +5394,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5412,7 +5459,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5470,7 +5518,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5528,7 +5577,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5600,7 +5650,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5710,7 +5761,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5767,7 +5819,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5823,7 +5876,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5879,7 +5933,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
@@ -5936,7 +5991,8 @@ MTR_NEWLY_AVAILABLE
  * request) within the timeout window.
  *
  */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy, nullable)
+    NSNumber * timedInvokeTimeoutMs MTR_NEWLY_DEPRECATED("Timed invoke does not make sense for server to client commands");
 
 - (instancetype)init;
 - (id)copyWithZone:(NSZone * _Nullable)zone;
diff --git a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
index 2a7afeb112de66..db8e1050622e19 100644
--- a/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
+++ b/src/darwin/Framework/CHIPTests/MTRDeviceTests.m
@@ -770,6 +770,7 @@ - (void)test011_ReadCachedAttribute
     // reportHandler returns TRUE if it got the things it was looking for or if there's an error.
     __block BOOL (^reportHandler)(NSArray * _Nullable value, NSError * _Nullable error);
     __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(2) maxInterval:@(60)];
+    params.resubscribeIfLost = NO;
     [device subscribeWithQueue:queue
         params:params
         clusterStateCacheContainer:clusterStateCacheContainer
@@ -836,6 +837,7 @@ - (void)test011_ReadCachedAttribute
     XCTestExpectation * newSubscriptionEstablished = [self expectationWithDescription:@"New subscription established"];
     MTRSubscribeParams * newParams = [[MTRSubscribeParams alloc] initWithMinInterval:@(2) maxInterval:@(60)];
     newParams.replaceExistingSubscriptions = NO;
+    newParams.resubscribeIfLost = NO;
     [cluster subscribeAttributeOnOffWithParams:newParams
         subscriptionEstablished:^{
             NSLog(@"New subscription was established");
@@ -1023,6 +1025,7 @@ - (void)test012_SubscriptionError
     // Subscribe
     XCTestExpectation * expectation = [self expectationWithDescription:@"subscribe OnOff attribute"];
     MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(1) maxInterval:@(10)];
+    params.resubscribeIfLost = NO;
     [device subscribeToAttributesWithEndpointID:@1
         clusterID:@6
         attributeID:@0
@@ -1432,6 +1435,91 @@ - (void)test018_SubscriptionErrorWhenNotResubscribing
     [self waitForExpectations:@[ errorExpectation ] timeout:60];
 }
 
+- (void)test019_MTRDeviceMultipleCommands
+{
+#if MANUAL_INDIVIDUAL_TEST
+    [self initStack];
+    [self waitForCommissionee];
+#endif
+
+    __auto_type * device = [MTRDevice deviceWithNodeID:kDeviceId deviceController:sController];
+    dispatch_queue_t queue = dispatch_get_main_queue();
+
+    __auto_type * opcredsCluster = [[MTRClusterOperationalCredentials alloc] initWithDevice:device endpointID:@(0) queue:queue];
+    __auto_type * onOffCluster = [[MTRClusterOnOff alloc] initWithDevice:device endpointID:@(1) queue:queue];
+    __auto_type * badOnOffCluster = [[MTRClusterOnOff alloc] initWithDevice:device endpointID:@(0) queue:queue];
+
+    XCTestExpectation * onExpectation = [self expectationWithDescription:@"On command executed"];
+    [onOffCluster onWithParams:nil
+                expectedValues:nil
+         expectedValueInterval:nil
+                    completion:^(NSError * _Nullable error) {
+                        XCTAssertNil(error);
+                        [onExpectation fulfill];
+                    }];
+
+    XCTestExpectation * offFailedExpectation = [self expectationWithDescription:@"Off command failed"];
+    [badOnOffCluster offWithParams:nil
+                    expectedValues:nil
+             expectedValueInterval:nil
+                        completion:^(NSError * _Nullable error) {
+                            XCTAssertNotNil(error);
+                            [offFailedExpectation fulfill];
+                        }];
+
+    XCTestExpectation * updateLabelExpectation = [self expectationWithDescription:@"Fabric label updated"];
+    __auto_type * params = [[MTROperationalCredentialsClusterUpdateFabricLabelParams alloc] init];
+    params.label = @("Test");
+    [opcredsCluster updateFabricLabelWithParams:params
+                                 expectedValues:nil
+                          expectedValueInterval:nil
+                                     completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         XCTAssertNil(error);
+                                         XCTAssertNotNil(data);
+                                         XCTAssertEqualObjects(data.statusCode, @(0));
+                                         XCTAssertNotNil(data.fabricIndex);
+                                         [updateLabelExpectation fulfill];
+                                     }];
+
+    XCTestExpectation * offExpectation = [self expectationWithDescription:@"Off command executed"];
+    [onOffCluster offWithParams:nil
+                 expectedValues:nil
+          expectedValueInterval:nil
+                     completion:^(NSError * _Nullable error) {
+                         XCTAssertNil(error);
+                         [offExpectation fulfill];
+                     }];
+
+    XCTestExpectation * onFailedExpectation = [self expectationWithDescription:@"On command failed"];
+    [badOnOffCluster onWithParams:nil
+                   expectedValues:nil
+            expectedValueInterval:nil
+                       completion:^(NSError * _Nullable error) {
+                           XCTAssertNotNil(error);
+                           [onFailedExpectation fulfill];
+                       }];
+
+    XCTestExpectation * updateLabelFailedExpectation = [self expectationWithDescription:@"Fabric label update failed"];
+    params.label = @("12345678901234567890123445678901234567890"); // Too long
+    [opcredsCluster updateFabricLabelWithParams:params
+                                 expectedValues:nil
+                          expectedValueInterval:nil
+                                     completion:^(MTROperationalCredentialsClusterNOCResponseParams * _Nullable data,
+                                         NSError * _Nullable error) {
+                                         XCTAssertNotNil(error);
+                                         XCTAssertNil(data);
+                                         [updateLabelFailedExpectation fulfill];
+                                     }];
+
+    [self waitForExpectations:@[
+        onExpectation, offFailedExpectation, updateLabelExpectation, offExpectation, onFailedExpectation,
+        updateLabelFailedExpectation
+    ]
+                      timeout:60
+                 enforceOrder:YES];
+}
+
 - (void)test900_SubscribeAllAttributes
 {
 #if MANUAL_INDIVIDUAL_TEST
@@ -1453,6 +1541,7 @@ - (void)test900_SubscribeAllAttributes
     __block void (^reportHandler)(id _Nullable values, NSError * _Nullable error) = nil;
 
     MTRSubscribeParams * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(2) maxInterval:@(10)];
+    params.resubscribeIfLost = NO;
     [device subscribeToAttributesWithEndpointID:@1
         clusterID:@6
         attributeID:@0xffffffff

From 3fa2104a5c665e2f2507e4f145e34a739f7b2997 Mon Sep 17 00:00:00 2001
From: Andrei Litvin 
Date: Thu, 17 Nov 2022 18:37:30 +0100
Subject: [PATCH 27/36] Stop using :latest tag for docker images in bouffalolab
 (#23666)

---
 .github/workflows/examples-bouffalolab.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/examples-bouffalolab.yaml b/.github/workflows/examples-bouffalolab.yaml
index 9c31fbd9ba581e..11539d512f579f 100644
--- a/.github/workflows/examples-bouffalolab.yaml
+++ b/.github/workflows/examples-bouffalolab.yaml
@@ -31,7 +31,7 @@ jobs:
     if: github.actor != 'restyled-io[bot]'
 
     container:
-      image: connectedhomeip/chip-build:latest
+      image: connectedhomeip/chip-build:0.6.06
       volumes:
         - "/tmp/bloat_reports:/tmp/bloat_reports"
     steps:
@@ -87,7 +87,7 @@ jobs:
     if: github.actor != 'restyled-io[bot]'
 
     container:
-      image: connectedhomeip/chip-build:latest
+      image: connectedhomeip/chip-build:0.6.06
       volumes:
         - "/tmp/bloat_reports:/tmp/bloat_reports"
     steps:

From c76b2588e8ead4057d745bc360f18d95c2470059 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arkadiusz=20Ba=C5=82ys?= 
Date: Thu, 17 Nov 2022 20:15:25 +0100
Subject: [PATCH 28/36] [nrfconnect] Initial Matter over WiFi implementation.
 (#23607)

* [nrfconnect] Initial Matter over WiFi implementation.

Some WiFi related features might not work as expected yet.
This will be fixed when the Zephyr NRF WiFi module is improved.
All implementations have been synchronized to sdk-nrf v2.1.1.

Commits included:
- Prepare configuration for hci_rpmsg
- Adapt Android CHIPTool guide to Wi-Fi devices
Make the guide a little bit more aware of the world of
Wi-Fi devices.
- Disable Wi-Fi low-power mode
Noticed Wi-Fi low-power mode causes performance issues,
at least with some APs.
- Implemented the WiFiNetworkIterator.
Replaced dummy implementation of WiFiNetworkIterator
This fixes an issue with infinite loop when using this iterator in Matter core.
- Added including CHIPMemString.h to fix WiFi build

Signed-off-by: Marcin Kajor 
Signed-off-by: Damian Krolik 
Signed-off-by: Kamil Kasperczyk 
Signed-off-by: Arkadiusz Balys 

* Restyled by prettier-markdown

Restyled by gn

Signed-off-by: Marcin Kajor 
Signed-off-by: Damian Krolik 
Signed-off-by: Kamil Kasperczyk 
Signed-off-by: Arkadiusz Balys 
Co-authored-by: Restyled.io 
---
 config/nrfconnect/chip-module/CMakeLists.txt  |   7 +-
 .../nrfconnect/chip-module/Kconfig.defaults   |  64 ++-
 .../nrfconnect/chip-module/Kconfig.features   |  25 +
 .../chip-module/Kconfig.hci_rpmsg.defaults    |  99 ++++
 .../chip-module/Kconfig.hci_rpmsg.root        |  21 +
 config/zephyr/Kconfig                         |   2 +-
 .../images/CHIPTool_device_commissioned.jpg   | Bin 15897 -> 0 bytes
 .../images/CHIPTool_device_commissioned.png   | Bin 0 -> 15713 bytes
 .../nrfconnect_android_commissioning.md       | 119 ++---
 .../boards/nrf5340dk_nrf5340_cpuapp.overlay   |   3 -
 .../nrfconnect/main/AppTask.cpp               |   2 +
 .../boards/nrf5340dk_nrf5340_cpuapp.overlay   |   3 -
 examples/chef/nrfconnect/main.cpp             |   7 +-
 .../nrfconnect/main/AppTask.cpp               |   4 +
 .../lighting-app/nrfconnect/main/AppTask.cpp  |   4 +
 .../boards/nrf5340dk_nrf5340_cpuapp.overlay   |   3 -
 examples/lock-app/nrfconnect/main/AppTask.cpp |   4 +
 examples/pump-app/nrfconnect/main/AppTask.cpp |   4 +
 .../nrfconnect/main/AppTask.cpp               |   4 +
 .../boards/nrf5340dk_nrf5340_cpuapp.overlay   |   3 -
 .../window-app/nrfconnect/main/AppTask.cpp    |   4 +
 .../window-app/nrfconnect/prj_no_dfu.conf     |   1 +
 .../window-app/nrfconnect/prj_release.conf    |   1 +
 .../internal/GenericConnectivityManagerImpl.h |   2 +-
 src/inet/InetConfig.h                         |  22 +
 src/inet/UDPEndPointImplSockets.cpp           |   9 +-
 src/platform/Zephyr/BLEManagerImpl.cpp        |   1 +
 .../Zephyr/ConfigurationManagerImpl.cpp       |  18 +
 .../Zephyr/ConfigurationManagerImpl.h         |   5 -
 .../Zephyr/DiagnosticDataProviderImpl.cpp     |   7 +-
 .../Zephyr/DiagnosticDataProviderImpl.h       |   3 +-
 .../DiagnosticDataProviderImplGetter.cpp      |  29 ++
 src/platform/Zephyr/InetUtils.cpp             |  41 ++
 src/platform/Zephyr/InetUtils.h               |  32 ++
 src/platform/nrfconnect/BUILD.gn              |  15 +
 .../nrfconnect/CHIPDevicePlatformConfig.h     |  11 +-
 .../nrfconnect/ConnectivityManagerImpl.cpp    |   4 +-
 .../nrfconnect/ConnectivityManagerImpl.h      |  12 +-
 .../DiagnosticDataProviderImplNrf.cpp         | 136 ++++++
 .../DiagnosticDataProviderImplNrf.h           |  60 +++
 .../wifi/ConnectivityManagerImplWiFi.cpp      | 228 +++++++++
 .../wifi/ConnectivityManagerImplWiFi.h        |  82 ++++
 .../nrfconnect/wifi/NrfWiFiDriver.cpp         | 284 +++++++++++
 src/platform/nrfconnect/wifi/NrfWiFiDriver.h  | 123 +++++
 src/platform/nrfconnect/wifi/WiFiManager.cpp  | 447 ++++++++++++++++++
 src/platform/nrfconnect/wifi/WiFiManager.h    | 171 +++++++
 src/platform/telink/BUILD.gn                  |   1 +
 47 files changed, 2029 insertions(+), 98 deletions(-)
 create mode 100644 config/nrfconnect/chip-module/Kconfig.hci_rpmsg.defaults
 create mode 100644 config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root
 delete mode 100644 docs/guides/images/CHIPTool_device_commissioned.jpg
 create mode 100644 docs/guides/images/CHIPTool_device_commissioned.png
 create mode 100644 src/platform/Zephyr/DiagnosticDataProviderImplGetter.cpp
 create mode 100644 src/platform/Zephyr/InetUtils.cpp
 create mode 100644 src/platform/Zephyr/InetUtils.h
 create mode 100644 src/platform/nrfconnect/DiagnosticDataProviderImplNrf.cpp
 create mode 100644 src/platform/nrfconnect/DiagnosticDataProviderImplNrf.h
 create mode 100644 src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp
 create mode 100644 src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.h
 create mode 100644 src/platform/nrfconnect/wifi/NrfWiFiDriver.cpp
 create mode 100644 src/platform/nrfconnect/wifi/NrfWiFiDriver.h
 create mode 100644 src/platform/nrfconnect/wifi/WiFiManager.cpp
 create mode 100644 src/platform/nrfconnect/wifi/WiFiManager.h

diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt
index 305edd21e9c2e3..c27f4bfe55e2e6 100644
--- a/config/nrfconnect/chip-module/CMakeLists.txt
+++ b/config/nrfconnect/chip-module/CMakeLists.txt
@@ -219,6 +219,7 @@ chip_gn_arg_bool  ("chip_progress_logging"                  CONFIG_MATTER_LOG_LE
 chip_gn_arg_bool  ("chip_detail_logging"                    CONFIG_MATTER_LOG_LEVEL GREATER_EQUAL 4)
 chip_gn_arg_bool  ("chip_automation_logging"                "false")
 chip_gn_arg_bool  ("chip_malloc_sys_heap"                   CONFIG_CHIP_MALLOC_SYS_HEAP)
+chip_gn_arg_bool  ("chip_enable_wifi"                       CONFIG_WIFI_NRF700X)
 
 if (CONFIG_CHIP_FACTORY_DATA)
     chip_gn_arg_bool  ("chip_use_transitional_commissionable_data_provider"  "false")
@@ -232,8 +233,12 @@ if (CONFIG_CHIP_ROTATING_DEVICE_ID)
     chip_gn_arg_bool("chip_enable_additional_data_advertising" "true")
 endif()
 
-if (CONFIG_CHIP_ENABLE_DNSSD_SRP)
+if (CONFIG_NET_L2_OPENTHREAD)
     chip_gn_arg_string("chip_mdns" "platform")
+elseif(CONFIG_WIFI_NRF700X)
+    chip_gn_arg_string("chip_mdns" "minimal")
+else()
+    chip_gn_arg_string("chip_mdns" "none")
 endif()
 
 if (CONFIG_CHIP_CRYPTO_PSA)
diff --git a/config/nrfconnect/chip-module/Kconfig.defaults b/config/nrfconnect/chip-module/Kconfig.defaults
index 228dbaeb478089..e02d0d2981cc71 100644
--- a/config/nrfconnect/chip-module/Kconfig.defaults
+++ b/config/nrfconnect/chip-module/Kconfig.defaults
@@ -213,20 +213,72 @@ config NVS_LOOKUP_CACHE_SIZE
     int
     default 512
 
+# Enable OpenThread
+
+config NET_L2_OPENTHREAD
+    bool
+    default y if !WIFI_NRF700X
+
+if NET_L2_OPENTHREAD
+
 # Increase the default RX stack size
 config IEEE802154_NRF5_RX_STACK_SIZE
     int
     default 1024
 
-# Enable OpenThread
+endif
 
-config NET_L2_OPENTHREAD
+if CHIP_WIFI
+
+config NRF_WIFI_LOW_POWER
     bool
-    default y
+    default n
+
+config MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG
+    bool
+    default n
+
+config SYSTEM_WORKQUEUE_STACK_SIZE
+    int
+    default 1120
+
+# align these numbers to match the OpenThread config
+config NET_IF_UNICAST_IPV6_ADDR_COUNT
+    int
+    default 6
+
+config NET_IF_MCAST_IPV6_ADDR_COUNT
+    int
+    default 8
+
+config NET_SOCKETS_POSIX_NAMES
+    bool
+    default n
+
+config MBEDTLS_SSL_OUT_CONTENT_LEN
+    int
+    default 900
+
+# options managed by IP4/IP6 simultaneous support
+# aligned here to match OpenThread config
+config NET_MAX_ROUTERS
+    int
+    default 1
+
+config NET_MAX_CONN
+    int
+    default 4
+
+config SHELL_STACK_SIZE
+    int
+    default 2616
+
+config HEAP_MEM_POOL_SIZE
+    int
+    default 200000
+
+endif
 
-choice OPENTHREAD_STACK_VERSION
-	default OPENTHREAD_THREAD_VERSION_1_3
-endchoice
 
 # Enable mbedTLS from nrf_security library
 
diff --git a/config/nrfconnect/chip-module/Kconfig.features b/config/nrfconnect/chip-module/Kconfig.features
index 1f12053658f23e..6ff4aa5ea62527 100644
--- a/config/nrfconnect/chip-module/Kconfig.features
+++ b/config/nrfconnect/chip-module/Kconfig.features
@@ -19,6 +19,31 @@
 
 if CHIP
 
+config CHIP_WIFI
+	bool "Enable nrfconnect Wi-Fi support"
+	default y if SHIELD_NRF7002_EK || BOARD_NRF7002DK_NRF5340_CPUAPP
+	select WIFI_NRF700X
+	select WIFI
+	select WPA_SUPP
+	imply FLASH
+	imply SETTINGS
+	imply NVS
+	imply FLASH_MAP
+	imply NORDIC_SECURITY_BACKEND
+	imply MBEDTLS_ENTROPY_C
+	imply MBEDTLS_PSA_CRYPTO_C
+	imply NET_STATISTICS
+	imply NET_L2_ETHERNET
+	imply NET_PKT_TXTIME
+	imply NET_PKT_TIMESTAMP
+	imply MBEDTLS_PROMPTLESS
+	imply BUILD_OUTPUT_META
+	imply USE_DT_CODE_PARTITION # might be removed when the OTA is enabled
+	imply NET_IPV6_ND # enable Neighbor Discovery to handle Router Advertisements
+	imply NET_IPV6_NBR_CACHE
+	imply NET_STATISTICS_IPV6
+	imply NET_STATISTICS_USER_API
+
 config CHIP_QSPI_NOR
 	bool "Enable QSPI NOR feature set"
 	help
diff --git a/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.defaults b/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.defaults
new file mode 100644
index 00000000000000..8069d710047338
--- /dev/null
+++ b/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.defaults
@@ -0,0 +1,99 @@
+#
+#   Copyright (c) 2022 Project CHIP Authors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+
+# The purpose of this file is to define new default values of settings used when building hci_rpmsg child image for Matter samples.
+
+config LOG
+    bool
+    default n
+
+config HEAP_MEM_POOL_SIZE
+    int
+    default 8192
+
+config MAIN_STACK_SIZE
+    int
+    default 2048
+
+config SYSTEM_WORKQUEUE_STACK_SIZE
+    int
+    default 2048
+
+config BT
+    bool
+    default y
+
+config BT_HCI_RAW
+    bool
+    default y
+
+config BT_MAX_CONN
+    int
+    default 1
+
+config BT_PERIPHERAL
+    bool
+    default y
+
+config BT_CENTRAL
+    bool
+    default n
+
+config BT_BUF_ACL_RX_SIZE
+    int
+    default 502
+
+config BT_BUF_ACL_TX_SIZE
+    int
+    default 251
+
+config BT_CTLR_DATA_LENGTH_MAX
+    int
+    default 251
+
+config BT_CTLR_ASSERT_HANDLER
+    bool
+    default y
+
+config BT_HCI_RAW_RESERVE
+    int
+    default 1
+
+# Workaround: Unable to allocate command buffer when using K_NO_WAIT since
+# Host number of completed commands does not follow normal flow control.
+config BT_BUF_CMD_TX_COUNT
+    int
+    default 10
+
+config ASSERT
+    bool
+    default y
+
+config DEBUG_INFO
+    bool
+    default y
+
+config EXCEPTION_STACK_TRACE
+    bool
+    default y
+
+config IPC_SERVICE
+    bool
+    default y
+
+config MBOX
+    bool
+    default y
diff --git a/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root b/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root
new file mode 100644
index 00000000000000..8c4f6eee49cbc2
--- /dev/null
+++ b/config/nrfconnect/chip-module/Kconfig.hci_rpmsg.root
@@ -0,0 +1,21 @@
+#
+#   Copyright (c) 2022 Project CHIP Authors
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+
+# The purpose of this file is to create a wrapper Kconfig file that will be set as
+# hci_rpmsg_KCONFIG_ROOT and processed before any other Kconfig for hci_rpmsg child image.
+
+rsource "Kconfig.hci_rpmsg.defaults"
+source "Kconfig.zephyr"
diff --git a/config/zephyr/Kconfig b/config/zephyr/Kconfig
index 9928bb35b49258..c7c5b356a160d9 100644
--- a/config/zephyr/Kconfig
+++ b/config/zephyr/Kconfig
@@ -112,7 +112,7 @@ config CHIP_ENABLE_PAIRING_AUTOSTART
 
 config CHIP_ENABLE_DNSSD_SRP
 	bool "Enable support for service registration"
-	default y
+	default y if NET_L2_OPENTHREAD
 	imply OPENTHREAD_ECDSA
 	imply OPENTHREAD_SRP_CLIENT
 	help
diff --git a/docs/guides/images/CHIPTool_device_commissioned.jpg b/docs/guides/images/CHIPTool_device_commissioned.jpg
deleted file mode 100644
index 85bbbdc2b8fefcefe2403852c3fa8d0afabf8b4d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15897
zcmd_R2UJwg(l5IAWMIfS4>{+YbIv(~gdqndDM>&?k{~(foCPEr02L5H5XnJB6a*9z
z5k!#i#(#L{d*40Zx#wGNy|v!Gw`bMv>gww1>gr$j-ZQ)BV)5b~K%%RuqX~c@2wcN`
zfQvQYhQ>87cL31Q;RR3t06+ja5CV|kI8Gdu6hi@4TrP>D-$@f2i1l~n$7ltHV?6=_
z!!>a-ERF*I%KdSf_y8Ip1Eif@
zgD&&>d*QUJb!|7<_!j1O$54_8N;9Wff
z{cz(q$LX{G=>v`f0EQr35CpKkzE}ZEQGuX950~ITS3xh=-}Co(Vg!N!Q`{`70s^@C
z^TmCzIL;Cf#a)ANv*-c10KvH26%YixaM%CX_HP^iukv8*HC$`}KrP^MSfH1OXD~)o
zSVV#!qk(f9V-_6XkHv6b#kvG}1!H9~e?!8{AM1wo2*hH8T(G_YSO0*990u#>?By$q
z`90vE-wl=h|A`)tAjaI&D+q%_59V@UfV&s28(h)X%N6S%gmuG&_`6{PG0qsZK&*4H
zS11;v7U1U>;2(rh2@VeQatR6c3h);&^K=fxs`z^OV1L6IW8r@}ATSu$SpQEe81CPW
z2I0W#`j-_Pc7GcY3<&fP`m3uTA(t?LAZH<*0U=+khqJG1fE$)a@OLbJpaiG@8h{p{1Ly$;fC*s6?FuXa8^8{5;Pw}8fCu0O_;6Sf1cU%#9IC_saX12I4>
za07?~;(=R00+0wK0V%+3AQeah(t!*h6UYK`fLtIC$Oj66BA^&30m^`KpaQ4_s(~7y
z7N`U2fkvPSXa-t8k7O$KzUFRR0dT*HBbZ81hqk3
zP!BW!jX-126f_4dKr7G&v<2-!NAMEp47!3?&;#@Yy+L2l9}EDmfI(mg7z$nk!@)@K
zIv5Scf^lFxm;fe$$>41;4NM0!!E7)W%mWL+BCrH311rEPum-FH8^9*88EggHzz(nz
z>;`+m``|;c9~=aqfJ5L2I0}w|FThD~3Y-RK!Fg~ITn1l*Z^1S21GoWhg4^I{@C*1A
z{04pp55b?{33v*gLjVW_0)rqScn|^zA%qx02BCmZL1-X!5Jm_ygayI|;ec>Mcp>}{
zL5K)M3?c!MhR8zXA&L+ch#Eu#q7Bi7=tGPkCJ-}-CBzzH3vqxrL7X9O5O;_d#0TOB
zxeN(}gg~xB!XS~5>yTJT9OM=x5t0H)g``6=AvusdNFk&cQUff($~QK!zcskTJ*vyS;zC&&)uD`X#X2swhB
zK+Yf+PzV$bMM3eQgisPFIg}Dg1Eq&DK`~G^C?}K$$`2KUia^DoQczi_0#pgA3e|vW
zL-nABP!p&*)Dmg~wTC)EU7%Q~C)5Y(54{2nhF*n+L!+QE&>PTrXd*NPng-2)W<&F#
zMbJ`c1+*Gk2W^D5K--}Apxw|u=tJlL^a*qr`W*TK`Vu+~or5kySD>rV_s|XK7W6Z8
z7rGBUg#Lv7f}X=5FgOeaBY+XZ$Y7K(8W;nN8O93ZfbqciVL~u5m?TUFrT|lhsll{h
zx-bKn3CtX31+#-W!dzfjm?z8^761!^g~GyMQLq@;O;`df1(pWOgyp~rV8yUQnOa3(k_oCD4S7l4bv#o^L$dAKrM4Xy>(gB!t3;g)b)xFg&J?hf~Y`@yfk
zL*QZXD0nRVCOi>-8=el&hUdeJ;pOmZcs;xseiwcZ-UELCAAmoFKZB3MU&3eL3-A^A
zD*OX{6aE?g6@CE!2|q;u2p9r|KqE*H6bKpw1A+y?f#5+1AVd%n2pNPTLKUHj&_x&`
z%n()xJA@O$72%2SMO;P%Bf=0-h*(5CA{mi}$VB8JiV$UpYD7Jv8PSgDLi8c}5l;{!
zh;hVA#4KVF@fxv)*g$+j>>~CNM~GiY00~3lAqkOWNGc>fk{QX4wD
z4XKSZK$;*ek+w)Dq$|=B>4&_63`IsDqmeg}Nyt=WCNd9Mge*taARCaa$a}~h}6bp(I#fK6?iKAptiYPUd
zHp&2Hin2o4qnuIhC?C{iR0t{@6^*)yNzFs4%LimM|GnfpaxOHs4>(_
z)GTTVwTfCtZKHNk-%&qNXLwLN6doZS86GtrBOWUr7al*J2%Z$4Je~@kCZ0Z?37#dM
z9iB6uJDv~T6}(Wq2)tOlTX-pW8F;yPMR*l>wRlZ#^p%I}4p*^7sp%-BQVJKlFVH{x+VLD+h
zVF_V1VIyHXVGm(H;V|Ji;WXhA;VR)r!X3izgeOEG5t4|Ah?0n&h?R(kNQg+1NP$S5
zNSDZj$ePHB$eqZSD2OPWD3&OZD2*tGsFVgh0^Vp?JhF&D8Qu>`R^u^O>1u?ev?u@kX7u^(|TaRl)V;w0j9;(X#V;#%Ss
z;!ffR#7~IFh+h#e60Z_}B>qBtNPJ2HCBY{lBcUb1kZ_R*kw}s#kf@XBlbDg%lDLp~
zkz6LZMiNbOizJOChopq0nxu*39?5-@CnV2Frbre^R!KHVc1eDaoRPvw(WDfl^rUR0
zyriO}GNdY`+N8#$R-{g(9;E)Hp`=ly@uaDw*`&p!)uc_N_edX*J|P_=ohDr(T_fEl
z-6Q=;29Tl1h{>qQn8~=v1j!`H6v;Hn49P6W9LTU_eq@(SSvR~v-asqO4a(Z$$az1h~ayfE!a(!}ha(i+&a$oXb@<{TV
z3sFl`t5EAwn^D_SW2ybAuTsZQCsAio7gN_zw^H{|4^ls;o~B-*
zUZ?&-eMAG$;L(uL(9^Kf2+~N=DAVZBn9|tOU}^kmuF}NPB-3Qk6w}nw+@9TbWv1n!6{VG<)u1(`wWf8Z^`Q->y-u4zn?YMhTTR6hp~(0`#nVgMNk7$_N-8F(1P7!(+^7)%)K7_bbN8NwNEGNdu&GgLA(GjuaN
zW*BFfV_0R_W;kFtXGAfQF)}c6F^VwCF={XxGukq`F$OS(F~%{bG3GN?GPW@GFg|8{
z!8p&j#`u}>kO^SIXQE_cX5wWMXHsO+VKQTKWb$MRVv1r)WXfVHVX9~9V0y&#jA@$b
zHPa^3KGP{Pl9`N|ftib0lv$oxi`kUfp4o#rkU5e$fjN`8gt?BngZUBjDDyP)8|E$M
z@66{I6owqbgyF%6W0Wwu7;}sh#v2oYiNT~`axoQ{W=s#}31$Mbi1~oo#T>K1ScqBZ
zSU6aOS>#wWSxi{$Sv*(*S+27rv1GH9u{5%Du?(`jU|C>!&+>)kCo7DVn3ax|gH@PS
zo>hz0l+}^di#3=vnl*(rm$ibmg|(OUDeFttW!8_Z-&jxCP;BIE%xt`D5^O4L`fS#0
zu51Bp;cU0qGT2Jk>e)Kk2H3{g=Goq}?Xn%S!`VsL8Q8hm#n_eD_1G=hUD*BE!`S25
zGuVsS>)AWm2iV8i7uY|r@3Nn8AUMc4m^gSiBsf$!3^;5!upE~;A~_N{vN_5*nmKwo
zhB&4;UUO`6eCN2}B;cgxWaAX#l;hOmG~;yQ^x?e9d6P4pvzW7^9AQ3=Q`&e
z=NT6s7bO=9mjIUxmnN4fmm`-qS14B;*B!1Rt~#zxu0gIBTuWRVT;I6PxbeBExY@Xc
zxaGLDxy`vRar<$Hao^(3$-H^I)x7Pz
zk9fy;7kJlszww^);qy`RvGa-WDe~#@S@U7}0{No(Zu1rJ)$n!j4e-6-TjKl3_njZ)
zC*r5)=jNB-SLHY2x99ib59N>JPv0UAyOeGA$}oQAuS;bAs3;`Lf3^-gbIY}ggS+u2u%sS5&A52EQ}DQ
z5M~t?5>^n_6Sfid5Dpf;A)GE;D%>pGC;Uu!PWXfHH{lBrLJ>LCj?M1ys!$cEAb405|+eHUNCq!S1
zeiHpDh7h9=V-ph*QxY=}vlsIgyC!x^EJv(LtX*tSY*OsC*k`e0ailnvIJ>x*xQe)u
zxTCnQc!YS8c)ob8c$fH7@oDjQ;$OwjB+wFc5#lND50TNg7JpOZrHLOD0L?N!ChsNe)TQNUlllNnS`1Nijl-#P^
zSGjX}B6%ix0eJ;^19^LSU-?M+6!{|gCi(mFWAe-LpX84f@Dykjcobw5v=yusJQc1f
zBr4=9)G72RJX2Uu*i<-DL@H7%aw$qFYAISNdMI91Oi;{ItW)e!e5SadxT$!ggjAwd
z;!=`Q(o(Wg@=&^_l&F-iRIk*lG^(_uw5@ckjHgVi%&RP`tgCFR?4ul^oT6N;+^qai
zc|!S(@)zZE6(SWT6(JQR6(f~PDwkDaRWej6RXS9js?4aYs~o7pRVh_DRV7umRIOA!
zRj;WgsTQg>sy0Ww{-S-ML!!f~Bc`LF
zW2xh*6Rwk@Q=-$VGpIAI^FilO7okg|%d0D=YoP0-dqww#Znkc%ZjbJB-4)$0x)*vR
zdaQcldYXFHdR}@FdZ~J4dhL2o_2%?8^^W!N^%?X9^_BHa_1*MC^%M0A^_%tk^{4dT
z>mL{(3}_Ab3=|BE44e&u4B`#)3>pj`8cZ6zGuStT8B!ba7|IzM7&;jS8s0R_HEb|^
zU^rp8YPfF%Gomu$F_JSfG`eIIXcTXhXVhr)&}h#mxT%(@t*M`B
zjA^E6jcKpxxanKdZ)PwvDl;B4c{3w37qbwvM6)8ZR-M_
zU-M}5O!FG^Uh{GDx90m6a0?m>J_|()6AP@xHH#FBQj2zrVT(nJ&lcyFWR@J3(w2Ib
zPL_d|@sk`p^c?hS5gYM%~8R#>XbwCd;PI=Dy9O&3l_4ws^LTwj#C~
zwl=oDwlTKZw)M6TZKrJ4ZGYMk*fHCQ*=gC?*#+3e+2z?a*$vpu*lpVVvM07@vzM~h
zv%h2?Y@cXfY~N--WWQ*?;{ZBPI`B9sIG8wK9l{;b94Z~U9mXA29lkrF92p#i9n~Fe
z9Q_<`IOaMwIu1C_IBq(gI*~YWILSB}I=MJqbxLt6cj|O{?)1iK{}SR7{UxDG>X)o9
z`CYnkDfd#-rGZPcm$omRIg>eaIm}g%U!|U)ZN29%01J)&i#@5
zwELF(nFpB%w}*mG(PM
zh4`iTRrvM#P5Q0-o%oabbNMUyoB4bD$N1;^xA;HxU-I7zKm;%Zhy~~bTnY#cxE)Xx
z&=)Wj@G;=*GWliR%gUFnF8f`+dAaa%`{ies-(EhrLU4ukiu4tuEACe!uVh_myfS!Y
z;mU3xERa4>G*COxDKIoJHLyDHe&DOXt-y;Qsv!O#wIJJ|D?y1tWkKCR6G7`iC&8q_
z+`&r0mcf3(H-n3UJA$7FzY9JJAqwFPQ3x>)@d>#RQV`M>@+{rC*o&|aVZXx3!+FD1!)?Q_geQepg!hI|g>OXw
z5!4Yv5n2&W5up)j5w#Kh5%Uqdk?=^yNQp>;NNi+OWKLvDlzEhI
z)Xk{ksLrT~sEw$z>y+08u4`O(xE^vn^?J?q{_FGCccT%}Owm%&M$sP8(b0L)ZPBCA
z@1l=mNMm?nRAOvn0%MY6s$w3*%*O1*!eSX?C1MR@-D9I;^J3d#M`PDwk8hCO;Ju-C
z!|q1#joUYBZuH-nzwtE=8Hb6Ji8G1wj*E*citCJ}nS_($>c@n3JDZn4~wy=8XG_g4I^(px>ZrfzK~KoaN^
z#1jk>JQ89O3KBXJ#uL^P&Jw8;g%foWT@oV_a}rwu*1~{rdJ{Dsd`Ls%olzYG`VDYD4PN)HkU|X{2d=ub2;-Mi#UrXOFhdm>snS;R!i1s*88l}
zZ0c;0Z2fHa?AYw0?C$KT?9Vyy988W}jz!MpoaCIEoWY#soWoq=T;5!bT&LXd+??FD
z+_Bt^JRpxgPa@Aa&nNFzUPa!6y!pIu`RIJEeARr1{Hyty`7QaQ`5*Gn3up_(3ycc9
z3*rmP3mz2A7kn#37jhM<7CIJ&6=oOSEgUP{C<2NYilmB6i~Ncbi>iwTik6EGi%E<5
zi?xbfi?0_K6n7O*6@M;4mavv6l-QI6m!y|8m5h|UFF7lvEfp^{F7+u*D6K5*FI_G@
zEF&%BFVik_EsHKID(fzrF54}~E9WRzDYq}bR-RqnRz6<7SpltJu8^&;tO%?~t7xnk
zsaUHxtE8=zs5Ghct4yk_seD}drt-LovPz`NpvtQ%zN(_?QPon_VKr&BK($UawmP=D
zwEBMaeD!_}Q4Md6R*h>-bWKrBZ_RAYUM;$or&goZx%PT(VQqKqOzqb?f;#Rx^}0)S
zQFR4%-F4G-U+W3#x$D*Io$I6O3+ub+PDXyu!=~2^i(@`@;vv9LPvv+esb9M9M=C{qiT4-7%
zT1;C4T5h*Aw2ZWTXa!msTV-3VT7z3NTkp2MXx+YxxXX4|`L5&Lh`afByY9~1-D@Lk
z<89M!!?xXMD{Fhyw%m5qPT4NnZrtwIp4?vFKHUDH1L$Dtkn6DN2<^!3XzzI0v2zdq
z9@jmMdoK54?v>tqaBu0}k4}nC(N3dIzs{7-`p%Kg^)5&kbC*JwT~}CFZdYg5bk|-t
zQ8$0LPPa#Qe0Np%avAuD<6}5>q8PFPVABZ2Q9(XdaHV6zd4=N7Y4@L|Y4)zT$4jw(Gd@TOh>~Y}ZjK^({Uq0S_
zLimLLiQW_MCrMB0pFDf=@hSW%`%|^2E>B~hmOmYQy885dh;c}M$ZjZNsBoxnXmRLh
zn0i=p*kU+jID7cs@bvKh2C`0Dt@3+5L}FC1T7e^L6P|Ha!E=Mzj5iW80#*C$FR`X}B_oKG@ODor{~
zMo*Sa4ot32UcAJ-RDOBsWz5U+mychrO@UJ^Q>s%gQ#Yn6r=CuIcm;jM{!0B7_Er3=
znpY#QK29U2xu&(IJ*N|=8>XL6f11Ic;hWK)@tsMXX_=Xv*_|bx6`nPoy)v6Q+c7&c
zdoV{aCoyL^cXcjru6J%}?qr^BUT)rgK5D*neqere0a##JP+f3cxVccXFtV_@h+5=X
z)LryhyuH}6IJx+BiDXG+$#f}bDSN4FX@2SFGVQYLvfXmza_REG^1Bsqg>^-J1-o)<
zrGDl4%BR-^uLWKkz7BYu@w(&n?CZlfRBxo;*u05&Q~aj?&FWk5E$dtLx7fD{Z|mQV
zz1>+QToqb1UJYE$UhP_4SUrA6_fGzu&Q{o(rC4RC{PLu12Z
zBWa^)V`5|PBiTpskCq?9J{Em^^l^0)vdO-wx#_i;ve~jZwYk4Vu_d)-vlX#bx;41<
zVH>{9y{)_Lw|!^3V|#Y{=o9TH`A?3YVn0=X8u_&Snc%bFXOquCpL0L=eSZDEhmv7f__sVYeZqM%W?%7w&SGBM1Uz5Hz
ze|`CNe~)rcde3g}`d-D}@ZQ!pf^UM~Ouhww%m4P^+uMC`pM76@-)BE0#($!QrFBcRyf1xPIvU2>6lt
zqx;9wkFz6|BlRQCquWPqM>9u9Kk0ue{&e|y>u2N7$)DejDUW529gbsz7djVy7nv8`7b_PRf1WGBod$sZJ`qs0008EZ0H8ks
z00o7(<3qT!KE(DHE4VlJcnBm4iNHf4QTX_H1cX$?glIG&Jq0BR6^42WMVhDFA0R*797v{fD2>q2{a0C>DAW^tlbrJxCLO>)Q0uF&g;lC9?
z2oy#NN03oav6yF)Q;MjVn3`3zi@OD7Rjsi~I9~}AdyHfgRgGm2$>8X?_i7Jkg$`#N
z0{uq^I4ig!435Or@si@|Ko|gn!~a$QNg+@&7896=$`v@dXhl1#m~(8#-o-M2#@T?7
zLP>EaB2G_%@Ra7i9R8nX)M3!Mtan27vVQu#Z*t#QrDUS_1G_bi4J;BnT7C7hT@NA^
zbv?vH#$T0wKH%C?8U8lP_1qpxTvh5m`>J|bm6gv#tT?$S{AAMJwRA^O9m_EMW?@D#
z>!sCpaARF+3v@pmUqGks?o-#~+RBQFX4l1nX)f+utl2Io{3oAOGSogjX1Jr{o-^$n)OYCJY|+8@%5;38?bB&%&5bfX#)P?9
zHH*Z#4qK^_1&JV&BfGo5LV51ymL=uq=a)UYzWKg?)H3?$K`S4jxQvumwuFs>mWmUj
z_mk|jq>1F3f~GE4i~ixyvJ3Bn#gBPzy1a55L47J*+DP58#ZKtYb=ZjAjXo9*SxgOO
z{n6jwQCTywI9I3ES!_uj--*YVQG(QzqXAxIWp&DaUQ
zE{&6d1c3wnPMSee`-H_8HFN-9#{f}t{g@W39z#ely1GhB^wZ8{k6q;%CwgViNz#MA
z%ca)m8=lvy7zS9i{#Ve2w%$>Sy5+F&2pFng6KUVj>uw2gK6Xv#c`wyXiQz&#o&mA8~p#hs^(P1ZaI4l
z4sI`9!VFLJUGxR-AX|q#lBo=MXZT2I(k#?9Ce3#nj*_sfYl|Up^+gMpIV;`tXR31^
zylEY+Z@RYv0<5VATOPOb7Hf30Sd!Z$@OvlDHdqQq{SvbXSL&mRgtVLG-hNAJ>xPu=0m1dSA|MQi?b<39A?OEI3vw@qB4>EQMYtlEx$uz9Q
z_YEj`+g1BA?rW&~2Q7FwsR|5E{h{?gTt*hwXx!PdX@>QscUd%?C`2SH()FH8iu+ht
zZ`{AmzC2K;gUC2IHi~uY%-`iO(M!}mX0OXFJMAi&(2}r{o%dVmX^0?n=gImhDI~@@
zwD-xoz&h7w9XtOf@3YY>!^1^OMkn=U-eqad8ozrk5#$oxTRqqTWf7D2G;f)iOxCRB
zyR3(@@5EnBj-O#3QlIo6Loa^W+uFA`?;%_~5
z+O_+#egA;DVy)K?L1|Fs+}Spx7P&K8y?k7RC7Xi7K~pnXaf2WsZb-@KPF93iVrz#m>f4PjiJ
zOc!RlUV1C^_u$?XcI@`p(}C@EYeX*lgPd>+<%DwRqXX
z#2sdloZ&3be@2n-o%=_L3s%0+K86Rpn=ot&C9_R+HEHQ!GaXHuMVOt6o!+>6zHM~@
zjMaAD(bCaVBd@HwCG8sYhP7L~gRi*9;%v_F$Z$#lnWumQE>>yCXuPfL*D%-lcT24%
z++6t3TA_m^W$4*Rw<8z2{L_r)fb>Va#DXQ2+snxE{q1GJlJfBXR`HMZ0pVSn6|}H2
z8Ek9{u}GCH4e~>580}Bx0!b5{^f^l7Dt~6G)(|eqDSz_|Kmhqyj&})FyrR-)cG}7C
zXT}l3`d91!ju9e~X*07v2e`aRpXpe$3+v)8&MydG+b3!n`%lu87XFRxwbRD`U-kZP
z4?%7AX}yVwX&TIYIXR<(`+wM5{O
zX;%$lq5AG9Tc0y&^<<=f!ix8{qM`JDFNt^%={b
znr4$9kRL(3_Mg)nDKrQ2w)?Id)^v?oH#RyJ%GE{)Sv}`ZZn2W+>*<=oe(l(N;h)J<
z7n?(*p4;9Wydst%MjGw2(?)$e=T6Y_GuFNo57rQ#17oqAH1EX9hH$>m*3Wd>9eiId
zKYKkh-+U+#JN>rAcHUt}vvtVs{x8c5pqx6UE;Ia=CEt3_jQ%AS&E#uc$Nyp{URb5@)QS2xyoD%XFF}TPsF%B0nbm{fFB>nV5ES4J}`rmRgaif0Od7
zWRQWqsy63EaJuG(i%nz8mRj}Hu)Gh$tF9fVAAN!ei_jY;rqzZ?JRh`Q_XGun^4_eh
z(RRQ$8_DSN|M+poLM}%7nT`<|s}|Z%Jy3@KZRh8+q0a0X?MyvbKzOjs#Ql;O2FuI>
zkBxcMykqg{n+hJD>5vjkDu+Yg@dLxbe-aX$h|p0d0yaPyMe>k)UvH7)XVX^vJKP?}
z$)Ws06*0{AddTNq>*@t?y}Auf)od0(9!6+g`<8QGNSVU69rvDjUBad4TG8kuz{Go4
z@|#rpT(aN$0M-Lgqlsc==&hP1Pfyarl&SyCnyNkZq)m9TRTWX178>&AS5#8W@7Vr~
zyqzk}=Pxa)_1+5BG{|4+3E=H})axU^*s{p$%dC~|LPXNe=Vbtfo;;&{5@D6w~n
zXz)Xg*;mpl<^M(TXPTyVUh0?d&@TU|n18jIm0hoU)2ypl(8#S
zn4K1Fm3#g%M!*Cc(Dw9ObVq?5OXJw8bHe)z04rL~e`6FNz;pnRQT`a9g8&2Y-#U+5
z^y(*%A{nGVA$G3)X>g#-{-=eJ4cX{VFV6`Nc$?$9&CY!_
z^_6=)<@p-TwUKvkc{0pT;J5k*I#5#b*OzPQZcZy!@($aCakhVn^zG!I6n1&`hazSxX}G2`@YurShLZSl*0M0(e6VI(UOU~g_YYy?0zm>
zwl)^gy<~)n+R>_Y$5OBKAJ;u6-oib^aGr3}{W(So8@nChQ>UF;^SQs{Wz6DoxBgb9
z&GtvlK>eVc#_>(-Z#kl7&!`2D%=IL4CAH{S4;;cL52pkS81^Jgn%F4oo92RLjP!V0
z#M=~-_z5kSjwS+mS%u1(g0gi-_}Fr$6+TVs&=riXZ}+eG%IlkQi8PM72d8Dcsm^Fr!I!Z1YhNL-VN))}Y8ll5^&^KrT01bNENSYVGyO)TPFS&`LkU
z)ENCucwxAC5;MJn+=q<2>Kco4PG+6b*=9QQrZRNTElgz?k_rzECwf@c4zlz!UJ4X>
z7jWRd*?F*5)($zQmENl%qO5$*d>q_3Iv3=oDa8FK@6!d4E`Zys&X8?0k(?(iF;WLi
zPYw2pwqmsZh!mJM7CljRO21{EyJU2H?*fR6!cXTr*1dl}`PPj7s15WUxlF;*ZrA*;
zaLJ4XlF}MadU}pjPA&cvI*HI8mrAF`bM-pY*{AX^t1{VrKNqiOQ19KJzi(IfL*Yg&
zCWOg#cRBPC)tR7`UBJ0NQeLpqyWvwAukL(@hO70u{%p^e?u{g-FuV9=Tc$iElCyn>OkG(`q}<*Zkj#4k7H-k{-hH*zp7tj)M5R;ci(WXF)TUV
zH+TY5Gs!$eN(DOyfMBZG(
z+(P|+Fpqz3>-gIE&$6d%&oq@9Yn28h451npM)4{PGYWS)TCrJsm3LK?GV;Qr@yS3(
zvmpOlY1v+0AL^J)D9_pUMZXHIsf><49EisQo(x^rbl5oMmZ80xw^xAyng3`+^oL9v
z&|1g7b$Sx_ry+p!__tE|AF`VW-$B8LouNKL+4wVYV|eP{f)<^%Wl>!tq-$>fRa

diff --git a/docs/guides/images/CHIPTool_device_commissioned.png b/docs/guides/images/CHIPTool_device_commissioned.png
new file mode 100644
index 0000000000000000000000000000000000000000..8756b4dbf6b0ca3fb98fe2cacb87ca7ebc733c59
GIT binary patch
literal 15713
zcmb`uWpEqOwyhh-F~=A)J7#8Pc4Cy7ZJC*wnVFfHotT+PW@g9C%>1Cy61;f
zU8+`hOKbI9V}4_FxPqJ{B0MhqmoHxse@Tfce)$5y0p5Osg$BQyP>-#EKd?0y6;&`d
zH2m^~D&9GsR~k|nJy`IE_)J+C=Fb4?0(G$~2!rx^sUKnm0ktN7-Qn8pS7hV#X_wW%
z(TU;d1%C=@^{NV^pbHO-5&f%-uiG4jN1f3yxg1XCPEBY17m3q$JdYHR4qCf5Bjf6>
z!>;lz@h8+YGnASmur%=C8S38MO~F;Mg;uWpe0=B5NT8Ms&4AtpZ2Y?n4V
zZV{cb__YnWT}Kat-lgo(w@W#Q6T5}J_V@bNRe4VDII`TEKEGvV-+Ld)9M#d*A%GLE
z$ib0SvE9gJ7lrb75HTElm42M5kcAw}>l&x}wQM~Nq0R@UxRt%pNCYRHg>YL*QHi+x
zsHuW->*wU$uh{RN8<41Fo=zJ}x@B7-4x`S3$U4nl-#%ctrc~Z56XurNkBTcWS3?&O
zxjM@%!U?$6f+jts|29VKr5;O{Zts7~z{-2a#ZB#~>RRIN3S4n^FQ8rC2ozY^YI}o1
z7B)j=NL3^Tj{uyVl!oJ%FUY|EydcU1OU=K0A^!49Ojy}1>pUCEOL_QV*q8Pf#|3on
z##iA;r4G09kG02>i(>lP`LfOj6?5tHPWa>{wcZGHS2KUbb#^IYp)ioiyPzpY`-&{b
zCX2W$CS78|dk!%Cy~KX`u9s1#9sFiltU|
z6P3}2#`M^V=4vSgW#b3>jS7l_gA9@9-IZH~C2L6>Yo*hd!U`qD@_E=;STTb_DKW|;
zeKy>5SC#PP+cW-8SXW5C#W|qhac4L~Ep=dmVCs|q4s>q?x
z+6l?Zhwu@u-0%)M)+*IX(4tCWQc{pAzyE@xe4>M!y%$D6z*pwG5DE3Ct-v}>E1O1q
zbo?liCC;9NPlC`ccoEo7101l*(}&E-1YGk=$h2
zx`tE-I3q*KM>tLZ=RpC9Mt-
z)HzOJ0|K3oRyz^KDOj6qHsGtrh+=)G@tZ$LAzWRyzIn%++9!Uc7OV1Z{`M^dE0wM>
zOg`Q*lXzxwCo>py`SO+Z;X{LXmUX^|pi#K;UerqjU9L3y(E^!giCT$L$gG8`d3Klo
zbN1Ww<1TUvDP!~W>8@wHiu>zQy;xEjmu+Tdg{q?3=HT*K!J@Srlf&dGDw?I}1GoKk
z*d{aGZ%Ao-Dl4DXCr5K6Iik7U*)Yxb?P%xTd4Weh0q93LCBy!Zd$-+1#~oaBwTu}e
zTtU2_1@AL8T2W7kRvNCDCZdDvcL$ui*T=M(b~N|+7rAVhO9Hvk)6;fdubY@&%;bf$
zZSUK$a7>aH{hqFSyA!#dBrK?0J|}hBOGUqwjB=W`lh<5;H%s=gh*o|8L@W=PQqf_|
zFblGqxd&b&
z{D>=-y@dg@tjGa;K}Sn`=vALb@HmUgRipN-C^Bf5d%
z!JS=l$m@ktY39>HRw_O$>ZRb}i{35D<{_eXNrmzm
z;&Ou>siHVaQPeJ*SGg;-^XIuB^sh(mt&BX
zwc|4pS3T*M&!;6JFHS>}F7JG)FimudZeHwYp0v2k{JuL=B*Tm0bT?mJy{r`+Js=^{
zi2IUtAvxEco<4}B0ly?kQQ993cotla&pIF
zQ)k&F*uImFQ$(LBKnAc)LusL+pb&pl)C5unYf^;qT!Q_);h6^F10gXIT)1B0K}w>AD@
zR(sxj)pRk~oij#4lcQ!&&*t`*E#&Ht)opuH$ud*+)EAYZk78Dqqyp(qlkCpur;*HU
zGa@pCja#?Z*-PDRdz{l>FEPrXpIjn{jlU6>rb}eR%DACy
zcN2f2Y^`sSvS5LVPp~U674+)5rivkY<0-gB)D#r_y4s*xT5nm>Uv*EOpAM~u_ne}q
z74rS&?IN^mgptK@@X@1?eQ<*7)JbSL5H_EDxNw`pYKqu?qXF;+p$Pw_n5nvO5c;~K
z@1PZCfr6U9Sxea@A3B>&ad&uuF3=8V2wtokHJIK>OJ3sD8$KRINC!~zh3ZDik{+Fw27U%AAX85jr|Ke1!w^;V;T@-Ff!0F{kqi&f?5
zLmjs?Y4CmPic}b6uDibq7Yt4)b?Thg^tfE9%Es0`$*o#jp}3kPl@q9ivhp<3HgQSp
zTwIlCyEx4V13IioamfaMlJa6;O)8&3k3_u)iI(eGyuN`-54~~Jyq{kK?mJCZ1O_<1
ziv^|>_p*9-L1ixDr*09LX3~otbR31`pBV
zUw3zUiydkM3hOzO>1i4BjDP1j)#Fq9ayTQH_|y~V*&O?Ak`@Mwa>Z)eejA0VOGU#tWgp=!@;*Yf8w3I*4Fy5;1
zynF~dHXD%kU8CE$u9zI81(Lehj3o4~b$lnTPbT{LBLEe};r84LIKyW-lR-VB}d{?)0kT(1$E;X@Z{SX8|hqiHN&Fl{ra%irvas{kA3
z)SKnEm@|f;1w{Zpd>V%Pf!Q!5t>A$gjOeD7x#hQEfg`qf
z>{}){tz(ssS8dWE^6J4M@^oxZOBRRQKXHyj?dAnW$?vB*qFha&1!4um*9U^9H^AT9
z=C$t($*<}0#V-?=Y9s~0jc*cmTTMI))Hdr4s7kuIVL>sf_CprS1Tz(sthKqW5TgC6
zhG9?N5w(KP|9(|SGVKit!P|e4%+2w8$X;zd+qWB)zCCY=xy)F{H=T2cb8hihJKRaG
z1MGNoqMrJ65;I`aPG+NE=r{Em)DtsG2Md$7|2v?}_*YshHaNK?I-e*q#ALbjM=_IhN5fDqrf4xz0?e@=*Js?p{xR~8zMDO@gHj`sJ
zrA8V!PA)wXvRJLT+etog)i*~3JhY7`jJ;Hsz#Ot{KJVXamek+zwl>BtL1({kJHq9A
za^WNFdN56k_}U?$)dt+@g0PIsvB-r5D96Q?O0*2+uAg&<7K^q+#m`6Q2X8xW%P}(A(Bt#;ZOBPE4htJ9O(t&~vD=;I%eY2DBR!i
z>{CyZUTw7TArqokJCF47>y;!8eX4ayhkG<%b6Kb1R)tB{zk*-yCO@Mk$PSxF&rMsY4
z6(m<5I-<;9`B{*HJ+o6N8+h=>2Qdau#$p~;*PUP)w)i)V6%$K66>L$lZA6VauAJFv
z_DoIyamSQ&?4e~k6%)irXW2D`9lYc9Bws+@_gBrTf(
zhK`OFe5HwTaeg6z9Kcg~Sz0>IM_$?Wsr=I*gd^UL;&t1JF~K@t0D?NAKRd(c4f)>r
zfO8|hI&~*tljK{@UQc_6cek;6y0^6Z-75FUFNA9vf=j!j5X4E-=H)T>Io%>)?E8|`
zGEKiLp2~(I@1b{Vq|L_u)@?Rj4Z+bM;ack0rZbw?eGRQ1Ph>=#E9$Z~Z^Y{GX>Z^k
zWpu_0o821o^>PZ)%f-RxCFAtPdG_0C3D0ZgM=zSpF+*c~*2Amz?Ze73lrshVQhj#;ZX7
zvG}x*ZxyqGp)moapDC(V!B8y;h&`kR1R7#X*w@uDe=p=xU&amr;L}-s@25h-2R=0a=xCyXuBYx;74uEx|gBbZ)i8%?Dy+vAkliNNAWDSy;Q95)$n1Lr;0QZ
zZe#<7?rAol+lM}A#cDw3axib0KIc|CHnO?BuV-&lGR~K8#~@NDVI9Hj(GRnHIKtj7
z_>pl8TxuR#selLw$b${u5OsqZKo-roU{`4VMX>r5CI1T{lF
zvKAd1YU-XwY#|!I-$d$j<>+I9%o_U4l>{&$vW6mqQySg)x<=purDXWMeDOKWU=fN$
zH1PV~z+@~YQq5j4JdM5HJQAR_8Q$My8>z!L!eZa(V9zSg*xH!vNxBf>uEqTN5c0r3
z&oRIWHx#J_Ia8rVoN+fX97Q>`vo>mSs9RelC1SuxTO#`o6MY_wD;gO+=Oq~L9`vl*$@bN?D=JRY^s>}XaT36`J#ut1w96S9jqeSzSKP#Q;0&`
zBqrD;UFG$4jaE3{RO&EV4-tT}wwf06NewrtLl^!uY5lT%3xNBR$<_k&
z-+H6y?q1`}h*{-PSJusY1F{#H#{9gpFDs?8ur~R)roSybqyzJeilif|R4`u$-w5d;
zX6dcsv}Qr!H(9$x;)Iq%fgD(wxt8M68@8Qeh)|hwWe%WqatZ1WtZ)X-)w!p4&rWY2
zZK%0l_@>hx?sOjVjlVe`TYY!|b%peAV&)y06%w~Ts!qNq#2lRqUk!&Pr2x``-bjpW
zH$Pr8;+E-9Y6rDDT|l*@3op*KYuqRJf%Nbs+1RnaUUABT)l`o+P#4w?CQHwh_FI^OH@pN$rSQw
zbmAj3MId97L^8Os7+!1rj=qvu;Xc8v
z`Ig!uyWoh{0WT@?7P5u39~}*VN`ylC*hB?GeJMFMwtH<%k={0GAnUJW7RdZWfw0@r
zKA)FfS*wP2CsEN+)T|o3O^U+{ktizVvS$4+Ll|uo*@DYWT2deus2^upJyMsbHOA8YeFvawW{-bBAy*orgt4
z5MLuH1`$AOF8va^4V{nzt&#YqA~7ugi=!%CRspR8dPx{+@>}6yFvoz2nO0jFx3On(^ttCRdwUTAvFfjrA8Y_B>>=n5&?rfPnO(@~enbL+`Zd}X%QLK>PJ&jSpDeo@dnus&m^
zz#T!xjRU^Ep1GwWcjOcO6sf~gF4-j^9k`oWX&Sef*X3_w9y)?Yz=IqLp%1{5eK{
zaru7mrM$oLMe%whTPbO>#ZQbMv2x2IIh}1ZBWDUCL&`O~)YxXxY0vtw#@Dx!+-bF|
z7UJWClv`WSS*Zx-3_I)MDdbZtu^d)8fo_^rk|$$sUq;1^V*ox*O%G)|Z`dKNd-GgF
z2Q(JRTPpgFdVmMZQ8CSA>7T}f(kc!@hmI>1$-Tb`6I5N&y`GB4A~TD$L;XQnMEy+n
za@Blhv)*E}=iIFrR@xSs$?^kJHe?~m{OPjnUUp$}`{2M3wbkBiC4
zBl34lZ@}kz-Y#AEDO4JmLKuC1c?gqPeTQSX;Ax58&m{9sx}`@M#Zo=ZYOSD8Y_-$R
z^t}+hfd`WvtaUDbU+H{DIWO%HeSu>w{s1XsLYAAy4r$*}P7ef+LlIP-%
z8*R>&sk^LEv=s)0T}T<4?z6MAOxCMx$lQK^>pyREKZE2-6Sub9A9cK*2eHD!qs7Zm
zn#d!u)ZD)hhZ~ui?!I1jV->XEa@5-$O_MyWRr`vHi3P1aV6m`X@2BeROig6wD^^aI
z%ImE=FJ*^Cg*mNV#75&?cYnSkmzNKt5EA+`7fKrTH7@-e**BiUti;F^=h^akrJu~=
z4h%uW+j&^Cm7L1q&j(ZjnQ*ViXc_wztgf=$0Z7RFPbiuVW+c9Z(z1h5IIMNjVeQ?y
zM9@gMWRu&A4u@BRse1piT{p#LWE!YSndo%>d{ecb<#oLnP}B1!zsZVtdg5APo_+@C
z;-}G@(CIbd3w}J2vi$usT_S6_?)wR8HrLj;#vF0y@%GsLIe4;A8JDX^d@FUBl92Fq
z7=%aU_7B49*%G1Yqp|UZ2hDwrCYKWgA*7C{(S@)|m?m2=&{wP&*kWfgzw|&2bJj`urqLYco{4Bx&FOcf|l`vp?E8<249?*W_uDMQOxznk2*^Cl?$^glQa$hcVw4!yY2tc_mxt3(Z_h`APyctbwI+gt@$}vCHF?3$s8n4K
zxM)0f5qbOdXuQv!<2lo-m($u^i5au|!9m3|Fht+K(Iy`FNlFSC8BE1)xvI?ZG-Eg<
zB}~L-M|^_-e-%1{_pV!S5NuW?{7~>?f4)&mjVz*rUb_W+=7EdNzmo9c%0^@!kH>-Z
zS|0-|e-E!-ENi!i@NAt3AN4+8u)3Zf@Yu{}(X)A+(FuArsbQs4888krshUXucx-0G
z5fOJsG$&;B!jM&(jqt6ltxs3|$aWJWmU}Ln@M|xKcy^bakHi!_(B7{PgXS}ERvT>?
z6VfM=TGEVHAJ?V1OwK3LH?JkpnJ5?-DzwKesW7SI7}gsV?3j$2$~NvmKt4L=pCqaI
zu-n5aQO0ljBXJ}PXzT_D;~HG{J3$Qt&|yw+7GcPIPk9Y8QrclFe@**os;Yt!u=333
zOdM7|-d~yRcf{z_>lAEE(F`7sOLO5OZLtO3{y~~GYMLW<(gt0e;^;{;NBqDv*7YIO
z^}bhWz)YE3Z*}}vdLIZl8bm+@Na)p{1Auf$<|-3Z-S~!EsxzTb;0QaJ@HZs6`F6
z?H4>940Hx#N_KX24aDVqA>VN#j^_l?UMu4h69e=6Lw*Ca+g+loV)cBpBiFOE$8%Wm
z2zZ>5?g3U*DZ_7jyYg9m2Z-*^&x&7u4IE6qV?Y$J7COEPtJ@l>%sj{7GZ$pA>*m}R
z=x%!5$^xMCsi;P}kM7byv6=*Y(~+C+yxU&|-bP5>_GTon0`0bBOdN|}<4`a#(RWrY
zDaW?{noRYT=6cg~*J?E**&?8lq|Wq?CQ=$hlIMH4jG+U`-^l5)VD#P&1q)nb!~}te
zTrD0~`oLti-X%R>avh1C9)HN$^XSOv#OP#!i469{=#PKBfex8}`%YNHB)qEacz?~q
zqQ#+-O8y3{cX~E!yF6W?rcF@DvdbYk$(e7M<&Q!xun(qYG|xDtRxId7qM?tX*ilv
z79vdN$JfcQGH6q|3ap6WQ!^?H)^@x^IDrVJT`MX>2|c7DGIrNTB9y}&Hd-AegZGsQ
za=dPSv0>cvTP@dV{)%mVD`N-JVls@=_l>z9o;MehJAQaUZ+e{4lfeI=LFaU+-}JoX
zHz#L9XF#(5*CTATWz*dgOC-pE$ImVmV4&kvU!&EmN;hYC7(>vaf`5Cc=M#TAno+RH
zBhwOZk*bcyo&)A#;hXJ3nn1C&CTo3kRcRaD9LIKiAjC}lYJ)kcFQ?5qw&&y7paPJ)
z&0%N2KE4ZjbaeFQ5r>3=h6HJ&{n2i%#(J&k=CZzUn1-(Tn8-V*rNu1@Ti2qzQbxTjvaX2)hUKJO2Nqug=?CKZ%j#l*L3trTJvH*l6|B&LHglf#RwX@b(0(+^d
z#sG?JtgMXsA8%0D>>lWo*}SHV$bg!?u~;1bA?t2Zk*Z>?jr$#F!ZJ@%*PO{~*=>_{
zUC8ld@#=*)@EC`^zditmIJf?#=K7}OP6>YEhawT6*$ivPzEqv&NHYv$dH~hUajRFhg{|H^FX=KS{J0BcR~mgmVVBOV+dhDH+Ko
zl?IXM2g&*j2v$y*Z)~{j%EF>!PPf?a*1269(5bhekk+O^?8%?OAYX5dBmYx^j;;rZX(Np_#-Ek`X_B7Bm$6fQIq$S=r
z96=2gecg7xjJfOmffpx@k}Ah#PL}gmvt}tm9O&ilm{byA{-w7!{f>3kyJXH`;A~7}
z@#%g^FLqL=?H}~@QgU3J{`$jXH?MD^rTj1nC_|!x|9Z0h^50Rtp@UI#fuRRTNradk
zw-H_KV60>j8hM2Mc%6I28Yfz4^2sA)_?)`VTS8q`@cpiE4LvA=7!?j4DIsO`gx%5z
zk`;lLOddbgPTinC1SvWCxbS$6*|*oLm9o_gy{=?AzQkzW`Z{6I?O}ylk!>i30HLx@
z*#}egAP`v~NM7LiTVQS1>iLsVZ-=0D2Fl2SqW-!zzp1B_8kb}aAN%sxZI&ACM#ZoJ
zL^)6mU2Vq=O^J*(9g0ZkS
zejs5+?ganiI(F3UxVYS5kBvk?cj)LP;!>H@=fh`zmg4mK^W)OQ{8$l(dnabnKq1)$
zKgQsAqn*>|(>w4?$Si3Q1NT=B$;oZHX%6a|ikIAGoy9$k)oR19MW9sO;f+xZzQu$=
zp@fV*rS0?CU-=pByCZ5H#g5e+?FpC*-!F55AL^5ch0E)QxxN&os!4l2t@Po?FhpL&
zhZ-|f|8@qY_0bpAA%PQIxVxc5UQ`>CYc}mVNW^4hWdHI*iBceubHfZE#uuSZbibc3!cTGY(S5(Rw`UQM
zP?GB#u+8{X!64gVtA9o!2|8bE{_)xsO-bmh-QsNmpwP))+i>fTp3Ueq*^?r3y`bYs
z&)s9gLmU3bvLiGnK!~2A5I=JJr&t>GeE$wk(!Cw&3WZDzJQ5LE@S-FzDviV4()s0V
zO2I;NJ;=^{M3FCr$Z*`(3rl*V<=o@RqSYE!`S~PLt~d~+M~Wpw)e9Eu9)JwCHq$9x
z?n@Bu0K4za0QFn_H8PH9>*0lGR%KtG2*{S93Oa-1UmB0y(+H}0bX@YbnE+cXJq5+k
z#0jxw%t5`*h!fGdR-*%X3Eyi~)>nt-(De6cT=G%u&7tT_rgdYoi)oVABbrvDnz(xr
z8@J!Tu^P-a`>Y8D7e*{Pe#1V1XWxS;h($={Rs_R=W&C*RBL)
zC-S)PCZHUJ7&Z+1Jcv&N52W3L5hwMVPGL!*_RST`*NXzUmdYF0%u%PUo=E~>cvI(W
zEl|ig&g4<-G=*<%yH~`}~x2LebDjH&X*&O*jVo!~N;ft~tllqoMkorgL8mscRh`H3Q|1vW6;Ju&g5~f$Wkr9?EclE
z*=$3K2RQ+)pNU9Ba=$7dh%
z?%M`)z10d!$IBS)4JMgI5}TmaSQ2&LSGvx__@JOM>QV79{InqK)31=lDl$Lx`K?9W
zIdKugFc;CCrFMs-6Yq~A#FIz~0!OB31+9Y*exMmaDEXM3K+9$cc-+D61Uo;*mt`K1
z*Kj%G-en7*C(>o=`b{3y^I5<l3Vqht}Paq2sInAd@8M_JaR%y#Gs{Qr6h4
ztRg0y?kcN`L`F%;yH(}H{r7olLP}mxYis3-I)lwTDv5#mK07)xME7f#>*eOlq(n3}
zk5k#&+TzLArvFD<>whFRx&8V~Jysk`t{m9@qedb=J_1n%a`+1GBgPVj{0CJICvR|V
zjlu`P2+NJ0oDq?cGcERp4VFtt7VMS|I`#*5=2^d`Z(CxF|1b`g#WV0M^A!4{e8g*;>qeWZO(XrOa8dT#AxwI
zOptLluj};+&y729t-<_XHMC+cy-fphmBgdFrAfr{M1H
z?ll+8NGNe}@xBNp5-O_Y6=HmJ1OOXcYQjn2$E=HHb*{E#bY)$gf=}r^^!DP@^RsaE
zjTIbjG&Eoe`p605ClN%W_m~>GQMqxL2LZnaTVG$_9?MMtCWE$LHm^&b^zR5KP6UL=
zpzFLJ_g0wqCboLYrcTz=EP~aSW1*J^GIn<(fR(g@!oqA&*){l@dcjfLY!Em|90>l=
zKhKpjte7+b|CXX~2QhUB5;8Ms^=1wKY63Bg`@aFh+_QERu1PfCxJx>|*;QfBw}*zGUEW8l)mq+0uMzr#
z5&JAiDOu|{%14n{jJ=n598&f_u?~Cu18=Owz+vFoio&67zx5pa88Zr9UQ|tBalA@S
zPR_+O*R#9(lO+gqrcUCg2rTiS8x=Gb9v)@YK%TTy)0jU`@>_>jgY8z=dRyI<9d>NS
z-lL_Md#y%0v}&ZvBK4r^a0~%$R9Gtuq2%kUL)MzBBLx$Jn&hdPt|viP=jn(>yNk8B
zuw@YfE)~O*$V^&V+cucA^wBdH7>35&?36fMuKcB(jMz6~25-Os0D!RA*wj;Mx!pRX
zG9X~QM)Vcw3K=%;RIAZ~yxK~Bn)ci74>S~V9$(H(Jn83$^R0Sk^XW$`yJ&E*}jSb4_aV(49-ua2sBi{L;Wjw6tPpG`qD8zDT2
zR7R-RRO@E9a`*Z#~9Wk`bYD!sklmc~j3<8xgj*w`Yrs
zphas6dYQ|WVDofqQ}srFhDAm7`3J&eza|7rW~Wk)Z1CH^wPXf^5rmIA?Q%|eMrBPK
zJPsC%-GNLwuU=ek?EL)h(R98jxB@<0nJ0!Cum;w2;hrwlregigT|{mzKvfWGQ!16a
z&+eqfd>wIu|9IL(7LyR`5rH^<dAJYI#C6|I2<&o~al^r&5
zH8zzc+46*x?9G(tlap$6K!X)9Ncc_~GKJtePU^Jt(^fb96o+Ccc*&POQLrp5TsEDjpfRPi6Qa(H3RS`z~wm_<^kMs1S>Hm!&W;Hzb#%60u2@7Q-74_(_Wq!79NYw0nYYd9PiC#Klt@5A&A&=Y
zu3Zx56AH4ks~~-k-{{BI}(z#(Vv9H|wJ8yAhz
zVOh%=C_n3KtM=)GqLG%0)%?=&Y1WZ(+a2a52+o5&T@^y!tQf0Cz531Oi`o&CP}du@
zqb;-6xJ|59cUIo8dikk(@~JjhE&v(W@eThUgE5URoOV9KKGx*>bKjt$7hVx>Od_E?
zyaAmD!pA`&L5r@KX_0x0LDu_YDvilW@~mdl#9(V-$&wHr9=^_GBEw@Ma5kOE$IIK)
zzZG^F!}x!}KKt*fp83@uPL>h93Q^$TW%8S1@6;4>e0)4O4INN|MA+L2raD2v!TEaK
zK8-mK`y#r!3`higL2m(HkDPeeEEm7S!CmLw)JEv}JVSvGAP!2QKV^%hNJP!#u$Gu2
zXNu(5c@6G{|9tgNg&Io_I7X}6+rWL9_m
zE#+ciWv$om71=x3Ct)Um;Hbm^b0Z0hlk1ns3_R6JSy(&5DlbGP_PkAc4j6uq2Qhv9
zyf+&*TxQDy86zVjVg`nq9LEwmFkB3@1J)zqune@)fgOjp>(@&&vMQtMy0l8j6*p%R
z{{PrJ{2opOMdR9VPf>NPJC~QpzV^VwgM;5d)=U|725r6x#z~#F9n`nT^UmUQT
zAq=kaR={~C7(H+HpFzCRXKT%BYzLin>U0J5PaxyH2;EVz31wbhKJOCPX`V;{i;Ntq
zS(uUy*GXm47X-&br;oAE;kZb5*L6a}hPj4nZeCjF{pzCe(16%_57+lX`T*{S1&yo|
zkI30Af;KxnMT-?l1Ol&MTXA}~wu
zWF-?mHHqxN9=sQ_g+HAy|FPO+Nx1}gS6U4ge`t1{c~)4paPH(Km*M}H*yyt}0Jr_0
zW;jw-_m1rMl8!5ZO~3MD5b0(|W^U
zIj7S_49+bt)(}Jj3b9%3SX0%{IBe|i5_B4WzJXgt;dqpC&g{c(9+s;VL}=`#@2T#_69P*)T1y68{$__rLFWHKF{2y^-HslcY|UNrl>
z^UQ3E{R_dfjdR99M-RgQrA7uW7fE4aVuthJMr`+o^2VOR6YORH3XOCqTrZ-s+g&>B3u|g15*WCj*ZF?>prh|a
z8v83mIxx&){i>wnpiouU=9G$zS~N91gq^`9fl3kpWA>hSQpqg)2I%ncF!X2AG9?;m
zE32r6ML67!Ww53!DlH}b`SYtry2jB`b8f@I*{PQP;|0Iszh#T|n=2gP>0D`TUB}lt
z(@VlEUROeJ;}8!z&Y;{*xSXNGX(%*CdJL+9fDcK;`$0^{8EN-d3jBPaKw`TlR$*l-
zt54qoc&YAo!YYp%@pwIN7N32uVld)YDg|Bb_Bi9ZFq{cN{r*pkgu+gxBf~+Z(!$0?4rr
z|AT)CqEi58`)93=EQCgE8AV!R1rq)jVBONkEVl%1Ex-k4l2l2Qt%i*+bS=**Kxkk(6*3yJ0~8{3
zV3wd11F17U8%9u&KixLC>5Emx4<7;>)y2hPHTtOxI!1?yacNW=0JO@ZBkVl{PEPeA
zR4hD7P^asqfO@k{Ho63wYD7QckDAJ6W+vRxY<|xsK4@7MIk3Llum~^+I$g3AS}j+a
zhSAYd_!@PtK1rUr(

literal 0
HcmV?d00001

diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/guides/nrfconnect_android_commissioning.md
index 7bbc0e3e7aef21..0e2146ba980b8f 100644
--- a/docs/guides/nrfconnect_android_commissioning.md
+++ b/docs/guides/nrfconnect_android_commissioning.md
@@ -1,13 +1,14 @@
 # Commissioning nRF Connect Accessory using Android CHIPTool
 
 You can use [CHIPTool](android_building.md) for Android smartphones to
-commission a Nordic Semiconductor device running an nRF Connect platform example
-onto a Matter-enabled Thread network.
+commission a Nordic Semiconductor's development kit programmed with a Matter
+example for the nRF Connect platform into a Matter fabric.
 
-This guide references the nRF52840 DK and the door lock example application
-based on the nRF Connect platform, but the instructions are also valid for the
-nRF Connect lighting example application and can be adapted to other platforms
-and applications as well.
+This guide references the nRF52840 DK and Matter nRF Connect Lighting Example
+Application that communicates with other nodes over a Thread network, but the
+instructions can be adapted to other platforms and applications. In particular,
+some sections of this guide include deviations from the original procedure that
+are needed to test a Wi-Fi device.
 
 
@@ -30,8 +31,8 @@ The commissioning process is composed of the following main stages: 1. CHIPTool discovers a Matter accessory device over Bluetooth LE. 2. CHIPTool establishes a secure channel to the device over Bluetooth LE, and - sends Matter operational credentials and Thread provisioning data. -3. The accessory device joins a Matter-enabled Thread network. + sends Matter operational credentials and Thread or Wi-Fi credentials. +3. The accessory device joins the operational IPv6 network. CHIPTool uses both Bluetooth LE and the IPv6 connectivity. Bluetooth LE is used only during the commissioning phase. Afterwards, only the IPv6 connectivity @@ -41,13 +42,13 @@ commissioning process and CHIPTool must use DNS Service Discovery (DNS-SD) to learn or refresh the address before the controller initiates the IPv6-based communication. -Since a typical smartphone does not have a Thread radio built-in, extra effort -is needed to prepare the fully-fledged testing environment that includes a -Thread Border Router configured on a Raspberry Pi. +Since a typical smartphone does not have a Thread radio built-in, preparing the +fully-fledged testing environment for Matter over Thread requires a Thread +Border Router configured on a Raspberry Pi. The following diagram shows the connectivity between network components required -to allow communication between devices running the CHIPTool and Lock -applications: +to allow communication between devices running CHIPTool and Matter nRF Connect +Lighting Example Application: ![Matter nodes connectivity](./images/nrfconnect_android_connectivity.png) @@ -60,20 +61,26 @@ applications: You need the following hardware and software for commissioning the nRF Connect accessory using Android CHIPTool: -- Two nRF52840 DK (PCA10056) +- 1x smartphone with Android 8+ +- 1x Wi-Fi Access Point supporting IPv6 (without the IPv6 Router Advertisement + Guard enabled on the router) +- 1x nRF52840 DK (PCA10056) for running the example application. You can + replace this DK with another compatible device, such as the nRF5340 DK or + nRF7002 DK. nRF52840 DK and nRF5340 DK can be used to test Matter over + Thread, and nRF7002 DK can be used to test Matter over Wi-Fi. +- 1x nRF52840 DK for running the + [OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor) + firmware. You can replace this DK with another compatible device, such as + the nRF52840 Dongle. - - One nRF52840 DK is needed for running the - [OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor) - firmware. You can replace this DK with another compatible device, such - as the nRF52840 Dongle. - - One nRF52840 DK is needed for running the example application. You can - replace this DK with another compatible device, such as the nRF5340 DK. + > _Note:_ This piece of hardware is only needed if you're testing a Thread + > device. Skip it if the tested device operates in a Wi-Fi network. -- Smartphone compatible with Android 8.0 or later -- Raspberry Pi Model 3B+ or newer (along with an SD card with at least 8 GB of - memory) -- Wi-Fi Access Point supporting IPv6 (without the IPv6 Router Advertisement - Guard enabled on the router) +- 1x Raspberry Pi Model 3B+ or newer (along with an SD card with at least 8 GB + of memory) + + > _Note:_ This piece of hardware is only needed if you're testing a Thread + > device. Skip it if the tested device operates in a Wi-Fi network.
@@ -81,10 +88,15 @@ accessory using Android CHIPTool: ## Setting up Thread Border Router +> _Note:_ This step is only needed if you're testing a Thread device. Skip it if +> the tested device operates in a Wi-Fi network. + Follow the [OpenThread Border Router](openthread_border_router_pi.md) article to set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840 DK or the nRF52840 Dongle acting as the [OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor). +During the setup, make sure that the Raspberry Pi is connected to your Wi-Fi +Access Point.
@@ -94,8 +106,8 @@ or the nRF52840 Dongle acting as the Build and program the example application onto your compatible device. -For this guide, see the documentation for the door lock example application to -learn how to build and program the example onto an nRF52840 DK. +For this guide, see the documentation of Matter nRF Connect Lighting Example +Application to learn how to build and program the example onto an nRF52840 DK.
@@ -164,24 +176,24 @@ To prepare the accessory device for commissioning, complete the following steps: ## Commissioning accessory device -To commission the accessory device onto the Thread network created in the -[Setting up Thread Border Router](#setting-up-thread-border-router) section, -complete the following steps: - -1. Enable **Bluetooth** and **Location** services on your smartphone. -2. Connect the smartphone to the same Wi-Fi network as the Raspberry Pi which - runs OpenThread Border Router. -3. Open the CHIPTool application on your smartphone. -4. Tap the **PROVISION CHIP DEVICE WITH THREAD** button and scan the - commissioning QR code. Several notifications will appear, informing you of - commissioning progress with scanning, connection, and pairing. At the end of - this process, the Thread network settings screen appears. -5. In the Thread network settings screen, use the default settings and tap the - **SAVE NETWORK** button to send a Thread provisioning message to the - accessory device. - -You will see the "Network provisioning completed" message when the accessory -device successfully joins the Thread network. +To commission the accessory device into the Matter fabric, complete the +following steps: + +1. Enable **Bluetooth** and **Location** services on your smartphone. +2. Connect the smartphone to your Wi-Fi Access Point. +3. Open the CHIPTool application on your smartphone. +4. Depending on your testing scenario, tap one of the following buttons and + scan the commissioning QR code: + + - **PROVISION CHIP DEVICE WITH THREAD** for Matter over Thread + - **PROVISION CHIP DEVICE WITH WI-FI** for Matter over Wi-Fi + + The network credentials screen appears. + +5. In the network credentials screen, specify parameters of network and tap the + **SAVE NETWORK** button. Several notifications appear, informing you of the + progress of scanning, connecting, and pairing with the device. At the end of + this process, the application returns to the main menu.
@@ -195,21 +207,16 @@ Check the IPv6 connectivity with the device using the following steps: 1. Tap **LIGHT ON/OFF & LEVEL CLUSTER**. The following screen appears: - ![CHIPTool device control screen](./images/CHIPTool_device_commissioned.jpg) + ![CHIPTool device control screen](./images/CHIPTool_device_commissioned.png) The two textboxes at the top contain **Fabric ID** and **Node ID** of the last commissioned device. -2. Tap **UPDATE ADDRESS** to learn or refresh the IPv6 address of the device. - CHIPTool will use a built-in DNS-SD client to resolve **Fabric ID** and - **Node ID** of the device to its IPv6 address. The result of the operation, - be it the address or an error message, will be displayed at the bottom of the - screen. -3. Tap the following buttons to change the lock state of the nRF Connect door - lock example application referenced in this guide: +2. Tap the following buttons to change the lighting state of the Matter nRF + Connect Lighting Example Application referenced in this guide: - - **ON** and **OFF** buttons lock and unlock the door, respectively. - - **TOGGLE** changes the lock state to the opposite. + - **ON** and **OFF** buttons turn on and off the light, respectively. + - **TOGGLE** changes the lighting state to the opposite. -The **LED 2** on the device turns on or off based on the changes of the lock +The **LED 2** on the device turns on or off based on the changes of the lighting state. diff --git a/examples/all-clusters-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/all-clusters-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay index b8030f42c1def9..4b2eca8e4cd66b 100644 --- a/examples/all-clusters-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ b/examples/all-clusters-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -25,9 +25,6 @@ &adc { status = "disabled"; }; -&gpio1 { - status = "disabled"; -}; &i2c1 { status = "disabled"; }; diff --git a/examples/all-clusters-app/nrfconnect/main/AppTask.cpp b/examples/all-clusters-app/nrfconnect/main/AppTask.cpp index 60519e928c6632..40b987b620332d 100644 --- a/examples/all-clusters-app/nrfconnect/main/AppTask.cpp +++ b/examples/all-clusters-app/nrfconnect/main/AppTask.cpp @@ -142,6 +142,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -159,6 +160,7 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/all-clusters-minimal-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/all-clusters-minimal-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay index b8030f42c1def9..4b2eca8e4cd66b 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ b/examples/all-clusters-minimal-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -25,9 +25,6 @@ &adc { status = "disabled"; }; -&gpio1 { - status = "disabled"; -}; &i2c1 { status = "disabled"; }; diff --git a/examples/chef/nrfconnect/main.cpp b/examples/chef/nrfconnect/main.cpp index fe031e7145ff35..8c3061945838d7 100644 --- a/examples/chef/nrfconnect/main.cpp +++ b/examples/chef/nrfconnect/main.cpp @@ -79,7 +79,8 @@ int main() #if CHIP_DEVICE_CONFIG_ENABLE_WPA ConnectivityManagerImpl().StartWiFiManagement(); #endif -#if CHIP_ENABLE_OPENTHREAD + +#if defined(CHIP_ENABLE_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -97,7 +98,9 @@ int main() ChipLogError(AppServer, "ConnectivityMgr().SetThreadDeviceType() failed"); return 1; } -#endif /* CHIP_ENABLE_OPENTHREAD */ +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif // Device Attestation & Onboarding codes chip::Credentials::SetDeviceAttestationCredentialsProvider(chip::Credentials::Examples::GetExampleDACProvider()); diff --git a/examples/light-switch-app/nrfconnect/main/AppTask.cpp b/examples/light-switch-app/nrfconnect/main/AppTask.cpp index dd388276964660..4eee5a57bfef8d 100644 --- a/examples/light-switch-app/nrfconnect/main/AppTask.cpp +++ b/examples/light-switch-app/nrfconnect/main/AppTask.cpp @@ -113,6 +113,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -130,6 +131,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed: %s", ErrorStr(err)); return err; } +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif LightSwitch::GetInstance().Init(kLightDimmerSwitchEndpointId, kLightGenericSwitchEndpointId); diff --git a/examples/lighting-app/nrfconnect/main/AppTask.cpp b/examples/lighting-app/nrfconnect/main/AppTask.cpp index c43a7c16334382..1ee75869d3ddfc 100644 --- a/examples/lighting-app/nrfconnect/main/AppTask.cpp +++ b/examples/lighting-app/nrfconnect/main/AppTask.cpp @@ -124,6 +124,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -138,6 +139,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/lock-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/lock-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay index 5ae48f5ba4b0da..d1d93c9dbf033d 100644 --- a/examples/lock-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ b/examples/lock-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -25,9 +25,6 @@ &adc { status = "disabled"; }; -&gpio1 { - status = "disabled"; -}; &i2c1 { status = "disabled"; }; diff --git a/examples/lock-app/nrfconnect/main/AppTask.cpp b/examples/lock-app/nrfconnect/main/AppTask.cpp index cb46530b93df85..b7d4d02a42e75c 100644 --- a/examples/lock-app/nrfconnect/main/AppTask.cpp +++ b/examples/lock-app/nrfconnect/main/AppTask.cpp @@ -103,6 +103,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -120,6 +121,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#else + return CHIP_ERROR_INTERNAL; +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/pump-app/nrfconnect/main/AppTask.cpp b/examples/pump-app/nrfconnect/main/AppTask.cpp index 7ab470249da53b..d8ccc47f393f53 100644 --- a/examples/pump-app/nrfconnect/main/AppTask.cpp +++ b/examples/pump-app/nrfconnect/main/AppTask.cpp @@ -104,6 +104,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -117,6 +118,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/pump-controller-app/nrfconnect/main/AppTask.cpp b/examples/pump-controller-app/nrfconnect/main/AppTask.cpp index f473d0fa94534e..ea4bf106e0c437 100644 --- a/examples/pump-controller-app/nrfconnect/main/AppTask.cpp +++ b/examples/pump-controller-app/nrfconnect/main/AppTask.cpp @@ -101,6 +101,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -114,6 +115,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/window-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay b/examples/window-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay index 5310e26238da64..f4559366c7df5c 100644 --- a/examples/window-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay +++ b/examples/window-app/nrfconnect/boards/nrf5340dk_nrf5340_cpuapp.overlay @@ -45,9 +45,6 @@ &adc { status = "disabled"; }; -&gpio1 { - status = "disabled"; -}; &i2c1 { status = "disabled"; }; diff --git a/examples/window-app/nrfconnect/main/AppTask.cpp b/examples/window-app/nrfconnect/main/AppTask.cpp index 77ab1af1a4960c..08df914781835b 100644 --- a/examples/window-app/nrfconnect/main/AppTask.cpp +++ b/examples/window-app/nrfconnect/main/AppTask.cpp @@ -105,6 +105,7 @@ CHIP_ERROR AppTask::Init() return err; } +#if defined(CONFIG_NET_L2_OPENTHREAD) err = ThreadStackMgr().InitThreadStack(); if (err != CHIP_NO_ERROR) { @@ -125,6 +126,9 @@ CHIP_ERROR AppTask::Init() LOG_ERR("ConnectivityMgr().SetThreadDeviceType() failed"); return err; } +#elif !defined(CONFIG_WIFI_NRF700X) + return CHIP_ERROR_INTERNAL; +#endif // Initialize LEDs LEDWidget::InitGpio(); diff --git a/examples/window-app/nrfconnect/prj_no_dfu.conf b/examples/window-app/nrfconnect/prj_no_dfu.conf index 1a8816e44557af..f2787a7619fe73 100644 --- a/examples/window-app/nrfconnect/prj_no_dfu.conf +++ b/examples/window-app/nrfconnect/prj_no_dfu.conf @@ -23,6 +23,7 @@ CONFIG_STD_CPP14=y # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y +CONFIG_PWM=y # OpenThread configs CONFIG_OPENTHREAD_NORDIC_LIBRARY_MTD=y diff --git a/examples/window-app/nrfconnect/prj_release.conf b/examples/window-app/nrfconnect/prj_release.conf index 0a1e7735a8455e..caf0ee1a5be1e9 100644 --- a/examples/window-app/nrfconnect/prj_release.conf +++ b/examples/window-app/nrfconnect/prj_release.conf @@ -23,6 +23,7 @@ CONFIG_STD_CPP14=y # Add support for LEDs and buttons on Nordic development kits CONFIG_DK_LIBRARY=y +CONFIG_PWM=y # OpenThread configs CONFIG_OPENTHREAD_NORDIC_LIBRARY_MTD=y diff --git a/src/include/platform/internal/GenericConnectivityManagerImpl.h b/src/include/platform/internal/GenericConnectivityManagerImpl.h index 6315c25a701b51..a56e92d17d0d8d 100644 --- a/src/include/platform/internal/GenericConnectivityManagerImpl.h +++ b/src/include/platform/internal/GenericConnectivityManagerImpl.h @@ -33,7 +33,7 @@ namespace Internal { * * This template contains implementations of select features from the ConnectivityManager abstract * interface that are suitable for use on all platforms. It is intended to be inherited (directly - * or indirectly) by the ConfigurationManagerImpl class, which also appears as the template's ImplClass + * or indirectly) by the ConnectivityManagerImpl class, which also appears as the template's ImplClass * parameter. */ template diff --git a/src/inet/InetConfig.h b/src/inet/InetConfig.h index d209328fde87a5..0631a7e14f77da 100644 --- a/src/inet/InetConfig.h +++ b/src/inet/InetConfig.h @@ -250,4 +250,26 @@ #ifndef INET_CONFIG_IP_MULTICAST_HOP_LIMIT #define INET_CONFIG_IP_MULTICAST_HOP_LIMIT (64) #endif // INET_CONFIG_IP_MULTICAST_HOP_LIMIT + +/** + * @def INET_CONFIG_UDP_SOCKET_PKTINFO + * + * @brief + * Use IP_PKTINFO and IPV6_PKTINFO control messages to specify the network + * interface and the source address of a sent UDP packet. + * + * @details + * When this flag is set, the socket-based implementation of UDP endpoints + * requires that IP_PKTINFO and IPV6_PKTINFO be supported. Otherwise, it is + * left to the operating system to select the network interface and the + * source address. + */ +#ifndef INET_CONFIG_UDP_SOCKET_PKTINFO +#ifndef __ZEPHYR__ +#define INET_CONFIG_UDP_SOCKET_PKTINFO 1 +#else +#define INET_CONFIG_UDP_SOCKET_PKTINFO 0 +#endif +#endif // INET_CONFIG_UDP_SOCKET_PKTINFO + // clang-format on diff --git a/src/inet/UDPEndPointImplSockets.cpp b/src/inet/UDPEndPointImplSockets.cpp index cd12fe42fb64d3..6c85906bb7a9ed 100644 --- a/src/inet/UDPEndPointImplSockets.cpp +++ b/src/inet/UDPEndPointImplSockets.cpp @@ -66,7 +66,7 @@ #define INET_IPV6_ADD_MEMBERSHIP IPV6_ADD_MEMBERSHIP #elif defined(IPV6_JOIN_GROUP) #define INET_IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP -#elif !__ZEPHYR__ +#elif !CHIP_SYSTEM_CONFIG_USE_PLATFORM_MULTICAST_API #error \ "Neither IPV6_ADD_MEMBERSHIP nor IPV6_JOIN_GROUP are defined which are required for generalized IPv6 multicast group support." #endif // IPV6_ADD_MEMBERSHIP @@ -75,7 +75,7 @@ #define INET_IPV6_DROP_MEMBERSHIP IPV6_DROP_MEMBERSHIP #elif defined(IPV6_LEAVE_GROUP) #define INET_IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP -#elif !__ZEPHYR__ +#elif !CHIP_SYSTEM_CONFIG_USE_PLATFORM_MULTICAST_API #error \ "Neither IPV6_DROP_MEMBERSHIP nor IPV6_LEAVE_GROUP are defined which are required for generalized IPv6 multicast group support." #endif // IPV6_DROP_MEMBERSHIP @@ -337,6 +337,7 @@ CHIP_ERROR UDPEndPointImplSockets::SendMsgImpl(const IPPacketInfo * aPktInfo, Sy intf = mBoundIntfId; } +#if INET_CONFIG_UDP_SOCKET_PKTINFO // If the packet should be sent over a specific interface, or with a specific source // address, construct an IP_PKTINFO/IPV6_PKTINFO "control message" to that effect // add add it to the message header. If the local OS doesn't support IP_PKTINFO/IPV6_PKTINFO @@ -401,6 +402,7 @@ CHIP_ERROR UDPEndPointImplSockets::SendMsgImpl(const IPPacketInfo * aPktInfo, Sy return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; #endif // !(defined(IP_PKTINFO) && defined(IPV6_PKTINFO)) } +#endif // INET_CONFIG_UDP_SOCKET_PKTINFO // Send IP packet. const ssize_t lenSent = sendmsg(mSocket, &msgHeader, 0); @@ -565,7 +567,8 @@ void UDPEndPointImplSockets::HandlePendingIO(System::SocketEvents events) System::PacketBufferHandle lBuffer; lPacketInfo.Clear(); - lPacketInfo.DestPort = mBoundPort; + lPacketInfo.DestPort = mBoundPort; + lPacketInfo.Interface = mBoundIntfId; lBuffer = System::PacketBufferHandle::New(System::PacketBuffer::kMaxSizeWithoutReserve, 0); diff --git a/src/platform/Zephyr/BLEManagerImpl.cpp b/src/platform/Zephyr/BLEManagerImpl.cpp index d65b7a903e5e34..88edbd3da061f5 100644 --- a/src/platform/Zephyr/BLEManagerImpl.cpp +++ b/src/platform/Zephyr/BLEManagerImpl.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include diff --git a/src/platform/Zephyr/ConfigurationManagerImpl.cpp b/src/platform/Zephyr/ConfigurationManagerImpl.cpp index 107579afbfbb03..378e35e1006fe3 100644 --- a/src/platform/Zephyr/ConfigurationManagerImpl.cpp +++ b/src/platform/Zephyr/ConfigurationManagerImpl.cpp @@ -27,8 +27,11 @@ #include #include + #include +#include "InetUtils.h" + #include #include @@ -201,6 +204,21 @@ void ConfigurationManagerImpl::DoFactoryReset(intptr_t arg) PlatformMgr().Shutdown(); } +CHIP_ERROR ConfigurationManagerImpl::GetPrimaryWiFiMACAddress(uint8_t * buf) +{ +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI + const net_if * const iface = InetUtils::GetInterface(); + VerifyOrReturnError(iface != nullptr && iface->if_dev != nullptr, CHIP_ERROR_INTERNAL); + + const auto linkAddrStruct = iface->if_dev->link_addr; + memcpy(buf, linkAddrStruct.addr, linkAddrStruct.len); + + return CHIP_NO_ERROR; +#else + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +#endif +} + ConfigurationManager & ConfigurationMgrImpl() { return ConfigurationManagerImpl::GetDefaultInstance(); diff --git a/src/platform/Zephyr/ConfigurationManagerImpl.h b/src/platform/Zephyr/ConfigurationManagerImpl.h index 166237fba32d81..87f9e30335b8fc 100644 --- a/src/platform/Zephyr/ConfigurationManagerImpl.h +++ b/src/platform/Zephyr/ConfigurationManagerImpl.h @@ -94,11 +94,6 @@ inline CHIP_ERROR ConfigurationManagerImpl::WritePersistedStorageValue(::chip::P return Internal::ZephyrConfig::WriteConfigValueCounter(key, value); } -inline CHIP_ERROR ConfigurationManagerImpl::GetPrimaryWiFiMACAddress(uint8_t * /* buf */) -{ - return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; -} - /** * Returns the platform-specific implementation of the ConfigurationManager object. * diff --git a/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp b/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp index 1eb24394f27be7..c1fb842e054e1d 100644 --- a/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp @@ -116,7 +116,7 @@ DiagnosticDataProviderImpl & DiagnosticDataProviderImpl::GetDefaultInstance() return sInstance; } -inline DiagnosticDataProviderImpl::DiagnosticDataProviderImpl() : mBootReason(DetermineBootReason()) +DiagnosticDataProviderImpl::DiagnosticDataProviderImpl() : mBootReason(DetermineBootReason()) { ChipLogDetail(DeviceLayer, "Boot reason: %u", static_cast(mBootReason)); } @@ -328,10 +328,5 @@ void DiagnosticDataProviderImpl::ReleaseNetworkInterfaces(NetworkInterface * net } } -DiagnosticDataProvider & GetDiagnosticDataProviderImpl() -{ - return DiagnosticDataProviderImpl::GetDefaultInstance(); -} - } // namespace DeviceLayer } // namespace chip diff --git a/src/platform/Zephyr/DiagnosticDataProviderImpl.h b/src/platform/Zephyr/DiagnosticDataProviderImpl.h index 2b46051d27b125..69bbae5bf04471 100644 --- a/src/platform/Zephyr/DiagnosticDataProviderImpl.h +++ b/src/platform/Zephyr/DiagnosticDataProviderImpl.h @@ -52,9 +52,10 @@ class DiagnosticDataProviderImpl : public DiagnosticDataProvider CHIP_ERROR GetNetworkInterfaces(NetworkInterface ** netifpp) override; void ReleaseNetworkInterfaces(NetworkInterface * netifp) override; -private: +protected: DiagnosticDataProviderImpl(); +private: const BootReasonType mBootReason; }; diff --git a/src/platform/Zephyr/DiagnosticDataProviderImplGetter.cpp b/src/platform/Zephyr/DiagnosticDataProviderImplGetter.cpp new file mode 100644 index 00000000000000..6b920d1661ffc3 --- /dev/null +++ b/src/platform/Zephyr/DiagnosticDataProviderImplGetter.cpp @@ -0,0 +1,29 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "DiagnosticDataProviderImpl.h" + +namespace chip { +namespace DeviceLayer { + +DiagnosticDataProvider & GetDiagnosticDataProviderImpl() +{ + return DiagnosticDataProviderImpl::GetDefaultInstance(); +} + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/Zephyr/InetUtils.cpp b/src/platform/Zephyr/InetUtils.cpp new file mode 100644 index 00000000000000..1169cf6362ad88 --- /dev/null +++ b/src/platform/Zephyr/InetUtils.cpp @@ -0,0 +1,41 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "InetUtils.h" + +namespace chip { +namespace DeviceLayer { +namespace InetUtils { + +in6_addr ToZephyrAddr(const chip::Inet::IPAddress & address) +{ + in6_addr zephyrAddr; + + static_assert(sizeof(zephyrAddr.s6_addr) == sizeof(address.Addr), "Unexpected address size"); + memcpy(zephyrAddr.s6_addr, address.Addr, sizeof(address.Addr)); + + return zephyrAddr; +} + +net_if * GetInterface(chip::Inet::InterfaceId ifaceId) +{ + return ifaceId.IsPresent() ? net_if_get_by_index(ifaceId.GetPlatformInterface()) : net_if_get_default(); +} + +} // namespace InetUtils +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/Zephyr/InetUtils.h b/src/platform/Zephyr/InetUtils.h new file mode 100644 index 00000000000000..ad7c5e1dc9028f --- /dev/null +++ b/src/platform/Zephyr/InetUtils.h @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +struct in6_addr; +struct net_if; + +namespace chip { +namespace DeviceLayer { +namespace InetUtils { + +in6_addr ToZephyrAddr(const chip::Inet::IPAddress & address); +net_if * GetInterface(chip::Inet::InterfaceId ifaceId = chip::Inet::InterfaceId::Null()); + +} // namespace InetUtils +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/BUILD.gn b/src/platform/nrfconnect/BUILD.gn index a841a2bb374020..186b45e4a54219 100644 --- a/src/platform/nrfconnect/BUILD.gn +++ b/src/platform/nrfconnect/BUILD.gn @@ -41,6 +41,8 @@ static_library("nrfconnect") { "ConfigurationManagerImpl.h", "ConnectivityManagerImpl.cpp", "ConnectivityManagerImpl.h", + "DiagnosticDataProviderImplNrf.cpp", + "DiagnosticDataProviderImplNrf.h", "ExternalFlashManager.h", "InetPlatformConfig.h", "KeyValueStoreManagerImpl.h", @@ -80,6 +82,19 @@ static_library("nrfconnect") { } } + if (chip_enable_wifi) { + sources += [ + "../Zephyr/InetUtils.cpp", + "../Zephyr/InetUtils.h", + "wifi/ConnectivityManagerImplWiFi.cpp", + "wifi/ConnectivityManagerImplWiFi.h", + "wifi/NrfWiFiDriver.cpp", + "wifi/NrfWiFiDriver.h", + "wifi/WiFiManager.cpp", + "wifi/WiFiManager.h", + ] + } + if (chip_enable_nfc) { sources += [ "../Zephyr/NFCManagerImpl.cpp", diff --git a/src/platform/nrfconnect/CHIPDevicePlatformConfig.h b/src/platform/nrfconnect/CHIPDevicePlatformConfig.h index 3813c860725a56..5a82f16ad4e9d8 100644 --- a/src/platform/nrfconnect/CHIPDevicePlatformConfig.h +++ b/src/platform/nrfconnect/CHIPDevicePlatformConfig.h @@ -87,10 +87,17 @@ #define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING CONFIG_CHIP_DEVICE_SOFTWARE_VERSION_STRING #endif +#define CHIP_DEVICE_CONFIG_ENABLE_THREAD CONFIG_NET_L2_OPENTHREAD + +#define CHIP_DEVICE_CONFIG_ENABLE_WIFI CONFIG_WIFI_NRF700X + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI +#define CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION 1 +#define CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP 0 +#else #define CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION 0 #define CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP 0 - -#define CHIP_DEVICE_CONFIG_ENABLE_THREAD CONFIG_NET_L2_OPENTHREAD +#endif #define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE CONFIG_BT diff --git a/src/platform/nrfconnect/ConnectivityManagerImpl.cpp b/src/platform/nrfconnect/ConnectivityManagerImpl.cpp index c5029f37a67862..504b0d0460ccde 100644 --- a/src/platform/nrfconnect/ConnectivityManagerImpl.cpp +++ b/src/platform/nrfconnect/ConnectivityManagerImpl.cpp @@ -51,7 +51,9 @@ CHIP_ERROR ConnectivityManagerImpl::_Init() #if CHIP_DEVICE_CONFIG_ENABLE_THREAD GenericConnectivityManagerImpl_Thread::_Init(); #endif - +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI + ReturnErrorOnFailure(InitWiFi()); +#endif return CHIP_NO_ERROR; } diff --git a/src/platform/nrfconnect/ConnectivityManagerImpl.h b/src/platform/nrfconnect/ConnectivityManagerImpl.h index 4c003f23a4861a..8ea6c2d76b6561 100644 --- a/src/platform/nrfconnect/ConnectivityManagerImpl.h +++ b/src/platform/nrfconnect/ConnectivityManagerImpl.h @@ -28,12 +28,18 @@ #else #include #endif + #if CHIP_DEVICE_CONFIG_ENABLE_THREAD #include #else #include #endif + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI +#include "wifi/ConnectivityManagerImplWiFi.h" +#else #include +#endif #include @@ -65,7 +71,11 @@ class ConnectivityManagerImpl final : public ConnectivityManager, #else public Internal::GenericConnectivityManagerImpl_NoThread, #endif +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI + public ConnectivityManagerImplWiFi +#else public Internal::GenericConnectivityManagerImpl_NoWiFi +#endif { // Allow the ConnectivityManager interface class to delegate method calls to // the implementation methods provided by this class. @@ -100,7 +110,7 @@ inline ConnectivityManager & ConnectivityMgr(void) * Returns the platform-specific implementation of the ConnectivityManager singleton object. * * chip applications can use this to gain access to features of the ConnectivityManager - * that are specific to the ESP32 platform. + * that are specific to the nrfconnect platform. */ inline ConnectivityManagerImpl & ConnectivityMgrImpl(void) { diff --git a/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.cpp b/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.cpp new file mode 100644 index 00000000000000..5f7bc1a6702b4e --- /dev/null +++ b/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.cpp @@ -0,0 +1,136 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Provides an implementation of the DiagnosticDataProvider object + * for nrfconnect platform. + */ + +#include "DiagnosticDataProviderImplNrf.h" + +#ifdef CONFIG_WIFI_NRF700X +#include +#endif + +namespace chip { +namespace DeviceLayer { + +DiagnosticDataProvider & GetDiagnosticDataProviderImpl() +{ + return DiagnosticDataProviderImplNrf::GetDefaultInstance(); +} + +DiagnosticDataProviderImplNrf & DiagnosticDataProviderImplNrf::GetDefaultInstance() +{ + static DiagnosticDataProviderImplNrf sInstance; + return sInstance; +} + +#ifdef CONFIG_WIFI_NRF700X +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiBssId(ByteSpan & value) +{ + WiFiManager::WiFiInfo info; + CHIP_ERROR err = WiFiManager::Instance().GetWiFiInfo(info); + value = info.mBssId; + return err; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiSecurityType(uint8_t & securityType) +{ + WiFiManager::WiFiInfo info; + CHIP_ERROR err = WiFiManager::Instance().GetWiFiInfo(info); + securityType = info.mSecurityType; + return err; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiVersion(uint8_t & wiFiVersion) +{ + WiFiManager::WiFiInfo info; + CHIP_ERROR err = WiFiManager::Instance().GetWiFiInfo(info); + wiFiVersion = info.mWiFiVersion; + return err; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiChannelNumber(uint16_t & channelNumber) +{ + WiFiManager::WiFiInfo info; + CHIP_ERROR err = WiFiManager::Instance().GetWiFiInfo(info); + channelNumber = info.mChannel; + (void) err; + // above will return 0 until the wpa_supplicant driver API implementation is refined + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiRssi(int8_t & rssi) +{ + WiFiManager::WiFiInfo info; + CHIP_ERROR err = WiFiManager::Instance().GetWiFiInfo(info); + rssi = info.mRssi; + (void) err; + // above will return -128 until the wpa_supplicant driver API implementation is refined + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +// below will be implemented when the WiFi driver exposes Zephyr NET_STATISTICS API +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiBeaconLostCount(uint32_t & beaconLostCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiBeaconRxCount(uint32_t & beaconRxCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiPacketMulticastRxCount(uint32_t & packetMulticastRxCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiPacketMulticastTxCount(uint32_t & packetMulticastTxCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiPacketUnicastRxCount(uint32_t & packetUnicastRxCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiPacketUnicastTxCount(uint32_t & packetUnicastTxCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiCurrentMaxRate(uint64_t & currentMaxRate) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::GetWiFiOverrunCount(uint64_t & overrunCount) +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} + +CHIP_ERROR DiagnosticDataProviderImplNrf::ResetWiFiNetworkDiagnosticsCounts() +{ + return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE; +} +#endif + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.h b/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.h new file mode 100644 index 00000000000000..3b770e627428e8 --- /dev/null +++ b/src/platform/nrfconnect/DiagnosticDataProviderImplNrf.h @@ -0,0 +1,60 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Provides an implementation of the DiagnosticDataProvider object + * for nrfconnect platform. + */ + +#pragma once + +#include + +namespace chip { +namespace DeviceLayer { + +class DiagnosticDataProviderImplNrf : public DiagnosticDataProviderImpl +{ +public: +#ifdef CONFIG_WIFI_NRF700X + CHIP_ERROR GetWiFiBssId(ByteSpan & value) override; + CHIP_ERROR GetWiFiSecurityType(uint8_t & securityType) override; + CHIP_ERROR GetWiFiVersion(uint8_t & wiFiVersion) override; + CHIP_ERROR GetWiFiChannelNumber(uint16_t & channelNumber) override; + CHIP_ERROR GetWiFiRssi(int8_t & rssi) override; + CHIP_ERROR GetWiFiBeaconLostCount(uint32_t & beaconLostCount) override; + CHIP_ERROR GetWiFiBeaconRxCount(uint32_t & beaconRxCount) override; + CHIP_ERROR GetWiFiPacketMulticastRxCount(uint32_t & packetMulticastRxCount) override; + CHIP_ERROR GetWiFiPacketMulticastTxCount(uint32_t & packetMulticastTxCount) override; + CHIP_ERROR GetWiFiPacketUnicastRxCount(uint32_t & packetUnicastRxCount) override; + CHIP_ERROR GetWiFiPacketUnicastTxCount(uint32_t & packetUnicastTxCount) override; + CHIP_ERROR GetWiFiCurrentMaxRate(uint64_t & currentMaxRate) override; + CHIP_ERROR GetWiFiOverrunCount(uint64_t & overrunCount) override; + CHIP_ERROR ResetWiFiNetworkDiagnosticsCounts() override; +#endif + + static DiagnosticDataProviderImplNrf & GetDefaultInstance(); + +private: + DiagnosticDataProviderImplNrf() = default; +}; + +DiagnosticDataProvider & GetDiagnosticDataProviderImpl(); + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp new file mode 100644 index 00000000000000..73e16303a03bc5 --- /dev/null +++ b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp @@ -0,0 +1,228 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* this file behaves like a config.h, comes first */ +#include + +#include +#include + +#include "ConnectivityManagerImplWiFi.h" +#include "WiFiManager.h" + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI + +using namespace ::chip; +using namespace ::chip::Inet; +using namespace ::chip::System; +using namespace ::chip::TLV; + +namespace chip { +namespace DeviceLayer { + +CHIP_ERROR ConnectivityManagerImplWiFi::InitWiFi() +{ + return WiFiManager::Instance().Init(); +} + +ConnectivityManager::WiFiStationMode ConnectivityManagerImplWiFi::_GetWiFiStationMode(void) +{ + if (mStationMode != ConnectivityManager::WiFiStationMode::kWiFiStationMode_ApplicationControlled) + { + mStationMode = (WiFiManager::StationStatus::DISABLED == WiFiManager().Instance().GetStationStatus()) + ? ConnectivityManager::WiFiStationMode::kWiFiStationMode_Disabled + : ConnectivityManager::WiFiStationMode::kWiFiStationMode_Enabled; + } + return mStationMode; +} + +CHIP_ERROR ConnectivityManagerImplWiFi::_SetWiFiStationMode(ConnectivityManager::WiFiStationMode aMode) +{ + VerifyOrReturnError(ConnectivityManager::WiFiStationMode::kWiFiStationMode_NotSupported != aMode, + CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE); + + if (aMode != mStationMode) + { + mStationMode = aMode; + if (mStationMode != ConnectivityManager::WiFiStationMode::kWiFiStationMode_ApplicationControlled) + { + bool doEnable{ ConnectivityManager::WiFiStationMode::kWiFiStationMode_Enabled == mStationMode }; + // TODO: when the connection/disconnection callback API is provided + // below calls should be used as a base of disconnect callback + if (doEnable) + { + OnStationConnected(); + } + else + { + OnStationDisconnected(); + } + } + } + + return CHIP_NO_ERROR; +} + +bool ConnectivityManagerImplWiFi::_IsWiFiStationEnabled(void) +{ + return (WiFiManager::StationStatus::DISABLED <= WiFiManager().Instance().GetStationStatus()); +} + +bool ConnectivityManagerImplWiFi::_IsWiFiStationApplicationControlled(void) +{ + return (ConnectivityManager::WiFiStationMode::kWiFiStationMode_ApplicationControlled == mStationMode); +} + +bool ConnectivityManagerImplWiFi::_IsWiFiStationConnected(void) +{ + return (WiFiManager::StationStatus::FULLY_PROVISIONED == WiFiManager().Instance().GetStationStatus()); +} + +System::Clock::Timeout ConnectivityManagerImplWiFi::_GetWiFiStationReconnectInterval(void) +{ + return mWiFiStationReconnectInterval; +} + +CHIP_ERROR ConnectivityManagerImplWiFi::_SetWiFiStationReconnectInterval(System::Clock::Timeout val) +{ + mWiFiStationReconnectInterval = val; + return CHIP_NO_ERROR; +} + +bool ConnectivityManagerImplWiFi::_IsWiFiStationProvisioned(void) +{ + // from Matter perspective `provisioned` means that the supplicant has been provided + // with SSID and password (doesn't matter if valid or not) + return (WiFiManager::StationStatus::CONNECTING <= WiFiManager().Instance().GetStationStatus()); +} + +void ConnectivityManagerImplWiFi::_ClearWiFiStationProvision(void) +{ + if (_IsWiFiStationProvisioned()) + { + if (CHIP_NO_ERROR != WiFiManager().Instance().ClearStationProvisioningData()) + { + ChipLogError(DeviceLayer, "Cannot clear WiFi station provisioning data"); + } + } +} + +bool ConnectivityManagerImplWiFi::_CanStartWiFiScan() +{ + return (WiFiManager::StationStatus::DISABLED != WiFiManager().Instance().GetStationStatus() && + WiFiManager::StationStatus::SCANNING != WiFiManager().Instance().GetStationStatus() && + WiFiManager::StationStatus::CONNECTING != WiFiManager().Instance().GetStationStatus()); +} + +void ConnectivityManagerImplWiFi::_OnWiFiStationProvisionChange() +{ + // do nothing +} + +void ConnectivityManagerImplWiFi::_OnWiFiScanDone() {} + +CHIP_ERROR ConnectivityManagerImplWiFi::_GetAndLogWiFiStatsCounters(void) +{ + // TODO: when network statistics are enabled + return CHIP_NO_ERROR; +} + +void ConnectivityManagerImplWiFi::OnStationConnected() +{ + // ensure the station is connected + if (_IsWiFiStationConnected()) + { + ChipDeviceEvent connectEvent{}; + connectEvent.Type = DeviceEventType::kWiFiConnectivityChange; + connectEvent.WiFiConnectivityChange.Result = kConnectivity_Established; + PlatformMgr().PostEventOrDie(&connectEvent); + } + else + { + ChipLogError(DeviceLayer, "WiFi Station is not connected!"); + } +} + +void ConnectivityManagerImplWiFi::OnStationDisconnected() +{ + // ensure the station is disconnected + if (WiFiManager::StationStatus::DISCONNECTED == WiFiManager().Instance().GetStationStatus()) + { + ChipDeviceEvent disconnectEvent{}; + disconnectEvent.Type = DeviceEventType::kWiFiConnectivityChange; + disconnectEvent.WiFiConnectivityChange.Result = kConnectivity_Lost; + PlatformMgr().PostEventOrDie(&disconnectEvent); + } + else + { + ChipLogError(DeviceLayer, "WiFi Station is not disconnected!"); + } +} + +ConnectivityManager::WiFiAPMode ConnectivityManagerImplWiFi::_GetWiFiAPMode(void) +{ + /* AP mode is unsupported */ + return ConnectivityManager::WiFiAPMode::kWiFiAPMode_NotSupported; +} + +CHIP_ERROR ConnectivityManagerImplWiFi::_SetWiFiAPMode(ConnectivityManager::WiFiAPMode mode) +{ + /* AP mode is unsupported */ + VerifyOrReturnError(ConnectivityManager::WiFiAPMode::kWiFiAPMode_NotSupported == mode || + ConnectivityManager::WiFiAPMode::kWiFiAPMode_Disabled == mode, + CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE); + return CHIP_NO_ERROR; +} + +bool ConnectivityManagerImplWiFi::_IsWiFiAPActive(void) +{ + /* AP mode is unsupported */ + return false; +} + +bool ConnectivityManagerImplWiFi::_IsWiFiAPApplicationControlled(void) +{ + /* AP mode is unsupported */ + return false; +} + +void ConnectivityManagerImplWiFi::_DemandStartWiFiAP(void) +{ /* AP mode is unsupported */ +} + +void ConnectivityManagerImplWiFi::_StopOnDemandWiFiAP(void) +{ /* AP mode is unsupported */ +} + +void ConnectivityManagerImplWiFi::_MaintainOnDemandWiFiAP(void) +{ /* AP mode is unsupported */ +} + +System::Clock::Timeout ConnectivityManagerImplWiFi::_GetWiFiAPIdleTimeout(void) +{ + /* AP mode is unsupported */ + return System::Clock::kZero; +} + +void ConnectivityManagerImplWiFi::_SetWiFiAPIdleTimeout(System::Clock::Timeout val) +{ /* AP mode is unsupported */ +} + +} // namespace DeviceLayer +} // namespace chip + +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI diff --git a/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.h b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.h new file mode 100644 index 00000000000000..8198453038417a --- /dev/null +++ b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.h @@ -0,0 +1,82 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include + +#include + +#include + +namespace chip { +namespace Inet { +class IPAddress; +} // namespace Inet +} // namespace chip + +namespace chip { +namespace DeviceLayer { + +class ConnectivityManagerImplWiFi +{ + friend class ConnectivityManager; + +protected: + CHIP_ERROR InitWiFi(); + +private: + // Wi-Fi station + ConnectivityManager::WiFiStationMode _GetWiFiStationMode(void); + CHIP_ERROR _SetWiFiStationMode(ConnectivityManager::WiFiStationMode val); + bool _IsWiFiStationEnabled(void); + bool _IsWiFiStationApplicationControlled(void); + bool _IsWiFiStationConnected(void); + System::Clock::Timeout _GetWiFiStationReconnectInterval(void); + CHIP_ERROR _SetWiFiStationReconnectInterval(System::Clock::Timeout val); + bool _IsWiFiStationProvisioned(void); + void _ClearWiFiStationProvision(void); + CHIP_ERROR _GetAndLogWiFiStatsCounters(void); + bool _CanStartWiFiScan(); + void _OnWiFiScanDone(); + void _OnWiFiStationProvisionChange(); + void OnStationConnected(); + void OnStationDisconnected(); + + // Wi-Fi access point - not supported + ConnectivityManager::WiFiAPMode _GetWiFiAPMode(void); + CHIP_ERROR _SetWiFiAPMode(ConnectivityManager::WiFiAPMode val); + bool _IsWiFiAPActive(void); + bool _IsWiFiAPApplicationControlled(void); + void _DemandStartWiFiAP(void); + void _StopOnDemandWiFiAP(void); + void _MaintainOnDemandWiFiAP(void); + System::Clock::Timeout _GetWiFiAPIdleTimeout(void); + void _SetWiFiAPIdleTimeout(System::Clock::Timeout val); + + ConnectivityManager::WiFiStationMode mStationMode{ ConnectivityManager::WiFiStationMode::kWiFiStationMode_Disabled }; + ConnectivityManager::WiFiStationState mStationState{ ConnectivityManager::WiFiStationState::kWiFiStationState_NotConnected }; + System::Clock::Timeout mWiFiStationReconnectInterval{}; + + static const char * _WiFiStationModeToStr(ConnectivityManager::WiFiStationMode mode); + static const char * _WiFiAPModeToStr(ConnectivityManager::WiFiAPMode mode); + static const char * _WiFiStationStateToStr(ConnectivityManager::WiFiStationState state); + static const char * _WiFiAPStateToStr(ConnectivityManager::WiFiAPState state); +}; + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/wifi/NrfWiFiDriver.cpp b/src/platform/nrfconnect/wifi/NrfWiFiDriver.cpp new file mode 100644 index 00000000000000..5092384006fca0 --- /dev/null +++ b/src/platform/nrfconnect/wifi/NrfWiFiDriver.cpp @@ -0,0 +1,284 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "NrfWiFiDriver.h" + +#include "WiFiManager.h" +#include + +#include +#include +#include + +using namespace ::chip; +using namespace ::chip::DeviceLayer::Internal; +using namespace ::chip::DeviceLayer::PersistedStorage; + +namespace chip { +namespace DeviceLayer { +namespace NetworkCommissioning { + +size_t NrfWiFiDriver::WiFiNetworkIterator::Count() +{ + VerifyOrReturnValue(mDriver != nullptr, 0); + return mDriver->mStagingNetwork.IsConfigured() ? 1 : 0; +} + +bool NrfWiFiDriver::WiFiNetworkIterator::Next(Network & item) +{ + // we assume only one network is actually supported + // TODO: verify if this can be extended + if (mExhausted || 0 == Count()) + { + return false; + } + + memcpy(item.networkID, mDriver->mStagingNetwork.ssid, mDriver->mStagingNetwork.ssidLen); + item.networkIDLen = mDriver->mStagingNetwork.ssidLen; + item.connected = false; + + mExhausted = true; + + WiFiManager::WiFiInfo wifiInfo; + if (CHIP_NO_ERROR == WiFiManager::Instance().GetWiFiInfo(wifiInfo)) + { + if (WiFiManager::StationStatus::CONNECTED <= WiFiManager::Instance().GetStationStatus()) + { + if (wifiInfo.mSsidLen == item.networkIDLen && 0 == memcmp(wifiInfo.mSsid, item.networkID, wifiInfo.mSsidLen)) + { + item.connected = true; + } + } + } + return true; +} + +bool NrfWiFiScanResponseIterator::Next(WiFiScanResponse & item) +{ + if (mResultId < mResultCount) + { + item = mResults[mResultId++]; + return true; + } + return false; +} + +void NrfWiFiScanResponseIterator::Release() +{ + mResultId = mResultCount = 0; + Platform::MemoryFree(mResults); + mResults = nullptr; +} + +void NrfWiFiScanResponseIterator::Add(const WiFiScanResponse & result) +{ + void * newResults = Platform::MemoryRealloc(mResults, (mResultCount + 1) * sizeof(WiFiScanResponse)); + + if (newResults) + { + mResults = static_cast(newResults); + mResults[mResultCount++] = result; + } +} + +CHIP_ERROR NrfWiFiDriver::Init(NetworkStatusChangeCallback * networkStatusChangeCallback) +{ + mpNetworkStatusChangeCallback = networkStatusChangeCallback; + + LoadFromStorage(); + + if (mStagingNetwork.IsConfigured()) + { + WiFiManager::ConnectionHandling handling{ [] { Instance().OnNetworkStatusChanged(Status::kSuccess); }, + [] { Instance().OnNetworkStatusChanged(Status::kUnknownError); }, + System::Clock::Timeout{ 40000 } }; + ReturnErrorOnFailure( + WiFiManager::Instance().Connect(mStagingNetwork.GetSsidSpan(), mStagingNetwork.GetPassSpan(), handling)); + } + + return CHIP_NO_ERROR; +} + +void NrfWiFiDriver::OnNetworkStatusChanged(Status status) +{ + if (status == Status::kSuccess) + { + ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Enabled); + } + + if (mpNetworkStatusChangeCallback) + mpNetworkStatusChangeCallback->OnNetworkingStatusChange(status, NullOptional, NullOptional); +} + +void NrfWiFiDriver::Shutdown() +{ + mpNetworkStatusChangeCallback = nullptr; +} + +CHIP_ERROR NrfWiFiDriver::CommitConfiguration() +{ + ReturnErrorOnFailure(KeyValueStoreMgr().Put(kPassKey, mStagingNetwork.pass, mStagingNetwork.passLen)); + ReturnErrorOnFailure(KeyValueStoreMgr().Put(kSsidKey, mStagingNetwork.ssid, mStagingNetwork.ssidLen)); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR NrfWiFiDriver::RevertConfiguration() +{ + LoadFromStorage(); + + if (mStagingNetwork.IsConfigured()) + { + WiFiManager::ConnectionHandling handling{ [] { Instance().OnConnectWiFiNetwork(); }, + [] { Instance().OnConnectWiFiNetworkFailed(); }, + System::Clock::Timeout{ 40000 } }; + ReturnErrorOnFailure( + WiFiManager::Instance().Connect(mStagingNetwork.GetSsidSpan(), mStagingNetwork.GetPassSpan(), handling)); + } + + return CHIP_NO_ERROR; +} + +Status NrfWiFiDriver::AddOrUpdateNetwork(ByteSpan ssid, ByteSpan credentials, MutableCharSpan & outDebugText, + uint8_t & outNetworkIndex) +{ + outDebugText = {}; + outNetworkIndex = 0; + + VerifyOrReturnError(!mStagingNetwork.IsConfigured() || ssid.data_equal(mStagingNetwork.GetSsidSpan()), Status::kBoundsExceeded); + VerifyOrReturnError(ssid.size() <= sizeof(mStagingNetwork.ssid), Status::kOutOfRange); + VerifyOrReturnError(credentials.size() <= sizeof(mStagingNetwork.pass), Status::kOutOfRange); + + memcpy(mStagingNetwork.ssid, ssid.data(), ssid.size()); + memcpy(mStagingNetwork.pass, credentials.data(), credentials.size()); + mStagingNetwork.ssidLen = ssid.size(); + mStagingNetwork.passLen = credentials.size(); + + return Status::kSuccess; +} + +Status NrfWiFiDriver::RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) +{ + outDebugText = {}; + outNetworkIndex = 0; + + VerifyOrReturnError(networkId.data_equal(mStagingNetwork.GetSsidSpan()), Status::kNetworkIDNotFound); + mStagingNetwork.Clear(); + + return Status::kSuccess; +} + +Status NrfWiFiDriver::ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText) +{ + outDebugText = {}; + + // Only one network is supported for now + VerifyOrReturnError(index == 0, Status::kOutOfRange); + VerifyOrReturnError(networkId.data_equal(mStagingNetwork.GetSsidSpan()), Status::kNetworkIDNotFound); + + return Status::kSuccess; +} + +void NrfWiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback) +{ + Status status = Status::kSuccess; + WiFiManager::ConnectionHandling handling{ [] { Instance().OnConnectWiFiNetwork(); }, + [] { Instance().OnConnectWiFiNetworkFailed(); }, System::Clock::Timeout{ 40000 } }; + + VerifyOrExit(networkId.data_equal(mStagingNetwork.GetSsidSpan()), status = Status::kNetworkIDNotFound); + VerifyOrExit(mpConnectCallback == nullptr, status = Status::kUnknownError); + + mpConnectCallback = callback; + WiFiManager::Instance().Connect(mStagingNetwork.GetSsidSpan(), mStagingNetwork.GetPassSpan(), handling); + +exit: + if (status != Status::kSuccess) + { + mpConnectCallback = nullptr; + callback->OnResult(status, CharSpan(), 0); + } +} + +CHIP_ERROR GetConfiguredNetwork(Network & network) +{ + return CHIP_NO_ERROR; +} + +void NrfWiFiDriver::OnConnectWiFiNetwork() +{ + ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Enabled); + + if (mpConnectCallback) + { + mpConnectCallback->OnResult(Status::kSuccess, CharSpan(), 0); + mpConnectCallback = nullptr; + } +} + +void NrfWiFiDriver::OnConnectWiFiNetworkFailed() +{ + if (mpConnectCallback) + { + mpConnectCallback->OnResult(Status::kNetworkNotFound, CharSpan(), 0); + mpConnectCallback = nullptr; + } +} + +void NrfWiFiDriver::ScanNetworks(ByteSpan ssid, WiFiDriver::ScanCallback * callback) +{ + mScanCallback = callback; + CHIP_ERROR error = WiFiManager::Instance().Scan( + ssid, [](int status, WiFiScanResponse * response) { Instance().OnScanWiFiNetworkDone(status, response); }); + + if (error != CHIP_NO_ERROR) + { + mScanCallback = nullptr; + callback->OnFinished(Status::kUnknownError, CharSpan(), nullptr); + } +} + +void NrfWiFiDriver::OnScanWiFiNetworkDone(int status, WiFiScanResponse * response) +{ + if (response != nullptr) + { + StackLock lock; + VerifyOrReturn(mScanCallback != nullptr); + mScanResponseIterator.Add(*response); + return; + } + + // Scan complete + DeviceLayer::SystemLayer().ScheduleLambda([this, status]() { + VerifyOrReturn(mScanCallback != nullptr); + mScanCallback->OnFinished(status == 0 ? Status::kSuccess : Status::kUnknownError, CharSpan(), &mScanResponseIterator); + mScanCallback = nullptr; + }); +} + +void NrfWiFiDriver::LoadFromStorage() +{ + WiFiNetwork network; + + mStagingNetwork = {}; + ReturnOnFailure(KeyValueStoreMgr().Get(kSsidKey, network.ssid, sizeof(network.ssid), &network.ssidLen)); + ReturnOnFailure(KeyValueStoreMgr().Get(kPassKey, network.pass, sizeof(network.pass), &network.passLen)); + mStagingNetwork = network; +} + +} // namespace NetworkCommissioning +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/wifi/NrfWiFiDriver.h b/src/platform/nrfconnect/wifi/NrfWiFiDriver.h new file mode 100644 index 00000000000000..880cce80b69171 --- /dev/null +++ b/src/platform/nrfconnect/wifi/NrfWiFiDriver.h @@ -0,0 +1,123 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once +#include + +namespace chip { +namespace DeviceLayer { +namespace NetworkCommissioning { + +constexpr uint8_t kMaxWiFiNetworks = 1; +constexpr uint8_t kWiFiScanNetworksTimeOutSeconds = 10; +constexpr uint8_t kWiFiConnectNetworkTimeoutSeconds = 120; + +class NrfWiFiScanResponseIterator : public Iterator +{ +public: + size_t Count() override { return mResultCount; } + bool Next(WiFiScanResponse & item) override; + void Release() override; + void Add(const WiFiScanResponse & result); + +private: + size_t mResultId = 0; + size_t mResultCount = 0; + WiFiScanResponse * mResults = nullptr; +}; + +class NrfWiFiDriver final : public WiFiDriver +{ +public: + // Define non-volatile storage keys for SSID and password. + // The naming convention is aligned with DefaultStorageKeyAllocator class. + static constexpr const char * kSsidKey = "g/wi/s"; + static constexpr const char * kPassKey = "g/wi/p"; + + class WiFiNetworkIterator final : public NetworkIterator + { + public: + WiFiNetworkIterator(NrfWiFiDriver * aDriver) : mDriver(aDriver) {} + size_t Count() override; + bool Next(Network & item) override; + void Release() override { delete this; } + ~WiFiNetworkIterator() = default; + + private: + NrfWiFiDriver * mDriver; + bool mExhausted{ false }; + }; + + struct WiFiNetwork + { + uint8_t ssid[DeviceLayer::Internal::kMaxWiFiSSIDLength]; + size_t ssidLen = 0; + uint8_t pass[DeviceLayer::Internal::kMaxWiFiKeyLength]; + size_t passLen = 0; + + bool IsConfigured() const { return ssidLen > 0; } + ByteSpan GetSsidSpan() const { return ByteSpan(ssid, ssidLen); } + ByteSpan GetPassSpan() const { return ByteSpan(pass, passLen); } + void Clear() { ssidLen = 0; } + }; + + // BaseDriver + NetworkIterator * GetNetworks() override { return new WiFiNetworkIterator(this); } + CHIP_ERROR Init(NetworkStatusChangeCallback * networkStatusChangeCallback) override; + void Shutdown() override; + + // WirelessDriver + uint8_t GetMaxNetworks() override { return kMaxWiFiNetworks; } + uint8_t GetScanNetworkTimeoutSeconds() override { return kWiFiScanNetworksTimeOutSeconds; } + uint8_t GetConnectNetworkTimeoutSeconds() override { return kWiFiConnectNetworkTimeoutSeconds; } + + CHIP_ERROR CommitConfiguration() override; + CHIP_ERROR RevertConfiguration() override; + + Status RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; + Status ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText) override; + void ConnectNetwork(ByteSpan networkId, ConnectCallback * callback) override; + + // WiFiDriver + Status AddOrUpdateNetwork(ByteSpan ssid, ByteSpan credentials, MutableCharSpan & outDebugText, + uint8_t & outNetworkIndex) override; + void ScanNetworks(ByteSpan ssid, ScanCallback * callback) override; + + static NrfWiFiDriver & Instance() + { + static NrfWiFiDriver sInstance; + return sInstance; + } + + void OnConnectWiFiNetwork(); + void OnConnectWiFiNetworkFailed(); + void OnNetworkStatusChanged(Status status); + void OnScanWiFiNetworkDone(int status, WiFiScanResponse * result); + +private: + void LoadFromStorage(); + + ConnectCallback * mpConnectCallback{ nullptr }; + NetworkStatusChangeCallback * mpNetworkStatusChangeCallback{ nullptr }; + WiFiNetwork mStagingNetwork; + NrfWiFiScanResponseIterator mScanResponseIterator; + ScanCallback * mScanCallback{ nullptr }; +}; + +} // namespace NetworkCommissioning +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/wifi/WiFiManager.cpp b/src/platform/nrfconnect/wifi/WiFiManager.cpp new file mode 100644 index 00000000000000..0a0e50cfdd0b1c --- /dev/null +++ b/src/platform/nrfconnect/wifi/WiFiManager.cpp @@ -0,0 +1,447 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Provides the wrapper for nRF WiFi API + */ + +#include "WiFiManager.h" + +#include +#include +#include +#include +#include + +#include +#include + +extern "C" { +#include +#include +#include +#include +#include +} + +extern struct wpa_global * global; + +static struct wpa_supplicant * wpa_s; + +namespace chip { +namespace DeviceLayer { + +namespace { + +NetworkCommissioning::WiFiScanResponse ToScanResponse(wifi_scan_result * result) +{ + NetworkCommissioning::WiFiScanResponse response = {}; + + if (result != nullptr) + { + static_assert(sizeof(response.ssid) == sizeof(result->ssid), "SSID length mismatch"); + static_assert(sizeof(response.bssid) == sizeof(result->mac), "BSSID length mismatch"); + + // TODO: Distinguish WPA versions + response.security.Set(result->security == WIFI_SECURITY_TYPE_PSK ? NetworkCommissioning::WiFiSecurity::kWpaPersonal + : NetworkCommissioning::WiFiSecurity::kUnencrypted); + response.channel = result->channel; + response.rssi = result->rssi; + response.ssidLen = result->ssid_length; + memcpy(response.ssid, result->ssid, result->ssid_length); + // TODO: MAC/BSSID is not filled by the Wi-Fi driver + memcpy(response.bssid, result->mac, result->mac_length); + } + + return response; +} + +} // namespace + +// These enums shall reflect the overall ordered disconnected->connected flow +const Map + WiFiManager::sStatusMap({ { WPA_DISCONNECTED, WiFiManager::StationStatus::DISCONNECTED }, + { WPA_INTERFACE_DISABLED, WiFiManager::StationStatus::DISABLED }, + { WPA_INACTIVE, WiFiManager::StationStatus::DISABLED }, + { WPA_SCANNING, WiFiManager::StationStatus::SCANNING }, + { WPA_AUTHENTICATING, WiFiManager::StationStatus::CONNECTING }, + { WPA_ASSOCIATING, WiFiManager::StationStatus::CONNECTING }, + { WPA_ASSOCIATED, WiFiManager::StationStatus::CONNECTED }, + { WPA_4WAY_HANDSHAKE, WiFiManager::StationStatus::PROVISIONING }, + { WPA_GROUP_HANDSHAKE, WiFiManager::StationStatus::PROVISIONING }, + { WPA_COMPLETED, WiFiManager::StationStatus::FULLY_PROVISIONED } }); + +// Map WiFi center frequency to the corresponding channel number +const Map WiFiManager::sFreqChannelMap( + { { 4915, 183 }, { 4920, 184 }, { 4925, 185 }, { 4935, 187 }, { 4940, 188 }, { 4945, 189 }, { 4960, 192 }, + { 4980, 196 }, { 5035, 7 }, { 5040, 8 }, { 5045, 9 }, { 5055, 11 }, { 5060, 12 }, { 5080, 16 }, + { 5170, 34 }, { 5180, 36 }, { 5190, 38 }, { 5200, 40 }, { 5210, 42 }, { 5220, 44 }, { 5230, 46 }, + { 5240, 48 }, { 5260, 52 }, { 5280, 56 }, { 5300, 60 }, { 5320, 64 }, { 5500, 100 }, { 5520, 104 }, + { 5540, 108 }, { 5560, 112 }, { 5580, 116 }, { 5600, 120 }, { 5620, 124 }, { 5640, 128 }, { 5660, 132 }, + { 5680, 136 }, { 5700, 140 }, { 5745, 149 }, { 5765, 153 }, { 5785, 157 }, { 5805, 161 }, { 5825, 165 } }); + +CHIP_ERROR WiFiManager::Init() +{ + // wpa_supplicant instance is initialized in dedicated supplicant thread, so wait until + // the initialization is completed. + // TODO: fix thread-safety of the solution. + constexpr size_t kInitTimeoutMs = 5000; + const int64_t initStartTime = k_uptime_get(); + // TODO: Handle multiple VIFs + const char * ifname = "wlan0"; + + while (!global || !(wpa_s = wpa_supplicant_get_iface(global, ifname))) + { + if (k_uptime_get() > initStartTime + kInitTimeoutMs) + { + ChipLogError(DeviceLayer, "wpa_supplicant is not initialized!"); + return CHIP_ERROR_INTERNAL; + } + + k_msleep(200); + } + + // TODO: consider moving these to ConnectivityManagerImpl to be prepared for handling multiple interfaces on a single device. + Inet::UDPEndPointImplSockets::SetJoinMulticastGroupHandler([](Inet::InterfaceId interfaceId, const Inet::IPAddress & address) { + const in6_addr addr = InetUtils::ToZephyrAddr(address); + net_if * iface = InetUtils::GetInterface(interfaceId); + VerifyOrReturnError(iface != nullptr, INET_ERROR_UNKNOWN_INTERFACE); + + net_if_mcast_addr * maddr = net_if_ipv6_maddr_add(iface, &addr); + + if (maddr && !net_if_ipv6_maddr_is_joined(maddr) && !net_ipv6_is_addr_mcast_link_all_nodes(&addr)) + { + net_if_ipv6_maddr_join(maddr); + } + + return CHIP_NO_ERROR; + }); + + Inet::UDPEndPointImplSockets::SetLeaveMulticastGroupHandler([](Inet::InterfaceId interfaceId, const Inet::IPAddress & address) { + const in6_addr addr = InetUtils::ToZephyrAddr(address); + net_if * iface = InetUtils::GetInterface(interfaceId); + VerifyOrReturnError(iface != nullptr, INET_ERROR_UNKNOWN_INTERFACE); + + if (!net_ipv6_is_addr_mcast_link_all_nodes(&addr) && !net_if_ipv6_maddr_rm(iface, &addr)) + { + return CHIP_ERROR_INVALID_ADDRESS; + } + + return CHIP_NO_ERROR; + }); + + ChipLogDetail(DeviceLayer, "wpa_supplicant has been initialized"); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR WiFiManager::AddNetwork(const ByteSpan & ssid, const ByteSpan & credentials) +{ + ChipLogDetail(DeviceLayer, "Adding WiFi network"); + mpWpaNetwork = wpa_supplicant_add_network(wpa_s); + if (mpWpaNetwork) + { + static constexpr size_t kMaxSsidLen{ 32 }; + mpWpaNetwork->ssid = (u8 *) k_malloc(kMaxSsidLen); + + if (mpWpaNetwork->ssid) + { + memcpy(mpWpaNetwork->ssid, ssid.data(), ssid.size()); + mpWpaNetwork->ssid_len = ssid.size(); + mpWpaNetwork->key_mgmt = WPA_KEY_MGMT_NONE; + mpWpaNetwork->disabled = 1; + wpa_s->conf->filter_ssids = 1; + + return AddPsk(credentials); + } + } + + return CHIP_ERROR_INTERNAL; +} + +CHIP_ERROR WiFiManager::Scan(const ByteSpan & ssid, ScanCallback callback) +{ + const StationStatus stationStatus = GetStationStatus(); + VerifyOrReturnError(stationStatus != StationStatus::DISABLED && stationStatus != StationStatus::SCANNING && + stationStatus != StationStatus::CONNECTING, + CHIP_ERROR_INCORRECT_STATE); + + net_if * const iface = InetUtils::GetInterface(); + VerifyOrReturnError(iface != nullptr, CHIP_ERROR_INTERNAL); + + const device * dev = net_if_get_device(iface); + VerifyOrReturnError(dev != nullptr, CHIP_ERROR_INTERNAL); + + const net_wifi_mgmt_offload * ops = static_cast(dev->api); + VerifyOrReturnError(ops != nullptr, CHIP_ERROR_INTERNAL); + + mScanCallback = callback; + + // TODO: Use saner API once such exists. + // TODO: Take 'ssid' into account. + VerifyOrReturnError(ops->scan(dev, + [](net_if *, int status, wifi_scan_result * result) { + VerifyOrReturn(Instance().mScanCallback != nullptr); + NetworkCommissioning::WiFiScanResponse response = ToScanResponse(result); + Instance().mScanCallback(status, result != nullptr ? &response : nullptr); + }) == 0, + CHIP_ERROR_INTERNAL); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR WiFiManager::Connect(const ByteSpan & ssid, const ByteSpan & credentials, const ConnectionHandling & handling) +{ + ChipLogDetail(DeviceLayer, "Connecting to WiFi network"); + + mConnectionSuccessClbk = handling.mOnConnectionSuccess; + mConnectionFailedClbk = handling.mOnConnectionFailed; + mConnectionTimeoutMs = handling.mConnectionTimeoutMs; + + CHIP_ERROR err = AddNetwork(ssid, credentials); + if (CHIP_NO_ERROR == err) + { + EnableStation(true); + wpa_supplicant_select_network(wpa_s, mpWpaNetwork); + WaitForConnectionAsync(); + } + else + { + OnConnectionFailed(); + } + return err; +} + +void WiFiManager::OnConnectionSuccess() +{ + if (mConnectionSuccessClbk) + mConnectionSuccessClbk(); +} + +void WiFiManager::OnConnectionFailed() +{ + if (mConnectionFailedClbk) + mConnectionFailedClbk(); +} + +CHIP_ERROR WiFiManager::AddPsk(const ByteSpan & credentials) +{ + mpWpaNetwork->key_mgmt = WPA_KEY_MGMT_PSK; + str_clear_free(mpWpaNetwork->passphrase); + mpWpaNetwork->passphrase = dup_binstr(credentials.data(), credentials.size()); + + if (mpWpaNetwork->passphrase) + { + wpa_config_update_psk(mpWpaNetwork); + return CHIP_NO_ERROR; + } + + return CHIP_ERROR_INTERNAL; +} + +WiFiManager::StationStatus WiFiManager::GetStationStatus() const +{ + if (wpa_s) + { + return StatusFromWpaStatus(wpa_s->wpa_state); + } + else + { + ChipLogError(DeviceLayer, "wpa_supplicant is not initialized!"); + return StationStatus::NONE; + } +} + +WiFiManager::StationStatus WiFiManager::StatusFromWpaStatus(const wpa_states & status) +{ + ChipLogDetail(DeviceLayer, "WPA internal status: %d", static_cast(status)); + return WiFiManager::sStatusMap[status]; +} + +CHIP_ERROR WiFiManager::EnableStation(bool enable) +{ + VerifyOrReturnError(nullptr != wpa_s && nullptr != mpWpaNetwork, CHIP_ERROR_INTERNAL); + if (enable) + { + wpa_supplicant_enable_network(wpa_s, mpWpaNetwork); + } + else + { + wpa_supplicant_disable_network(wpa_s, mpWpaNetwork); + } + + return CHIP_NO_ERROR; +} + +CHIP_ERROR WiFiManager::ClearStationProvisioningData() +{ + VerifyOrReturnError(nullptr != wpa_s && nullptr != mpWpaNetwork, CHIP_ERROR_INTERNAL); + wpa_supplicant_cancel_scan(wpa_s); + wpa_clear_keys(wpa_s, mpWpaNetwork->bssid); + str_clear_free(mpWpaNetwork->passphrase); + wpa_config_update_psk(mpWpaNetwork); + wpa_supplicant_set_state(wpa_s, WPA_INACTIVE); + + return CHIP_NO_ERROR; +} + +CHIP_ERROR WiFiManager::DisconnectStation() +{ + VerifyOrReturnError(nullptr != wpa_s, CHIP_ERROR_INTERNAL); + wpa_supplicant_cancel_scan(wpa_s); + wpas_request_disconnection(wpa_s); + + return CHIP_NO_ERROR; +} + +void WiFiManager::WaitForConnectionAsync() +{ + chip::DeviceLayer::SystemLayer().StartTimer( + static_cast(1000), [](System::Layer *, void *) { Instance().PollTimerCallback(); }, nullptr); +} + +void WiFiManager::PollTimerCallback() +{ + const uint32_t kMaxRetriesNumber{ mConnectionTimeoutMs.count() / 1000 }; + static uint32_t retriesNumber{ 0 }; + + if (WiFiManager::StationStatus::FULLY_PROVISIONED == GetStationStatus()) + { + retriesNumber = 0; + OnConnectionSuccess(); + } + else + { + if (retriesNumber++ < kMaxRetriesNumber) + { + // wait more time + WaitForConnectionAsync(); + } + else + { + // connection timeout + retriesNumber = 0; + OnConnectionFailed(); + } + } +} + +CHIP_ERROR WiFiManager::GetWiFiInfo(WiFiInfo & info) const +{ + VerifyOrReturnError(nullptr != wpa_s, CHIP_ERROR_INTERNAL); + VerifyOrReturnError(nullptr != mpWpaNetwork, CHIP_ERROR_INTERNAL); + + static uint8_t sBssid[ETH_ALEN]; + if (WiFiManager::StationStatus::CONNECTED <= GetStationStatus()) + { + memcpy(sBssid, wpa_s->bssid, ETH_ALEN); + info.mBssId = ByteSpan(sBssid, ETH_ALEN); + info.mSecurityType = GetSecurityType(); + // TODO: this should reflect the real connection compliance + // i.e. the AP might support WiFi 5 only even though the station + // is WiFi 6 ready (so the connection is WiFi 5 effectively). + // For now just return what the station supports. + info.mWiFiVersion = EMBER_ZCL_WI_FI_VERSION_TYPE_802__11AX; + + wpa_signal_info signalInfo{}; + if (0 == wpa_drv_signal_poll(wpa_s, &signalInfo)) + { + info.mRssi = signalInfo.current_signal; // dBm + info.mChannel = FrequencyToChannel(signalInfo.frequency); + } + else + { + // this values should be nullable according to the Matter spec + info.mRssi = std::numeric_limits::min(); + info.mChannel = std::numeric_limits::min(); + } + + memcpy(info.mSsid, mpWpaNetwork->ssid, mpWpaNetwork->ssid_len); + info.mSsidLen = mpWpaNetwork->ssid_len; + + return CHIP_NO_ERROR; + } + + return CHIP_ERROR_INTERNAL; +} + +uint8_t WiFiManager::GetSecurityType() const +{ + VerifyOrReturnValue(nullptr != mpWpaNetwork, EMBER_ZCL_SECURITY_TYPE_UNSPECIFIED); + + if ((mpWpaNetwork->key_mgmt & WPA_KEY_MGMT_NONE) || !wpa_key_mgmt_wpa_any(mpWpaNetwork->key_mgmt)) + { + return EMBER_ZCL_SECURITY_TYPE_NONE; + } + else if (wpa_key_mgmt_wpa_psk_no_sae(mpWpaNetwork->key_mgmt)) + { + return (mpWpaNetwork->pairwise_cipher & (WPA_CIPHER_TKIP | WPA_CIPHER_CCMP)) ? EMBER_ZCL_SECURITY_TYPE_WPA2 + : EMBER_ZCL_SECURITY_TYPE_WPA3; + } + else if (wpa_key_mgmt_sae(mpWpaNetwork->key_mgmt)) + { + return EMBER_ZCL_SECURITY_TYPE_WPA3; + } + else + { + return EMBER_ZCL_SECURITY_TYPE_WEP; + } + + return EMBER_ZCL_SECURITY_TYPE_UNSPECIFIED; +} + +uint8_t WiFiManager::FrequencyToChannel(uint16_t freq) +{ + static constexpr uint16_t k24MinFreq{ 2401 }; + static constexpr uint16_t k24MaxFreq{ 2484 }; + static constexpr uint8_t k24FreqConstDiff{ 5 }; + + if (freq >= k24MinFreq && freq < k24MaxFreq) + { + return static_cast((freq - k24MinFreq) / k24FreqConstDiff + 1); + } + else if (freq == k24MaxFreq) + { + return 14; + } + else if (freq > k24MaxFreq) + { + // assume we are in 5GH band + return sFreqChannelMap[freq]; + } + return 0; +} + +CHIP_ERROR WiFiManager::GetNetworkStatistics(NetworkStatistics & stats) const +{ + // TODO: below will not work (result will be all zeros) until + // the get_stats handler is implemented in WiFi driver + net_stats_eth data{}; + net_mgmt(NET_REQUEST_STATS_GET_ETHERNET, InetUtils::GetInterface(), &data, sizeof(data)); + + stats.mPacketMulticastRxCount = data.multicast.rx; + stats.mPacketMulticastTxCount = data.multicast.tx; + stats.mPacketUnicastRxCount = data.pkts.rx - data.multicast.rx - data.broadcast.rx; + stats.mPacketUnicastTxCount = data.pkts.tx - data.multicast.tx - data.broadcast.tx; + stats.mOverruns = 0; // TODO: clarify if this can be queried from mgmt API (e.g. data.tx_dropped) + + return CHIP_NO_ERROR; +} + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/nrfconnect/wifi/WiFiManager.h b/src/platform/nrfconnect/wifi/WiFiManager.h new file mode 100644 index 00000000000000..b068cd99705eef --- /dev/null +++ b/src/platform/nrfconnect/wifi/WiFiManager.h @@ -0,0 +1,171 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Provides the wrapper for nRF wpa_supplicant API + */ + +#pragma once + +#include +#include +#include +#include + +#include + +extern "C" { +#include +#include +} + +struct net_if; +struct wpa_ssid; +using WpaNetwork = struct wpa_ssid; + +namespace chip { +namespace DeviceLayer { + +// emulation of dictionary - might be moved to utils +template +class Map +{ + struct Pair + { + T1 key; + T2 value; + }; + +public: + Map(const Pair (&list)[N]) + { + int idx{ 0 }; + for (const auto & pair : list) + { + mMap[idx++] = pair; + } + } + + T2 operator[](const T1 & key) const + { + for (const auto & it : mMap) + { + if (key == it.key) + return it.value; + } + + return T2{}; + } + + Map() = delete; + Map(const Map &) = delete; + Map(Map &&) = delete; + Map & operator=(const Map &) = delete; + Map & operator=(Map &&) = delete; + ~Map() = default; + +private: + Pair mMap[N]; +}; + +class WiFiManager +{ + using ConnectionCallback = void (*)(); + +public: + enum class StationStatus : uint8_t + { + NONE, + DISCONNECTED, + DISABLED, + SCANNING, + CONNECTING, + CONNECTED, + PROVISIONING, + FULLY_PROVISIONED + }; + + static WiFiManager & Instance() + { + static WiFiManager sInstance; + return sInstance; + } + + using ScanCallback = void (*)(int /* status */, NetworkCommissioning::WiFiScanResponse *); + + struct ConnectionHandling + { + ConnectionCallback mOnConnectionSuccess{}; + ConnectionCallback mOnConnectionFailed{}; + System::Clock::Timeout mConnectionTimeoutMs{}; + }; + + struct WiFiInfo + { + ByteSpan mBssId{}; + uint8_t mSecurityType{}; + uint8_t mWiFiVersion{}; + uint16_t mChannel{}; + int8_t mRssi{}; + uint8_t mSsid[DeviceLayer::Internal::kMaxWiFiSSIDLength]; + size_t mSsidLen{ 0 }; + }; + + struct NetworkStatistics + { + uint32_t mPacketMulticastRxCount{}; + uint32_t mPacketMulticastTxCount{}; + uint32_t mPacketUnicastRxCount{}; + uint32_t mPacketUnicastTxCount{}; + uint32_t mOverruns{}; + }; + + CHIP_ERROR Init(); + CHIP_ERROR Scan(const ByteSpan & ssid, ScanCallback callback); + CHIP_ERROR Connect(const ByteSpan & ssid, const ByteSpan & credentials, const ConnectionHandling & handling); + StationStatus GetStationStatus() const; + CHIP_ERROR ClearStationProvisioningData(); + CHIP_ERROR DisconnectStation(); + CHIP_ERROR GetWiFiInfo(WiFiInfo & info) const; + CHIP_ERROR GetNetworkStatistics(NetworkStatistics & stats) const; + +private: + CHIP_ERROR AddPsk(const ByteSpan & credentials); + CHIP_ERROR EnableStation(bool enable); + CHIP_ERROR AddNetwork(const ByteSpan & ssid, const ByteSpan & credentials); + void PollTimerCallback(); + void WaitForConnectionAsync(); + void OnConnectionSuccess(); + void OnConnectionFailed(); + uint8_t GetSecurityType() const; + + WpaNetwork * mpWpaNetwork{ nullptr }; + ConnectionCallback mConnectionSuccessClbk; + ConnectionCallback mConnectionFailedClbk; + System::Clock::Timeout mConnectionTimeoutMs; + ScanCallback mScanCallback{ nullptr }; + + static uint8_t FrequencyToChannel(uint16_t freq); + static StationStatus StatusFromWpaStatus(const wpa_states & status); + + static const Map sStatusMap; + static const Map sFreqChannelMap; +}; + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/telink/BUILD.gn b/src/platform/telink/BUILD.gn index b13a9d185ee8dd..1a4c90395dbe7c 100644 --- a/src/platform/telink/BUILD.gn +++ b/src/platform/telink/BUILD.gn @@ -26,6 +26,7 @@ static_library("telink") { "../Zephyr/ConfigurationManagerImpl.cpp", "../Zephyr/DiagnosticDataProviderImpl.cpp", "../Zephyr/DiagnosticDataProviderImpl.h", + "../Zephyr/DiagnosticDataProviderImplGetter.cpp", "../Zephyr/KeyValueStoreManagerImpl.cpp", "../Zephyr/Logging.cpp", "../Zephyr/PlatformManagerImpl.cpp", From b568009a15b4b9cd262c47b2e5087df57829ef47 Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Thu, 17 Nov 2022 11:16:47 -0800 Subject: [PATCH 29/36] [linux]: Use LocationCapability if GetRegulatoryLocation fail (#23602) * [linux]: Use LocationCapability if GetRegulatoryLocation fail * Address the review comment --- src/platform/Linux/ConfigurationManagerImpl.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/platform/Linux/ConfigurationManagerImpl.cpp b/src/platform/Linux/ConfigurationManagerImpl.cpp index 2f603f1f3ba31e..afcd6c68bd309f 100644 --- a/src/platform/Linux/ConfigurationManagerImpl.cpp +++ b/src/platform/Linux/ConfigurationManagerImpl.cpp @@ -369,17 +369,23 @@ CHIP_ERROR ConfigurationManagerImpl::StoreBootReason(uint32_t bootReason) CHIP_ERROR ConfigurationManagerImpl::GetRegulatoryLocation(uint8_t & location) { - uint32_t value = 0; + uint32_t value; - CHIP_ERROR err = ReadConfigValue(PosixConfig::kConfigKey_RegulatoryLocation, value); + if (CHIP_NO_ERROR != ReadConfigValue(PosixConfig::kConfigKey_RegulatoryLocation, value)) + { + ReturnErrorOnFailure(GetLocationCapability(location)); - if (err == CHIP_NO_ERROR) + if (CHIP_NO_ERROR != StoreRegulatoryLocation(location)) + { + ChipLogError(DeviceLayer, "Failed to store RegulatoryLocation"); + } + } + else { - VerifyOrReturnError(value <= UINT8_MAX, CHIP_ERROR_INVALID_INTEGER_VALUE); location = static_cast(value); } - return err; + return CHIP_NO_ERROR; } CHIP_ERROR ConfigurationManagerImpl::GetLocationCapability(uint8_t & location) From c1bfd9da6c53485b49e50fc32d4f8859d281af2f Mon Sep 17 00:00:00 2001 From: yunhanw-google Date: Thu, 17 Nov 2022 12:42:14 -0800 Subject: [PATCH 30/36] improve get last report data path api in cluster cache (#23431) -- Return not found error if the last report data path is not concrete cluster path -- Add doxygen --- src/app/ClusterStateCache.cpp | 8 ++++++-- src/app/ClusterStateCache.h | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/app/ClusterStateCache.cpp b/src/app/ClusterStateCache.cpp index 1ccff3e5567f67..5497dfd453098c 100644 --- a/src/app/ClusterStateCache.cpp +++ b/src/app/ClusterStateCache.cpp @@ -534,8 +534,12 @@ CHIP_ERROR ClusterStateCache::OnUpdateDataVersionFilterList(DataVersionFilterIBs CHIP_ERROR ClusterStateCache::GetLastReportDataPath(ConcreteClusterPath & aPath) { - aPath = mLastReportDataPath; - return CHIP_NO_ERROR; + if (mLastReportDataPath.IsValidConcreteClusterPath()) + { + aPath = mLastReportDataPath; + return CHIP_NO_ERROR; + } + return CHIP_ERROR_INCORRECT_STATE; } } // namespace app } // namespace chip diff --git a/src/app/ClusterStateCache.h b/src/app/ClusterStateCache.h index c6c545e501a9da..4b88b054e1c2a8 100644 --- a/src/app/ClusterStateCache.h +++ b/src/app/ClusterStateCache.h @@ -483,6 +483,10 @@ class ClusterStateCache : protected ReadClient::Callback mEventStatusCache.clear(); } + /* + * Get the last concrete report data path, if path is not concrete cluster path, return CHIP_ERROR_NOT_FOUND + * + */ CHIP_ERROR GetLastReportDataPath(ConcreteClusterPath & aPath); private: From c62b6b5b28531750dce35b281b06605d5c370651 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Thu, 17 Nov 2022 22:12:51 +0100 Subject: [PATCH 31/36] Add back node js installation in chip-build image (#23667) * Add back node js installation in chip-build image * Add terminating newline to dockerfile * Restyle --- .../docker/images/chip-build/Dockerfile | 20 +++++++++++++++++++ integrations/docker/images/chip-build/version | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index 6ecb84359ff118..606c0779c9c5f4 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -148,3 +148,23 @@ RUN set -x \ && rm zap \ && ln -s /opt/zap-${ZAP_VERSION}/zap-cli /usr/bin/ \ && : # last line + +# NodeJS: install a newer version than what apt-get would read +# This installs the latest LTS version of nodejs +# +# NodeJS is required by github actions, we use Wandalen/wretry.action@v1.0.36 +# and that seems to use the built-in node installation in the image +# +# This is not a CHIP dependency directly, but used by CI +ENV CHIP_NODE_VERSION=v16.13.2 +RUN set -x \ + && mkdir node_js \ + && cd node_js \ + && wget https://nodejs.org/dist/$CHIP_NODE_VERSION/node-$CHIP_NODE_VERSION-linux-x64.tar.xz \ + && tar xfvJ node-$CHIP_NODE_VERSION-linux-x64.tar.xz \ + && mv node-$CHIP_NODE_VERSION-linux-x64 /opt/ \ + && ln -s /opt/node-$CHIP_NODE_VERSION-linux-x64 /opt/node \ + && ln -s /opt/node/bin/* /usr/bin \ + && cd .. \ + && rm -rf node_js \ + && : # last line diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 7ab8f4209d3d23..9c82e92de70a7c 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.6.10 Version bump reason: Fix zap link (link zap-cli into /usr/bin instead of zap) +0.6.11 Version bump reason: install nodejs into chip-build image, since github js actions seem to need it. From 0cc2ec0aa8b4be1edbdd62c1333828e2c281b02a Mon Sep 17 00:00:00 2001 From: Youngho Yoon <34558998+yhoyoon@users.noreply.github.com> Date: Fri, 18 Nov 2022 06:53:37 +0900 Subject: [PATCH 32/36] Fix thread commissioning fail where there are many Thread Border Routers (#23492) Matter Commissioner sometimes fails to commission Matter Thread Device where there are many Thread Border Routers. Specifically, in order to connect the Matter Thread Device to the Thread Border Router during the commissioning process, the Matter Commissioner sends Thread ScanNetworks command to the Matter Thread Device. However, no matter how many times Matter Commissioner requests ScanNetworks, there is no Thread Border Router it wants to connect to in the response, so the commissioning has failed. According to the message size requirements of the Matter specification document, the maximum length of a Service Data Unit is 1024 bytes. Since Thread ScanNetworks' responses have to be stored in it, network commissioing cluster only stores 15 of them. Therefore, Thread Device sends only 15 of the scan results in response to Thread ScanNetworks command, and the scan result list contains duplicate items and is used without sorting. There were about 50 items in scan result list on the problem situation, and they were sorted in ascending order by channel. And the channel of the Thread Border Router it wants to connect to is the largest number, so it is not always included in the response of Thread ScanNetworks command. Accordingly, the Matter Commissioner determined that the Matter Device did not discover the Thread Border Router it wants to connect to, and the commissioning failed. This commit changes the Thread Scan result list in two ways. First, it prevents the addition of duplicate items in the list. Next, sort the list in ascending order based on RSSI. The reason for using RSSI is that where there are many Thread Border Routers, it is reasonable to expect that users will start commissioning close to the Thread Border Routers they want Thread Devices to connect to. Signed-off-by: Youngho Yoon Signed-off-by: Charles Kim Signed-off-by: Hunsup Signed-off-by: sanghyukko Signed-off-by: Jaehoon You --- .../network-commissioning.cpp | 65 ++++++++++++++++--- src/lib/support/SortUtils.h | 32 +++++++++ 2 files changed, 87 insertions(+), 10 deletions(-) diff --git a/src/app/clusters/network-commissioning/network-commissioning.cpp b/src/app/clusters/network-commissioning/network-commissioning.cpp index 13c890a61bd1bb..a63df5cb88321f 100644 --- a/src/app/clusters/network-commissioning/network-commissioning.cpp +++ b/src/app/clusters/network-commissioning/network-commissioning.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -528,7 +529,8 @@ void Instance::OnFinished(Status status, CharSpan debugText, ThreadScanResponseI TLV::TLVWriter * writer; TLV::TLVType listContainerType; ThreadScanResponse scanResponse; - size_t networksEncoded = 0; + chip::Platform::ScopedMemoryBuffer scanResponseArray; + size_t scanResponseArrayLength = 0; uint8_t extendedAddressBuffer[Thread::kSizeExtendedPanId]; SuccessOrExit(err = commandHandle->PrepareCommand( @@ -546,18 +548,61 @@ void Instance::OnFinished(Status status, CharSpan debugText, ThreadScanResponseI err = writer->StartContainer(TLV::ContextTag(to_underlying(Commands::ScanNetworksResponse::Fields::kThreadScanResults)), TLV::TLVType::kTLVType_Array, listContainerType)); - for (; networks != nullptr && networks->Next(scanResponse) && networksEncoded < kMaxNetworksInScanResponse; networksEncoded++) + VerifyOrExit(scanResponseArray.Alloc(chip::min(networks->Count(), kMaxNetworksInScanResponse)), err = CHIP_ERROR_NO_MEMORY); + for (; networks != nullptr && networks->Next(scanResponse);) + { + if ((scanResponseArrayLength == kMaxNetworksInScanResponse) && + (scanResponseArray[scanResponseArrayLength - 1].rssi > scanResponse.rssi)) + { + continue; + } + + bool isDuplicated = false; + + for (size_t i = 0; i < scanResponseArrayLength; i++) + { + if ((scanResponseArray[i].panId == scanResponse.panId) && + (scanResponseArray[i].extendedPanId == scanResponse.extendedPanId)) + { + if (scanResponseArray[i].rssi < scanResponse.rssi) + { + scanResponseArray[i] = scanResponseArray[--scanResponseArrayLength]; + } + else + { + isDuplicated = true; + } + break; + } + } + + if (isDuplicated) + { + continue; + } + + if (scanResponseArrayLength < kMaxNetworksInScanResponse) + { + scanResponseArrayLength++; + } + scanResponseArray[scanResponseArrayLength - 1] = scanResponse; + Sorting::InsertionSort(scanResponseArray.Get(), scanResponseArrayLength, + [](const ThreadScanResponse & a, const ThreadScanResponse & b) -> bool { return a.rssi > b.rssi; }); + } + + for (size_t i = 0; i < scanResponseArrayLength; i++) { Structs::ThreadInterfaceScanResult::Type result; - Encoding::BigEndian::Put64(extendedAddressBuffer, scanResponse.extendedAddress); - result.panId = scanResponse.panId; - result.extendedPanId = scanResponse.extendedPanId; - result.networkName = CharSpan(scanResponse.networkName, scanResponse.networkNameLen); - result.channel = scanResponse.channel; - result.version = scanResponse.version; + Encoding::BigEndian::Put64(extendedAddressBuffer, scanResponseArray[i].extendedAddress); + result.panId = scanResponseArray[i].panId; + result.extendedPanId = scanResponseArray[i].extendedPanId; + result.networkName = CharSpan(scanResponseArray[i].networkName, scanResponseArray[i].networkNameLen); + result.channel = scanResponseArray[i].channel; + result.version = scanResponseArray[i].version; result.extendedAddress = ByteSpan(extendedAddressBuffer); - result.rssi = scanResponse.rssi; - result.lqi = scanResponse.lqi; + result.rssi = scanResponseArray[i].rssi; + result.lqi = scanResponseArray[i].lqi; + SuccessOrExit(err = DataModel::Encode(*writer, TLV::AnonymousTag(), result)); } diff --git a/src/lib/support/SortUtils.h b/src/lib/support/SortUtils.h index 27ab1852d3da1a..9ebe3e368886ac 100644 --- a/src/lib/support/SortUtils.h +++ b/src/lib/support/SortUtils.h @@ -66,6 +66,38 @@ void BubbleSort(T * items, size_t n, CompareFunc f) } } +/** + * + * Impements the insertion sort algorithm to sort an array + * of items of size 'n'. + * + * The provided comparison function SHALL have the following signature: + * + * bool Compare(const T& a, const T& b); + * + * If a is deemed less than (i.e is ordered before) b, return true. + * Else, return false. + * + * This is a stable sort. + * + */ +template +void InsertionSort(T * items, size_t n, CompareFunc f) +{ + for (size_t i = 1; i < n; i++) + { + const T key = items[i]; + int j = static_cast(i) - 1; + + while (j >= 0 && f(key, items[j])) + { + items[j + 1] = items[j]; + j--; + } + items[j + 1] = key; + } +} + } // namespace Sorting } // namespace chip From 0328607838c848e41f49d253675cee6d3fac1d11 Mon Sep 17 00:00:00 2001 From: Harsha Rajendran Date: Thu, 17 Nov 2022 14:10:15 -0800 Subject: [PATCH 33/36] Update BdxOtaSender to only cease polling upon successful transfer of the bulk data (#23642) --- examples/ota-provider-app/esp32/main/BdxOtaSender.cpp | 1 + .../ota-provider-app/ota-provider-common/BdxOtaSender.cpp | 1 + scripts/tests/ota_test.sh | 4 ++-- src/protocols/bdx/TransferFacilitator.cpp | 1 - 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp b/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp index 9cb2b5c0536008..37be9761aa81b8 100644 --- a/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp +++ b/examples/ota-provider-app/esp32/main/BdxOtaSender.cpp @@ -174,6 +174,7 @@ void BdxOtaSender::HandleTransferSessionOutput(TransferSession::OutputEvent & ev { ChipLogError(BDX, "onTransferComplete Callback not set"); } + mStopPolling = true; // Stop polling the TransferSession only after receiving BlockAckEOF Reset(); break; case TransferSession::OutputEventType::kStatusReceived: diff --git a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp index 2aa29dda45f66c..5c3f2213427035 100644 --- a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp +++ b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp @@ -180,6 +180,7 @@ void BdxOtaSender::HandleTransferSessionOutput(TransferSession::OutputEvent & ev break; case TransferSession::OutputEventType::kAckEOFReceived: ChipLogDetail(BDX, "Transfer completed, got AckEOF"); + mStopPolling = true; // Stop polling the TransferSession only after receiving BlockAckEOF Reset(); break; case TransferSession::OutputEventType::kStatusReceived: diff --git a/scripts/tests/ota_test.sh b/scripts/tests/ota_test.sh index fc9a326547eef9..8667f8258f96ce 100755 --- a/scripts/tests/ota_test.sh +++ b/scripts/tests/ota_test.sh @@ -26,7 +26,7 @@ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux "$OTA_PROVI echo "Test" >"$FIRMWARE_BIN" -rm /tmp/chip_* +rm -f /tmp/chip_* ./src/app/ota_image_tool.py create -v 0xDEAD -p 0xBEEF -vn 10 -vs "10.0" -da sha256 "$FIRMWARE_BIN" "$FIRMWARE_OTA" @@ -75,7 +75,7 @@ else RETURN_VALUE=1 fi -killall -e "$OTA_PROVIDER_APP" "$OTA_REQUESTOR_APP" +killall -s SIGKILL -e "$OTA_PROVIDER_APP" "$OTA_REQUESTOR_APP" rm -f "$FIRMWARE_OTA" "$FIRMWARE_BIN" "$OTA_DOWNLOAD_PATH" echo "$TEST_RESULT" diff --git a/src/protocols/bdx/TransferFacilitator.cpp b/src/protocols/bdx/TransferFacilitator.cpp index 767d16313994e4..65ab653420c2cd 100644 --- a/src/protocols/bdx/TransferFacilitator.cpp +++ b/src/protocols/bdx/TransferFacilitator.cpp @@ -112,7 +112,6 @@ CHIP_ERROR Responder::PrepareForTransfer(System::Layer * layer, TransferRole rol void Responder::ResetTransfer() { mTransfer.Reset(); - mStopPolling = true; } CHIP_ERROR Initiator::InitiateTransfer(System::Layer * layer, TransferRole role, const TransferSession::TransferInitData & initData, From ef3c129812f0a06f723f98989e138d5140307297 Mon Sep 17 00:00:00 2001 From: yunhanw-google Date: Thu, 17 Nov 2022 16:02:07 -0800 Subject: [PATCH 34/36] Add support to compile java matter controller test example in host without android (#23630) * Add suppoprt to compile java matter controller test in host * Restyled by gn Co-authored-by: Restyled.io --- build/chip/java/config.gni | 26 ++++++ build/chip/java/rules.gni | 5 +- build/config/compiler/BUILD.gn | 4 + examples/build_overrides/build.gni | 1 - examples/java-matter-controller/BUILD.gn | 3 - scripts/build/build/targets.py | 1 + scripts/build/builders/host.py | 83 +++++++++++++++++++ .../build/testdata/all_targets_linux_x64.txt | 2 +- src/controller/data_model/BUILD.gn | 13 ++- src/controller/java/BUILD.gn | 29 ++++--- src/lib/support/BUILD.gn | 9 +- src/setup_payload/java/BUILD.gn | 17 ++-- 12 files changed, 162 insertions(+), 31 deletions(-) create mode 100644 build/chip/java/config.gni diff --git a/build/chip/java/config.gni b/build/chip/java/config.gni new file mode 100644 index 00000000000000..626d7b00e2a669 --- /dev/null +++ b/build/chip/java/config.gni @@ -0,0 +1,26 @@ +# Copyright (c) 2022 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +java_path = getenv("JAVA_PATH") +declare_args() { + java_matter_controller_dependent_paths = [] + build_java_matter_controller = false + if (java_path != "") { + java_matter_controller_dependent_paths += [ + "${java_path}/include/", + "${java_path}/include/linux/", + ] + build_java_matter_controller = true + } +} diff --git a/build/chip/java/rules.gni b/build/chip/java/rules.gni index c8518303f121dd..446bad701931f1 100644 --- a/build/chip/java/rules.gni +++ b/build/chip/java/rules.gni @@ -13,14 +13,15 @@ # limitations under the License. import("//build_overrides/chip.gni") - +import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/build/config/android/config.gni") javac_runner = "${chip_root}/build/chip/java/javac_runner.py" jar_runner = "${chip_root}/build/chip/java/jar_runner.py" write_build_config = "${chip_root}/build/chip/java/write_build_config.py" -assert(android_sdk_root != "", "android_sdk_root must be specified") +assert(android_sdk_root != "" || build_java_matter_controller, + "android_sdk_root or java_path must be specified") # Declare a java library target # diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index 938d2d7e405835..07040089ecc0e1 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn @@ -248,6 +248,10 @@ config("strict_warnings") { ] } + if (getenv("JAVA_PATH") != "") { + cflags -= [ "-Wshadow" ] + } + cflags_cc = [ "-Wnon-virtual-dtor" ] ldflags = [] diff --git a/examples/build_overrides/build.gni b/examples/build_overrides/build.gni index b092dc3c3d7013..323b150ed3399a 100644 --- a/examples/build_overrides/build.gni +++ b/examples/build_overrides/build.gni @@ -15,5 +15,4 @@ declare_args() { # Root directory for build files. build_root = "//third_party/connectedhomeip/build" - build_java_matter_controller = false } diff --git a/examples/java-matter-controller/BUILD.gn b/examples/java-matter-controller/BUILD.gn index 71a44aaa2688cf..154f75aba19227 100644 --- a/examples/java-matter-controller/BUILD.gn +++ b/examples/java-matter-controller/BUILD.gn @@ -15,12 +15,9 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("${build_root}/config/android_abi.gni") import("${chip_root}/build/chip/java/rules.gni") import("${chip_root}/build/chip/tools.gni") -build_java_matter_controller = true - java_binary("java-matter-controller") { output_name = "java-matter-controller" deps = [ diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index f88e8e7a3fdce1..4c8ed88280ba43 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -100,6 +100,7 @@ def BuildHostTarget(): TargetPart('all-clusters-minimal', app=HostApp.ALL_CLUSTERS), TargetPart('chip-tool', app=HostApp.CHIP_TOOL), TargetPart('thermostat', app=HostApp.THERMOSTAT), + TargetPart('java-matter-controller', app=HostApp.JAVA_MATTER_CONTROLLER), TargetPart('minmdns', app=HostApp.MIN_MDNS), TargetPart('light', app=HostApp.LIGHT), TargetPart('lock', app=HostApp.LOCK), diff --git a/scripts/build/builders/host.py b/scripts/build/builders/host.py index ce735ad7ecde16..258be0a13ec39e 100644 --- a/scripts/build/builders/host.py +++ b/scripts/build/builders/host.py @@ -58,6 +58,7 @@ class HostApp(Enum): TV_CASTING = auto() BRIDGE = auto() DYNAMIC_BRIDGE = auto() + JAVA_MATTER_CONTROLLER = auto() def ExamplePath(self): if self == HostApp.ALL_CLUSTERS: @@ -98,6 +99,8 @@ def ExamplePath(self): return 'bridge-app/linux' elif self == HostApp.DYNAMIC_BRIDGE: return 'dynamic-bridge-app/linux' + elif self == HostApp.JAVA_MATTER_CONTROLLER: + return 'java-matter-controller' else: raise Exception('Unknown app type: %r' % self) @@ -168,6 +171,9 @@ def OutputNames(self): elif self == HostApp.DYNAMIC_BRIDGE: yield 'dynamic-chip-bridge-app' yield 'dynamic-chip-bridge-app.map' + elif self == HostApp.JAVA_MATTER_CONTROLLER: + yield 'java-matter-controller' + yield 'java-matter-controller.map' else: raise Exception('Unknown app type: %r' % self) @@ -357,6 +363,41 @@ def GnBuildArgs(self): else: raise Exception('Unknown host board type: %r' % self) + def copyToExampleApp(self, jnilibs_dir, libs_dir, libs, jars): + self._Execute( + ["mkdir", "-p", jnilibs_dir], title="Prepare Native libs " + self.identifier + ) + + for libName in libs: + self._Execute( + [ + "cp", + os.path.join( + self.output_dir, "lib", "jni", self.board.AbiName(), libName + ), + os.path.join(jnilibs_dir, libName), + ] + ) + + for jarName in jars.keys(): + self._Execute( + [ + "cp", + os.path.join(self.output_dir, "lib", jars[jarName]), + os.path.join(libs_dir, jarName), + ] + ) + + def createJavaExecutable(self, java_program): + self._Execute( + [ + "chmod", + "+x", + "%s/bin/%s" % (self.output_dir, java_program), + ], + title="Make Java program executable", + ) + def GnBuildEnv(self): if self.board == HostBoard.ARM64: self.build_env['PKG_CONFIG_PATH'] = os.path.join( @@ -370,6 +411,22 @@ def SysRootPath(self, name): def generate(self): super(HostBuilder, self).generate() + if 'JAVA_PATH' in os.environ: + self._Execute( + ["third_party/java_deps/set_up_java_deps.sh"], + title="Setting up Java deps", + ) + + exampleName = self.app.ExamplePath() + if exampleName == "java-matter-controller": + self._Execute( + [ + "cp", + os.path.join(self.root, "Manifest.txt"), + self.output_dir, + ], + title="Copying Manifest.txt to " + self.output_dir, + ) if self.app == HostApp.TESTS and self.use_coverage: self.coverage_dir = os.path.join(self.output_dir, 'coverage') @@ -385,6 +442,32 @@ def PreBuildCommand(self): '--exclude', os.path.join(self.chip_dir, 'third_party/*'), '--exclude', '/usr/include/*', '--output-file', os.path.join(self.coverage_dir, 'lcov_base.info')], title="Initial coverage baseline") + if self.app.exampleName == "java-matter-controller" and 'JAVA_PATH' in os.environ: + jnilibs_dir = os.path.join( + self.root, + "examples/", + self.app.ExampleName(), + "app/libs/jniLibs", + self.board.AbiName(), + ) + + libs_dir = os.path.join( + self.root, "examples/", self.app.ExampleName(), "app/libs" + ) + + libs = [ + "libSetupPayloadParser.so", + "libCHIPController.so", + "libc++_shared.so", + ] + + jars = { + "CHIPController.jar": "third_party/connectedhomeip/src/controller/java/CHIPController.jar", + "SetupPayloadParser.jar": "third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar", + } + + self.copyToExampleApp(jnilibs_dir, libs_dir, libs, jars) + self.createJavaExecutable("java-matter-controller") def PostBuildCommand(self): if self.app == HostApp.TESTS and self.use_coverage: diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt index de7b3618c23309..f893b282aad80c 100644 --- a/scripts/build/testdata/all_targets_linux_x64.txt +++ b/scripts/build/testdata/all_targets_linux_x64.txt @@ -7,7 +7,7 @@ efr32-{brd4161a,brd4187c,brd4163a,brd4164a,brd4166a,brd4170a,brd4186a,brd4187a,b esp32-{m5stack,c3devkit,devkitc,qemu}-{all-clusters,all-clusters-minimal,ota-requestor,ota-requestor,shell,light,lock,bridge,temperature-measurement,ota-requestor,tests}[-rpc][-ipv6only] genio-lighting-app linux-fake-tests[-mbedtls][-boringssl][-asan][-tsan][-libfuzzer][-coverage][-dmalloc][-clang] -linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,thermostat,minmdns,light,lock,shell,ota-provider,ota-requestor,python-bindings,tv-app,tv-casting-app,bridge,dynamic-bridge,tests,chip-cert,address-resolve-tool}[-nodeps][-minmdns-verbose][-libnl][-same-event-loop][-no-interactive][-ipv6only][-no-ble][-no-wifi][-no-thread][-mbedtls][-boringssl][-asan][-tsan][-libfuzzer][-coverage][-dmalloc][-clang][-test][-rpc] +linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,thermostat,java-matter-controller,minmdns,light,lock,shell,ota-provider,ota-requestor,python-bindings,tv-app,tv-casting-app,bridge,dynamic-bridge,tests,chip-cert,address-resolve-tool}[-nodeps][-minmdns-verbose][-libnl][-same-event-loop][-no-interactive][-ipv6only][-no-ble][-no-wifi][-no-thread][-mbedtls][-boringssl][-asan][-tsan][-libfuzzer][-coverage][-dmalloc][-clang][-test][-rpc] linux-x64-efr32-test-runner[-clang] imx-{chip-tool,lighting-app,thermostat,all-clusters-app,all-clusters-minimal-app,ota-provider-app}[-release] infineon-psoc6-{lock,light,all-clusters,all-clusters-minimal}[-ota][-updateimage] diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn index 2596b11333a7fa..011669db09524a 100644 --- a/src/controller/data_model/BUILD.gn +++ b/src/controller/data_model/BUILD.gn @@ -18,6 +18,7 @@ import("//build_overrides/pigweed.gni") import("$dir_pw_build/python.gni") import("${chip_root}/build/chip/chip_codegen.gni") +import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/src/app/chip_data_model.gni") chip_data_model("data_model") { @@ -29,7 +30,7 @@ chip_data_model("data_model") { allow_circular_includes_from = [ "${chip_root}/src/controller" ] } -if (current_os == "android") { +if (current_os == "android" || build_java_matter_controller) { chip_codegen("java-jni-generate") { input = "controller-clusters.matter" generator = "java" @@ -170,15 +171,21 @@ if (current_os == "android") { source_set("java-jni-sources") { sources = get_target_outputs(":java-jni-generate") - public_configs = [ "${chip_root}/src:includes" ] + public_configs = [ "${chip_root}/src:includes" ] deps = [ ":data_model", ":java-jni-generate", "${chip_root}/src/inet", "${chip_root}/src/lib", "${chip_root}/src/platform", - "${chip_root}/src/platform/android", ] + + if (build_java_matter_controller) { + include_dirs = java_matter_controller_dependent_paths + deps += [ "${chip_root}/src/platform/Linux" ] + } else { + deps += [ "${chip_root}/src/platform/android" ] + } } } diff --git a/src/controller/java/BUILD.gn b/src/controller/java/BUILD.gn index 76cd24cca0e7f8..3a2d40492f62fa 100644 --- a/src/controller/java/BUILD.gn +++ b/src/controller/java/BUILD.gn @@ -14,13 +14,11 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") -import("${build_root}/config/android_abi.gni") +import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/build/chip/java/rules.gni") -if (defined(build_java_matter_controller)) { - build_java_matter_controller = build_java_matter_controller -} else { - build_java_matter_controller = false +if (!build_java_matter_controller) { + import("${build_root}/config/android_abi.gni") } shared_library("jni") { @@ -60,12 +58,24 @@ shared_library("jni") { "${chip_root}/src/lib", "${chip_root}/src/lib/support/jsontlv", "${chip_root}/src/platform", - "${chip_root}/src/platform/android", ] public_configs = [ "${chip_root}/src:includes" ] - output_dir = "${root_out_dir}/lib/jni/${android_abi}" + if (build_java_matter_controller) { + defines = [ "JAVA_MATTER_CONTROLLER_TEST" ] + include_dirs = java_matter_controller_dependent_paths + + deps += [ "${chip_root}/src/platform/Linux" ] + + cflags = [ "-Wno-unknown-pragmas" ] + + output_dir = "${root_out_dir}/lib/jni" + } else { + deps += [ "${chip_root}/src/platform/android" ] + + output_dir = "${root_out_dir}/lib/jni/${android_abi}" + } ldflags = [ "-Wl,--gc-sections" ] } @@ -75,10 +85,7 @@ android_library("java") { deps = [ "${chip_root}/third_party/java_deps:annotation" ] - data_deps = [ - ":jni", - "${chip_root}/build/chip/java:shared_cpplib", - ] + data_deps = [ ":jni" ] sources = [ "src/chip/clusterinfo/ClusterCommandCallback.java", diff --git a/src/lib/support/BUILD.gn b/src/lib/support/BUILD.gn index 38903219b75ab1..2f86189862e683 100644 --- a/src/lib/support/BUILD.gn +++ b/src/lib/support/BUILD.gn @@ -20,6 +20,7 @@ import("//build_overrides/nlio.gni") import("//build_overrides/nlunit_test.gni") import("${chip_root}/build/chip/chip_version.gni") +import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/build/chip/tests.gni") import("${chip_root}/src/lib/core/core.gni") @@ -145,8 +146,12 @@ static_library("support") { "verhoeff/Verhoeff36.cpp", ] - # added JNI helper on android - if (current_os == "android") { + if (current_os == "android" || build_java_matter_controller) { + if (build_java_matter_controller) { + include_dirs = java_matter_controller_dependent_paths + } + + # added JNI helper on android sources += [ "CHIPJNIError.h", "JniReferences.cpp", diff --git a/src/setup_payload/java/BUILD.gn b/src/setup_payload/java/BUILD.gn index df632864bb2f88..083cd6db55509f 100644 --- a/src/setup_payload/java/BUILD.gn +++ b/src/setup_payload/java/BUILD.gn @@ -14,18 +14,21 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") - -import("${build_root}/config/android_abi.gni") +import("${chip_root}/build/chip/java/config.gni") import("${chip_root}/build/chip/java/rules.gni") -if (defined(build_java_matter_controller)) { - build_java_matter_controller = build_java_matter_controller -} else { - build_java_matter_controller = false +if (!build_java_matter_controller) { + import("${build_root}/config/android_abi.gni") } shared_library("jni") { output_name = "libSetupPayloadParser" + if (build_java_matter_controller) { + include_dirs = java_matter_controller_dependent_paths + output_dir = "${root_out_dir}/lib/jni" + } else { + output_dir = "${root_out_dir}/lib/jni/${android_abi}" + } sources = [ "SetupPayloadParser-JNI.cpp" ] @@ -33,8 +36,6 @@ shared_library("jni") { "${chip_root}/src/lib", "${chip_root}/src/setup_payload", ] - - output_dir = "${root_out_dir}/lib/jni/${android_abi}" } android_library("java") { From fe6c120e3fc813369df64075ca53880477a068f2 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Thu, 17 Nov 2022 19:06:03 -0500 Subject: [PATCH 35/36] [Darwin tests] Fix testAnySharedRemoteController and testReadClusterStateCacheFailure (#23663) This is a re-landing of PR #22838. * [Darwin Tests] Fix testAnySharedRemoteController * [Darwin Tests] Fix testReadClusterStateCacheFailure Co-authored-by: Vivien Nicolas --- .../CHIP/MTRDeviceControllerOverXPC.m | 13 +- .../MTRDeviceControllerOverXPC_Internal.h | 3 +- src/darwin/Framework/CHIP/MTRDeviceOverXPC.m | 451 ++++++++---------- .../Framework/CHIPTests/MTRXPCProtocolTests.m | 3 +- 4 files changed, 209 insertions(+), 261 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC.m b/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC.m index f8f2e1827185e6..929e4792535baf 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC.m +++ b/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC.m @@ -158,7 +158,8 @@ - (BOOL)getBaseDevice:(uint64_t)deviceID // under here if we don't have a controller id aleady, so make sure we do // that. [self fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { + completion:^(id _Nullable controllerID, MTRDeviceControllerXPCProxyHandle * _Nullable handle, + NSError * _Nullable error) { if (error != nil) { completionHandler(nil, error); return; @@ -172,6 +173,9 @@ - (BOOL)getBaseDevice:(uint64_t)deviceID - (void)fetchControllerIdWithQueue:(dispatch_queue_t)queue completion:(MTRFetchControllerIDCompletion)completion { + // Capture the proxy handle so that it won't be released prior to block call. + __block MTRDeviceControllerXPCProxyHandle * handleRetainer = nil; + dispatch_async(_workQueue, ^{ dispatch_group_t group = dispatch_group_create(); if (!self.controllerID) { @@ -184,10 +188,9 @@ - (void)fetchControllerIdWithQueue:(dispatch_queue_t)queue completion:(MTRFetchC MTR_LOG_ERROR("Failed to fetch any shared remote controller"); } else { self.controllerID = controller; + handleRetainer = handle; } dispatch_group_leave(group); - __auto_type handleRetainer = handle; - (void) handleRetainer; }]; } else { MTR_LOG_ERROR("XPC disconnected while retrieving any shared remote controller"); @@ -197,9 +200,9 @@ - (void)fetchControllerIdWithQueue:(dispatch_queue_t)queue completion:(MTRFetchC } dispatch_group_notify(group, queue, ^{ if (self.controllerID) { - completion(self.controllerID, nil); + completion(self.controllerID, handleRetainer, nil); } else { - completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); + completion(nil, nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); } }); }); diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC_Internal.h b/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC_Internal.h index d772dab879f077..ccbc2f29168450 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC_Internal.h +++ b/src/darwin/Framework/CHIP/MTRDeviceControllerOverXPC_Internal.h @@ -20,7 +20,8 @@ NS_ASSUME_NONNULL_BEGIN -typedef void (^MTRFetchControllerIDCompletion)(id _Nullable controllerID, NSError * _Nullable error); +typedef void (^MTRFetchControllerIDCompletion)( + id _Nullable controllerID, MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error); @interface MTRDeviceControllerOverXPC () diff --git a/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m b/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m index a780929f79e471..a746d0aabe4c0a 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m +++ b/src/darwin/Framework/CHIP/MTRDeviceOverXPC.m @@ -27,6 +27,8 @@ NS_ASSUME_NONNULL_BEGIN +typedef void (^MTRFetchProxyHandleCompletion)(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error); + @interface MTRDeviceOverXPC () @property (nonatomic, strong, readonly, nullable) id controllerID; @@ -34,6 +36,8 @@ @interface MTRDeviceOverXPC () @property (nonatomic, readonly) NSNumber * nodeID; @property (nonatomic, strong, readonly) MTRDeviceControllerXPCConnection * xpcConnection; +- (void)fetchProxyHandleWithQueue:(dispatch_queue_t)queue completion:(MTRFetchProxyHandleCompletion)completion; + @end @implementation MTRDeviceOverXPC @@ -60,54 +64,37 @@ - (void)subscribeWithQueue:(dispatch_queue_t)queue { MTR_LOG_DEBUG("Subscribing all attributes... Note that attributeReportHandler, eventReportHandler, and resubscriptionScheduled " "are not supported."); - __auto_type workBlock = ^{ + + __auto_type workBlock = ^(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + if (error != nil) { + errorHandler(error); + return; + } + if (clusterStateCacheContainer) { [clusterStateCacheContainer setXPCConnection:self->_xpcConnection controllerID:self.controllerID deviceID:self.nodeID]; } - [self->_xpcConnection getProxyHandleWithCompletion:^( - dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { - if (handle) { - [handle.proxy subscribeWithController:self.controllerID - nodeId:self.nodeID.unsignedLongLongValue - minInterval:params.minInterval - maxInterval:params.maxInterval - params:[MTRDeviceController encodeXPCSubscribeParams:params] - shouldCache:(clusterStateCacheContainer != nil) - completion:^(NSError * _Nullable error) { - dispatch_async(queue, ^{ - if (error) { - errorHandler(error); - } else { - subscriptionEstablishedHandler(); - } - }); - __auto_type handleRetainer = handle; - (void) handleRetainer; - }]; - } else { - MTR_LOG_ERROR("Failed to obtain XPC connection to write attribute"); - dispatch_async(queue, ^{ - errorHandler([NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); - }); - } - }]; - }; - if (self.controllerID != nil) { - workBlock(); - } else { - [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { - if (error != nil) { - // We're already running on the right queue. - errorHandler(error); - return; - } + [handle.proxy subscribeWithController:self.controllerID + nodeId:self.nodeID.unsignedLongLongValue + minInterval:params.minInterval + maxInterval:params.maxInterval + params:[MTRDeviceController encodeXPCSubscribeParams:params] + shouldCache:(clusterStateCacheContainer != nil) + completion:^(NSError * _Nullable error) { + dispatch_async(queue, ^{ + if (error) { + errorHandler(error); + } else { + subscriptionEstablishedHandler(); + } + }); + __auto_type handleRetainer = handle; + (void) handleRetainer; + }]; + }; - self->_controllerID = controllerID; - workBlock(); - }]; - } + [self fetchProxyHandleWithQueue:queue completion:workBlock]; } - (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID @@ -118,50 +105,32 @@ - (void)readAttributesWithEndpointID:(NSNumber * _Nullable)endpointID completion:(MTRDeviceResponseHandler)completion { MTR_LOG_DEBUG("Reading attribute ..."); - __auto_type workBlock = ^{ - [self->_xpcConnection getProxyHandleWithCompletion:^( - dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { - if (handle) { - [handle.proxy readAttributeWithController:self.controllerID - nodeId:self.nodeID.unsignedLongLongValue - endpointId:endpointID - clusterId:clusterID - attributeId:attributeID - params:[MTRDeviceController encodeXPCReadParams:params] - completion:^(id _Nullable values, NSError * _Nullable error) { - dispatch_async(queue, ^{ - MTR_LOG_DEBUG("Attribute read"); - completion([MTRDeviceController decodeXPCResponseValues:values], error); - // The following captures the proxy handle in the closure so that the - // handle won't be released prior to block call. - __auto_type handleRetainer = handle; - (void) handleRetainer; - }); - }]; - } else { - dispatch_async(queue, ^{ - MTR_LOG_ERROR("Failed to obtain XPC connection to read attribute"); - completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); - }); - } - }]; - }; - if (self.controllerID != nil) { - workBlock(); - } else { - [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { - if (error != nil) { - // We're already running on the right queue. - completion(nil, error); - return; - } + __auto_type workBlock = ^(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + if (error != nil) { + completion(nil, error); + return; + } - self->_controllerID = controllerID; - workBlock(); - }]; - } + [handle.proxy readAttributeWithController:self.controllerID + nodeId:self.nodeID.unsignedLongLongValue + endpointId:endpointID + clusterId:clusterID + attributeId:attributeID + params:[MTRDeviceController encodeXPCReadParams:params] + completion:^(id _Nullable values, NSError * _Nullable error) { + dispatch_async(queue, ^{ + MTR_LOG_DEBUG("Attribute read"); + completion([MTRDeviceController decodeXPCResponseValues:values], error); + // The following captures the proxy handle in the closure so that the + // handle won't be released prior to block call. + __auto_type handleRetainer = handle; + (void) handleRetainer; + }); + }]; + }; + + [self fetchProxyHandleWithQueue:queue completion:workBlock]; } - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID @@ -173,51 +142,33 @@ - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID completion:(MTRDeviceResponseHandler)completion { MTR_LOG_DEBUG("Writing attribute ..."); - __auto_type workBlock = ^{ - [self->_xpcConnection getProxyHandleWithCompletion:^( - dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { - if (handle) { - [handle.proxy writeAttributeWithController:self.controllerID - nodeId:self.nodeID.unsignedLongLongValue - endpointId:endpointID - clusterId:clusterID - attributeId:attributeID - value:value - timedWriteTimeout:timeoutMs - completion:^(id _Nullable values, NSError * _Nullable error) { - dispatch_async(queue, ^{ - MTR_LOG_DEBUG("Attribute written"); - completion([MTRDeviceController decodeXPCResponseValues:values], error); - // The following captures the proxy handle in the closure so that the - // handle won't be released prior to block call. - __auto_type handleRetainer = handle; - (void) handleRetainer; - }); - }]; - } else { - dispatch_async(queue, ^{ - MTR_LOG_ERROR("Failed to obtain XPC connection to write attribute"); - completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); - }); - } - }]; - }; - if (self.controllerID != nil) { - workBlock(); - } else { - [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { - if (error != nil) { - // We're already running on the right queue. - completion(nil, error); - return; - } + __auto_type workBlock = ^(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + if (error != nil) { + completion(nil, error); + return; + } - self->_controllerID = controllerID; - workBlock(); - }]; - } + [handle.proxy writeAttributeWithController:self.controllerID + nodeId:self.nodeID.unsignedLongLongValue + endpointId:endpointID + clusterId:clusterID + attributeId:attributeID + value:value + timedWriteTimeout:timeoutMs + completion:^(id _Nullable values, NSError * _Nullable error) { + dispatch_async(queue, ^{ + MTR_LOG_DEBUG("Attribute written"); + completion([MTRDeviceController decodeXPCResponseValues:values], error); + // The following captures the proxy handle in the closure so that the + // handle won't be released prior to block call. + __auto_type handleRetainer = handle; + (void) handleRetainer; + }); + }]; + }; + + [self fetchProxyHandleWithQueue:queue completion:workBlock]; } - (void)invokeCommandWithEndpointID:(NSNumber *)endpointID @@ -229,51 +180,33 @@ - (void)invokeCommandWithEndpointID:(NSNumber *)endpointID completion:(MTRDeviceResponseHandler)completion { MTR_LOG_DEBUG("Invoking command ..."); - __auto_type workBlock = ^{ - [self->_xpcConnection getProxyHandleWithCompletion:^( - dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { - if (handle) { - [handle.proxy invokeCommandWithController:self.controllerID - nodeId:self.nodeID.unsignedLongLongValue - endpointId:endpointID - clusterId:clusterID - commandId:commandID - fields:commandFields - timedInvokeTimeout:timeoutMs - completion:^(id _Nullable values, NSError * _Nullable error) { - dispatch_async(queue, ^{ - MTR_LOG_DEBUG("Command invoked"); - completion([MTRDeviceController decodeXPCResponseValues:values], error); - // The following captures the proxy handle in the closure so that the - // handle won't be released prior to block call. - __auto_type handleRetainer = handle; - (void) handleRetainer; - }); - }]; - } else { - dispatch_async(queue, ^{ - MTR_LOG_ERROR("Failed to obtain XPC connection to invoke command"); - completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); - }); - } - }]; - }; - if (self.controllerID != nil) { - workBlock(); - } else { - [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { - if (error != nil) { - // We're already running on the right queue. - completion(nil, error); - return; - } + __auto_type workBlock = ^(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + if (error != nil) { + completion(nil, error); + return; + } - self->_controllerID = controllerID; - workBlock(); - }]; - } + [handle.proxy invokeCommandWithController:self.controllerID + nodeId:self.nodeID.unsignedLongLongValue + endpointId:endpointID + clusterId:clusterID + commandId:commandID + fields:commandFields + timedInvokeTimeout:timeoutMs + completion:^(id _Nullable values, NSError * _Nullable error) { + dispatch_async(queue, ^{ + MTR_LOG_DEBUG("Command invoked"); + completion([MTRDeviceController decodeXPCResponseValues:values], error); + // The following captures the proxy handle in the closure so that the + // handle won't be released prior to block call. + __auto_type handleRetainer = handle; + (void) handleRetainer; + }); + }]; + }; + + [self fetchProxyHandleWithQueue:queue completion:workBlock]; } - (void)subscribeToAttributesWithEndpointID:(NSNumber * _Nullable)endpointID @@ -285,92 +218,72 @@ - (void)subscribeToAttributesWithEndpointID:(NSNumber * _Nullable)endpointID subscriptionEstablished:(void (^_Nullable)(void))subscriptionEstablishedHandler { MTR_LOG_DEBUG("Subscribing attribute ..."); - __auto_type workBlock = ^{ - [self->_xpcConnection getProxyHandleWithCompletion:^( - dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { - if (handle) { - MTR_LOG_DEBUG("Setup report handler"); - [self.xpcConnection - registerReportHandlerWithController:self.controllerID - nodeID:self.nodeID - handler:^(id _Nullable values, NSError * _Nullable error) { - if (values && ![values isKindOfClass:[NSArray class]]) { - MTR_LOG_ERROR("Unsupported report format"); - return; - } - if (!values) { - MTR_LOG_DEBUG("Error report received"); - dispatch_async(queue, ^{ - reportHandler(values, error); - }); - return; - } - __auto_type decodedValues = - [MTRDeviceController decodeXPCResponseValues:values]; - NSMutableArray *> * filteredValues = - [NSMutableArray arrayWithCapacity:[decodedValues count]]; - for (NSDictionary * decodedValue in decodedValues) { - MTRAttributePath * attributePath = decodedValue[MTRAttributePathKey]; - if ((endpointID == nil || - [attributePath.endpoint isEqualToNumber:endpointID]) - && (clusterID == nil || - [attributePath.cluster isEqualToNumber:clusterID]) - && (attributeID == nil || - [attributePath.attribute isEqualToNumber:attributeID])) { - [filteredValues addObject:decodedValue]; - } - } - if ([filteredValues count] > 0) { - MTR_LOG_DEBUG("Report received"); - dispatch_async(queue, ^{ - reportHandler(filteredValues, error); - }); - } - }]; - - [handle.proxy subscribeAttributeWithController:self.controllerID - nodeId:self.nodeID.unsignedLongLongValue - endpointId:endpointID - clusterId:clusterID - attributeId:attributeID - minInterval:params.minInterval - maxInterval:params.maxInterval - params:[MTRDeviceController encodeXPCSubscribeParams:params] - establishedHandler:^{ + + __auto_type workBlock = ^(MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + MTR_LOG_DEBUG("Setup report handler"); + + if (error != nil) { + subscriptionEstablishedHandler(); + reportHandler(nil, error); + return; + } + + [self.xpcConnection + registerReportHandlerWithController:self.controllerID + nodeID:self.nodeID + handler:^(id _Nullable values, NSError * _Nullable error) { + if (values && ![values isKindOfClass:[NSArray class]]) { + MTR_LOG_ERROR("Unsupported report format"); + return; + } + if (!values) { + MTR_LOG_DEBUG("Error report received"); dispatch_async(queue, ^{ - MTR_LOG_DEBUG("Subscription established"); - subscriptionEstablishedHandler(); - // The following captures the proxy handle in the closure so that the handle - // won't be released prior to block call. - __auto_type handleRetainer = handle; - (void) handleRetainer; + reportHandler(values, error); }); - }]; - } else { - dispatch_async(queue, ^{ - MTR_LOG_ERROR("Failed to obtain XPC connection to subscribe to attribute"); - subscriptionEstablishedHandler(); - reportHandler(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); - }); - } - }]; - }; + return; + } + __auto_type decodedValues = [MTRDeviceController decodeXPCResponseValues:values]; + NSMutableArray *> * filteredValues = + [NSMutableArray arrayWithCapacity:[decodedValues count]]; + for (NSDictionary * decodedValue in decodedValues) { + MTRAttributePath * attributePath = decodedValue[MTRAttributePathKey]; + if ((endpointID == nil || [attributePath.endpoint isEqualToNumber:endpointID]) + && (clusterID == nil || [attributePath.cluster isEqualToNumber:clusterID]) + && (attributeID == nil || + [attributePath.attribute isEqualToNumber:attributeID])) { + [filteredValues addObject:decodedValue]; + } + } + if ([filteredValues count] > 0) { + MTR_LOG_DEBUG("Report received"); + dispatch_async(queue, ^{ + reportHandler(filteredValues, error); + }); + } + }]; - if (self.controllerID != nil) { - workBlock(); - } else { - [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { - if (error != nil) { - // We're already running on the right queue. - reportHandler(nil, error); - return; - } + [handle.proxy subscribeAttributeWithController:self.controllerID + nodeId:self.nodeID.unsignedLongLongValue + endpointId:endpointID + clusterId:clusterID + attributeId:attributeID + minInterval:params.minInterval + maxInterval:params.maxInterval + params:[MTRDeviceController encodeXPCSubscribeParams:params] + establishedHandler:^{ + dispatch_async(queue, ^{ + MTR_LOG_DEBUG("Subscription established"); + subscriptionEstablishedHandler(); + // The following captures the proxy handle in the closure so that the handle + // won't be released prior to block call. + __auto_type handleRetainer = handle; + (void) handleRetainer; + }); + }]; + }; - self->_controllerID = controllerID; - workBlock(); - }]; - } + [self fetchProxyHandleWithQueue:queue completion:workBlock]; } - (void)deregisterReportHandlersWithQueue:(dispatch_queue_t)queue completion:(void (^)(void))completion @@ -388,7 +301,8 @@ - (void)deregisterReportHandlersWithQueue:(dispatch_queue_t)queue completion:(vo workBlock(); } else { [self.controller fetchControllerIdWithQueue:queue - completion:^(id _Nullable controllerID, NSError * _Nullable error) { + completion:^(id _Nullable controllerID, + MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { if (error != nil) { // We're already running on the right queue. completion(); @@ -413,6 +327,35 @@ - (void)openCommissioningWindowWithSetupPasscode:(NSNumber *)setupPasscode }); } +- (void)fetchProxyHandleWithQueue:(dispatch_queue_t)queue completion:(MTRFetchProxyHandleCompletion)completion +{ + if (self.controllerID != nil) { + [self->_xpcConnection getProxyHandleWithCompletion:^( + dispatch_queue_t _Nonnull proxyQueue, MTRDeviceControllerXPCProxyHandle * _Nullable handle) { + dispatch_async(queue, ^{ + if (handle == nil) { + MTR_LOG_ERROR("Failed to obtain XPC connection"); + completion(nil, [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil]); + } else { + completion(handle, nil); + } + }); + }]; + } else { + [self.controller fetchControllerIdWithQueue:queue + completion:^(id _Nullable controllerID, + MTRDeviceControllerXPCProxyHandle * _Nullable handle, NSError * _Nullable error) { + // We're already running on the right queue. + if (error != nil) { + completion(nil, error); + } else { + self->_controllerID = controllerID; + completion(handle, nil); + } + }]; + } +} + @end NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m b/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m index b358f7c801cc21..aac3da2ce493db 100644 --- a/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m +++ b/src/darwin/Framework/CHIPTests/MTRXPCProtocolTests.m @@ -2349,6 +2349,7 @@ - (void)testReadClusterStateCacheFailure completion(nil, myError); }; + _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"]; [clusterStateCacheContainer subscribeWithDeviceController:_remoteDeviceController deviceID:@(myNodeId) params:nil @@ -2358,7 +2359,7 @@ - (void)testReadClusterStateCacheFailure XCTAssertNil(error); [subscribeExpectation fulfill]; }]; - [self waitForExpectations:@[ subscribeExpectation ] timeout:kTimeoutInSeconds]; + [self waitForExpectations:@[ subscribeExpectation, _xpcDisconnectExpectation ] timeout:kTimeoutInSeconds]; _xpcDisconnectExpectation = [self expectationWithDescription:@"XPC Disconnected"]; [clusterStateCacheContainer From 6978de710f7632814da87fafcb9039a4439ea5fd Mon Sep 17 00:00:00 2001 From: lpbeliveau-silabs <112982107+lpbeliveau-silabs@users.noreply.github.com> Date: Thu, 17 Nov 2022 21:26:01 -0500 Subject: [PATCH 36/36] bugfix/ble_defines_mem_monitoring (#23531) * Added defines for BLE tasks to allow heap monitoring to get their task handles * Adjustements to keep previous task names size unless using heap monitoring and to have significative names when using heap monitoring * Restyled by clang-format Co-authored-by: Restyled.io Co-authored-by: Andrei Litvin --- examples/lighting-app/efr32/BUILD.gn | 4 ++++ examples/platform/efr32/FreeRTOSConfig.h | 6 ++++++ examples/platform/efr32/MemMonitoring.cpp | 3 +++ src/platform/EFR32/CHIPDevicePlatformConfig.h | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index 1ca1b41e2ce62b..616a66bf05a029 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -148,6 +148,10 @@ efr32_sdk("sdk") { "OTA_PERIODIC_TIMEOUT=${OTA_periodic_query_timeout}", ] + if (enable_heap_monitoring) { + defines += [ "HEAP_MONITORING" ] + } + if (chip_enable_pw_rpc) { defines += [ "HAL_VCOM_ENABLE=1", diff --git a/examples/platform/efr32/FreeRTOSConfig.h b/examples/platform/efr32/FreeRTOSConfig.h index f42179230d6bb0..35d6e37bf5c813 100644 --- a/examples/platform/efr32/FreeRTOSConfig.h +++ b/examples/platform/efr32/FreeRTOSConfig.h @@ -181,7 +181,13 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ #define configUSE_TICKLESS_IDLE_SIMPLE_DEBUG (1) /* See into vPortSuppressTicksAndSleep source code for explanation */ #define configMAX_PRIORITIES (56) #define configMINIMAL_STACK_SIZE (320) /* Number of words to use for Idle and Timer stacks */ + +#ifdef HEAP_MONITORING +#define configMAX_TASK_NAME_LEN (24) +#else #define configMAX_TASK_NAME_LEN (10) +#endif // HEAP_MONITORING + #define configUSE_16_BIT_TICKS (0) #define configIDLE_SHOULD_YIELD (1) #define configUSE_MUTEXES (1) diff --git a/examples/platform/efr32/MemMonitoring.cpp b/examples/platform/efr32/MemMonitoring.cpp index 36a9b44a19225d..08de06eaed18f9 100644 --- a/examples/platform/efr32/MemMonitoring.cpp +++ b/examples/platform/efr32/MemMonitoring.cpp @@ -22,6 +22,9 @@ #include "FreeRTOS.h" #include +#define BLE_STACK_TASK_NAME "Bluetooth stack" +#define BLE_LINK_TASK_NAME "Bluetooth linklayer" + static StackType_t monitoringStack[MONITORING_STACK_SIZE_byte / sizeof(StackType_t)]; static StaticTask_t monitoringTaskStruct; diff --git a/src/platform/EFR32/CHIPDevicePlatformConfig.h b/src/platform/EFR32/CHIPDevicePlatformConfig.h index 47c97eab4de37e..1843088c1e23d8 100644 --- a/src/platform/EFR32/CHIPDevicePlatformConfig.h +++ b/src/platform/EFR32/CHIPDevicePlatformConfig.h @@ -94,7 +94,7 @@ #define CHIP_DEVICE_CONFIG_ENABLE_THREAD_TELEMETRY_FULL 0 #ifndef CHIP_DEVICE_CONFIG_BLE_APP_TASK_NAME -#define CHIP_DEVICE_CONFIG_BLE_APP_TASK_NAME "BLE_EVENT" +#define CHIP_DEVICE_CONFIG_BLE_APP_TASK_NAME "Bluetooth event handler" #endif // CHIP_DEVICE_CONFIG_BLE_APP_TASK_NAME #define CHIP_DEVICE_CONFIG_MAX_EVENT_QUEUE_SIZE 25